tooltips position more accurately in X in xinerama
authorzmike <michael.blumenkrantz@gmail.com>
Tue, 22 Apr 2014 13:29:49 +0000 (09:29 -0400)
committerzmike <michael.blumenkrantz@gmail.com>
Tue, 22 Apr 2014 13:31:41 +0000 (09:31 -0400)
elm_win_screen_size_get() is broken for this use case since the tooltip actually needs the full xinerama screen geometry, which is the geometry of the root window and NOT the current screen

@fix

src/lib/els_tooltip.c

index bfbb40c..bc24676 100644 (file)
@@ -393,7 +393,16 @@ _elm_tooltip_reconfigure(Elm_Tooltip *tt)
    TTDBG("TTSIZE:  tw=%d,th=%d,ominw=%d,ominh=%d\n", tw, th, ominw, ominh);
 
    if (tt->tt_win)
-     elm_win_screen_size_get(elm_widget_top_get(tt->owner), NULL, NULL, &cw, &ch);
+     {
+#ifdef HAVE_ELEMENTARY_X
+        Evas_Object *win = elm_widget_top_get(tt->owner);
+        Ecore_X_Window xwin = elm_win_xwindow_get(win);
+        if (xwin)
+          ecore_x_window_size_get(ecore_x_window_root_get(xwin), &cw, &ch);
+#endif
+        if (!cw)
+          elm_win_screen_size_get(elm_widget_top_get(tt->owner), NULL, NULL, &cw, &ch);
+     }
    if (!cw)
      evas_output_size_get(tt->tt_evas ?: tt->evas, &cw, &ch);
    TTDBG("SCREEN:  cw=%d,ch=%d\n", cw, ch);