Updating branch refs/heads/xfce-4.8 to 1c22fd97ba9f72e7efb7963c6351fe0226b033c6 (commit) from 2f0852c8791ab3bd386fbd6f000428de6ceabf20 (commit)
commit 1c22fd97ba9f72e7efb7963c6351fe0226b033c6 Author: Nick Schermer <n...@xfce.org> Date: Sat May 28 17:45:56 2011 +0200 Fix menu positioning for moved external plugins (bug #7529). For some reason the window position cache in gdk is not updated so work around this. (cherry picked from commit 176a68b8f347f84e4dc8fdf7f8e81d1e8e6034b0) libxfce4panel/xfce-panel-plugin.c | 16 +++++++++++++++- 1 files changed, 15 insertions(+), 1 deletions(-) diff --git a/libxfce4panel/xfce-panel-plugin.c b/libxfce4panel/xfce-panel-plugin.c index 360ed7d..c85e1ab 100644 --- a/libxfce4panel/xfce-panel-plugin.c +++ b/libxfce4panel/xfce-panel-plugin.c @@ -2055,6 +2055,8 @@ xfce_panel_plugin_position_widget (XfcePanelPlugin *plugin, GdkRectangle monitor; gint monitor_num; GTimeVal now_t, end_t; + GtkWidget *toplevel, *plug; + gint px, py; g_return_if_fail (XFCE_IS_PANEL_PLUGIN (plugin)); g_return_if_fail (GTK_IS_WIDGET (menu_widget)); @@ -2077,7 +2079,19 @@ xfce_panel_plugin_position_widget (XfcePanelPlugin *plugin, gtk_widget_size_request (menu_widget, &requisition); /* get the root position of the attach widget */ - gdk_window_get_position (GDK_WINDOW (attach_widget->window), x, y); + toplevel = gtk_widget_get_toplevel (attach_widget); + gtk_window_get_position (GTK_WINDOW (toplevel), x, y); + + /* correct position for external plugins */ + plug = gtk_widget_get_ancestor (attach_widget, GTK_TYPE_PLUG); + if (plug != NULL) + { + gdk_window_get_geometry (gtk_plug_get_socket_window (GTK_PLUG (plug)), + &px, &py, NULL, NULL, NULL); + + *x += px; + *y += py; + } /* if the panel is hidden (auto hide is enabled) and we requested a * panel lock, wait for gtk to position the panel before we actually _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits