Updating branch refs/heads/0.6.x to dfca92e3613b7d672ca8d6c6b18ebee73103c83e (commit) from 15016d8b2b5ec0910f6771d7badfdfa06b1150cf (commit)
commit dfca92e3613b7d672ca8d6c6b18ebee73103c83e Author: Andre Ellguth <an...@ellguth.com> Date: Thu Apr 4 21:20:50 2013 +0200 Added a function to get the current display on which is wmdock located. panel-plugin/catchwindow.c | 12 ++++++------ panel-plugin/dockapp.c | 2 +- panel-plugin/misc.c | 22 ++++++++++++++++++---- panel-plugin/misc.h | 1 + panel-plugin/wmdock.c | 2 +- 5 files changed, 27 insertions(+), 12 deletions(-) diff --git a/panel-plugin/catchwindow.c b/panel-plugin/catchwindow.c index 1266b66..2f73557 100644 --- a/panel-plugin/catchwindow.c +++ b/panel-plugin/catchwindow.c @@ -55,7 +55,7 @@ static gchar *wmdock_get_dockapp_cmd(WnckWindow *w) FILE *procfp = NULL; char buf[BUF_MAX]; - XGetCommand(GDK_DISPLAY_XDISPLAY(gdk_display_get_default()), + XGetCommand(GDK_DISPLAY_XDISPLAY(get_current_gdkdisplay()), wnck_window_get_xid(w), &argv, &argc); if(argc > 0) { argv = (char **) realloc(argv, sizeof(char *) * (argc + 1)); @@ -112,7 +112,7 @@ void wmdock_window_open(WnckScreen *s, WnckWindow *w) gdk_error_trap_push(); gdk_flush(); - h = XGetWMHints(GDK_DISPLAY_XDISPLAY(gdk_display_get_default()), + h = XGetWMHints(GDK_DISPLAY_XDISPLAY(get_current_gdkdisplay()), wnck_window_get_xid(w)); if(!h) return; @@ -152,14 +152,14 @@ void wmdock_window_open(WnckScreen *s, WnckWindow *w) } if(h->initial_state == WithdrawnState && h->icon_window) { - XUnmapWindow(GDK_DISPLAY_XDISPLAY(gdk_display_get_default()), + XUnmapWindow(GDK_DISPLAY_XDISPLAY(get_current_gdkdisplay()), wnck_window_get_xid(w)); dapp->i =h->icon_window; } else { dapp->i = wnck_window_get_xid(w); } - if(!XGetWindowAttributes(GDK_DISPLAY_XDISPLAY(gdk_display_get_default()), + if(!XGetWindowAttributes(GDK_DISPLAY_XDISPLAY(get_current_gdkdisplay()), dapp->i, &attr)) { wi = DEFAULT_DOCKAPP_WIDTH; he = DEFAULT_DOCKAPP_HEIGHT; @@ -171,7 +171,7 @@ void wmdock_window_open(WnckScreen *s, WnckWindow *w) if(wi > DEFAULT_DOCKAPP_WIDTH || he > DEFAULT_DOCKAPP_HEIGHT) { /* It seems to be no dockapp, because the width or the height of the * window a greater than 64 pixels. */ - XMapWindow(GDK_DISPLAY_XDISPLAY(gdk_display_get_default()), + XMapWindow(GDK_DISPLAY_XDISPLAY(get_current_gdkdisplay()), wnck_window_get_xid(w)); gtk_widget_destroy(GTK_WIDGET(dapp->s)); g_free(cmd); @@ -198,7 +198,7 @@ void wmdock_window_open(WnckScreen *s, WnckWindow *w) } /* Cleanly unmap the original window. */ - XUnmapWindow(GDK_DISPLAY_XDISPLAY(gdk_display_get_default()), dapp->i); + XUnmapWindow(GDK_DISPLAY_XDISPLAY(get_current_gdkdisplay()), dapp->i); if(rcDapp == FALSE) { dapp->tile = wmdock_create_tile_from_socket(dapp); diff --git a/panel-plugin/dockapp.c b/panel-plugin/dockapp.c index f81560d..8f32ea5 100644 --- a/panel-plugin/dockapp.c +++ b/panel-plugin/dockapp.c @@ -248,7 +248,7 @@ gboolean wmdock_startup_dockapp(const gchar *cmd) void wmdock_destroy_dockapp(DockappNode *dapp) { debug("dockapp.c: Destroy dockapp %s", dapp->name); - XDestroyWindow(GDK_DISPLAY_XDISPLAY(gdk_display_get_default()), dapp->i); + XDestroyWindow(GDK_DISPLAY_XDISPLAY(get_current_gdkdisplay()), dapp->i); } diff --git a/panel-plugin/misc.c b/panel-plugin/misc.c index 5472a93..9d8ab89 100644 --- a/panel-plugin/misc.c +++ b/panel-plugin/misc.c @@ -65,7 +65,7 @@ void set_xsmp_support(WnckWindow *w) XTextProperty tp; static Atom _XA_SM_CLIENT_ID = None; - _XA_SM_CLIENT_ID = XInternAtom (GDK_DISPLAY_XDISPLAY(gdk_display_get_default()), "SM_CLIENT_ID", False); + _XA_SM_CLIENT_ID = XInternAtom (GDK_DISPLAY_XDISPLAY(get_current_gdkdisplay()), "SM_CLIENT_ID", False); tp.value = (unsigned char *) strdup("SM_CLIENT_ID"); @@ -73,7 +73,7 @@ void set_xsmp_support(WnckWindow *w) tp.format = 8; tp.nitems = 1; - XSetTextProperty(GDK_DISPLAY_XDISPLAY(gdk_display_get_default()), + XSetTextProperty(GDK_DISPLAY_XDISPLAY(get_current_gdkdisplay()), wnck_window_get_xid(w), &tp, _XA_SM_CLIENT_ID); @@ -145,7 +145,7 @@ gboolean has_dockapp_hint(WnckWindow *w) gdk_error_trap_push(); if (XGetWindowProperty( - GDK_DISPLAY_XDISPLAY(gdk_display_get_default()), + GDK_DISPLAY_XDISPLAY(get_current_gdkdisplay()), wnck_window_get_xid(w), XfceDockAppAtom, 0, 1, False, XA_CARDINAL, &atype, &afmt, &nitems, &naft, &dat) == Success) { if (nitems==1 && ((long int *) dat)[0]==1) { @@ -153,7 +153,7 @@ gboolean has_dockapp_hint(WnckWindow *w) } XFree(dat); } - XSync(GDK_DISPLAY_XDISPLAY(gdk_display_get_default()),False); + XSync(GDK_DISPLAY_XDISPLAY(get_current_gdkdisplay()),False); gdk_error_trap_pop(); @@ -162,6 +162,20 @@ gboolean has_dockapp_hint(WnckWindow *w) /** + * Returns the current GdkDisplay. + * + * @return current GdkDisplay + */ +GdkDisplay *get_current_gdkdisplay() +{ + if(!wmdock || !wmdock->plugin) + return gdk_display_get_default(); + + return gdk_window_get_display(gtk_widget_get_toplevel(GTK_WIDGET(wmdock->plugin))->window); +} + + +/** * Function which interacts with the wmdock icon. * * @param icon The wmdock icon widget. diff --git a/panel-plugin/misc.h b/panel-plugin/misc.h index 44c8fd6..5a3927e 100644 --- a/panel-plugin/misc.h +++ b/panel-plugin/misc.h @@ -24,6 +24,7 @@ /* Prototypes */ GdkPixbuf *get_icon_from_xpm_scaled(const char **, gint, gint); +GdkDisplay *get_current_gdkdisplay(); void set_xsmp_support(WnckWindow *); gboolean has_dockapp_hint(WnckWindow *); gboolean comp_dockapp_with_filterlist(const gchar *); diff --git a/panel-plugin/wmdock.c b/panel-plugin/wmdock.c index abdb2ab..033e1b2 100644 --- a/panel-plugin/wmdock.c +++ b/panel-plugin/wmdock.c @@ -159,7 +159,7 @@ static void wmdock_construct (XfcePanelPlugin *plugin) xfce_textdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8"); #endif /* HAVE_CONFIG_H */ - XfceDockAppAtom=XInternAtom(GDK_DISPLAY_XDISPLAY(gdk_display_get_default()), + XfceDockAppAtom=XInternAtom(GDK_DISPLAY_XDISPLAY(get_current_gdkdisplay()), "_XFCE4_DOCKAPP",False); wmdock = wmdock_plugin_new (plugin); _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits