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

Reply via email to