diff options
author | Javier Jardón <jjardon@gnome.org> | 2014-11-01 00:20:26 +0000 |
---|---|---|
committer | Javier Jardón <jjardon@gnome.org> | 2014-11-01 00:43:12 +0000 |
commit | 487c71d0706b6c5eac281b1c4b3919c66facbd44 (patch) | |
tree | 0124511b749699cf8f3821f67aec38afc64a212e /src/canberra-gtk.c | |
parent | c0620e432650e81062c1967cc669829dbd29b310 (diff) | |
download | libcanberra-487c71d0706b6c5eac281b1c4b3919c66facbd44.tar.gz |
patch to drop X runtime depsbaserock/jjardon/gnome
Diffstat (limited to 'src/canberra-gtk.c')
-rw-r--r-- | src/canberra-gtk.c | 128 |
1 files changed, 68 insertions, 60 deletions
diff --git a/src/canberra-gtk.c b/src/canberra-gtk.c index 08cb668..a41789b 100644 --- a/src/canberra-gtk.c +++ b/src/canberra-gtk.c @@ -26,7 +26,9 @@ #include <gtk/gtk.h> #include <gdk/gdk.h> +#ifdef GDK_WINDOWING_X11 #include <gdk/gdkx.h> +#endif #include <X11/Xatom.h> #include "canberra.h" @@ -177,6 +179,7 @@ static GtkWindow* get_toplevel(GtkWidget *w) { return GTK_WINDOW(w); } +#ifdef GDK_WINDOWING_X11 static gint window_get_desktop(GdkDisplay *d, GdkWindow *w) { Atom type_return; gint format_return; @@ -209,6 +212,7 @@ static gint window_get_desktop(GdkDisplay *d, GdkWindow *w) { return ret; } +#endif /** * ca_gtk_proplist_set_for_widget: @@ -257,88 +261,92 @@ int ca_gtk_proplist_set_for_widget(ca_proplist *p, GtkWidget *widget) { if ((ret = ca_proplist_sets(p, CA_PROP_WINDOW_ICON_NAME, t)) < 0) return ret; - if (gtk_widget_get_realized(GTK_WIDGET(w))) { - GdkWindow *dw = NULL; - GdkScreen *screen = NULL; - GdkDisplay *display = NULL; - gint x = -1, y = -1, width = -1, height = -1, screen_width = -1, screen_height = -1; - - if ((dw = gtk_widget_get_window(GTK_WIDGET(w)))) - if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_X11_XID, "%lu", (unsigned long) GDK_WINDOW_XID(dw))) < 0) - return ret; +#ifdef GDK_WINDOWING_X11 + if (GDK_IS_X11_DISPLAY (gtk_widget_get_display (GTK_WIDGET(w)))) { + if (gtk_widget_get_realized(GTK_WIDGET(w))) { + GdkWindow *dw = NULL; + GdkScreen *screen = NULL; + GdkDisplay *display = NULL; + gint x = -1, y = -1, width = -1, height = -1, screen_width = -1, screen_height = -1; - if ((display = gtk_widget_get_display(GTK_WIDGET(w)))) { - if ((t = gdk_display_get_name(display))) - if ((ret = ca_proplist_sets(p, CA_PROP_WINDOW_X11_DISPLAY, t)) < 0) + if ((dw = gtk_widget_get_window(GTK_WIDGET(w)))) + if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_X11_XID, "%lu", (unsigned long) GDK_WINDOW_XID(dw))) < 0) return ret; - if (dw) { - gint desktop = window_get_desktop(display, dw); - - if (desktop >= 0) - if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_DESKTOP, "%i", desktop)) < 0) + if ((display = gtk_widget_get_display(GTK_WIDGET(w)))) { + if ((t = gdk_display_get_name(display))) + if ((ret = ca_proplist_sets(p, CA_PROP_WINDOW_X11_DISPLAY, t)) < 0) return ret; - } - } - if ((screen = gtk_widget_get_screen(GTK_WIDGET(w)))) { + if (dw) { + gint desktop = window_get_desktop(display, dw); - if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_X11_SCREEN, "%i", gdk_screen_get_number(screen))) < 0) - return ret; + if (desktop >= 0) + if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_DESKTOP, "%i", desktop)) < 0) + return ret; + } + } + + if ((screen = gtk_widget_get_screen(GTK_WIDGET(w)))) { - if (dw) - if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_X11_MONITOR, "%i", gdk_screen_get_monitor_at_window(screen, dw))) < 0) + if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_X11_SCREEN, "%i", gdk_screen_get_number(screen))) < 0) return ret; - } - /* FIXME, this might cause a round trip */ + if (dw) + if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_X11_MONITOR, "%i", gdk_screen_get_monitor_at_window(screen, dw))) < 0) + return ret; + } - if (dw) { - gdk_window_get_origin(dw, &x, &y); + /* FIXME, this might cause a round trip */ - if (x >= 0) - if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_X, "%i", x)) < 0) - return ret; - if (y >= 0) - if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_Y, "%i", y)) < 0) - return ret; - } + if (dw) { + gdk_window_get_origin(dw, &x, &y); - gtk_window_get_size(w, &width, &height); + if (x >= 0) + if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_X, "%i", x)) < 0) + return ret; + if (y >= 0) + if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_Y, "%i", y)) < 0) + return ret; + } - if (width > 0) - if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_WIDTH, "%i", width)) < 0) - return ret; - if (height > 0) - if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_HEIGHT, "%i", height)) < 0) - return ret; + gtk_window_get_size(w, &width, &height); - if (x >= 0 && width > 0) { - screen_width = gdk_screen_get_width(gtk_widget_get_screen(GTK_WIDGET(w))); + if (width > 0) + if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_WIDTH, "%i", width)) < 0) + return ret; + if (height > 0) + if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_HEIGHT, "%i", height)) < 0) + return ret; - x += width/2; - x = CA_CLAMP(x, 0, screen_width-1); + if (x >= 0 && width > 0) { + screen_width = gdk_screen_get_width(gtk_widget_get_screen(GTK_WIDGET(w))); - /* We use these strange format strings here to avoid that libc - * applies locale information on the formatting of floating - * numbers. */ + x += width/2; + x = CA_CLAMP(x, 0, screen_width-1); - if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_HPOS, "%i.%03i", - (int) (x/(screen_width-1)), (int) (1000.0*x/(screen_width-1)) % 1000)) < 0) - return ret; - } + /* We use these strange format strings here to avoid that libc + * applies locale information on the formatting of floating + * numbers. */ - if (y >= 0 && height > 0) { - screen_height = gdk_screen_get_height(gtk_widget_get_screen(GTK_WIDGET(w))); + if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_HPOS, "%i.%03i", + (int) (x/(screen_width-1)), (int) (1000.0*x/(screen_width-1)) % 1000)) < 0) + return ret; + } - y += height/2; - y = CA_CLAMP(y, 0, screen_height-1); + if (y >= 0 && height > 0) { + screen_height = gdk_screen_get_height(gtk_widget_get_screen(GTK_WIDGET(w))); - if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_VPOS, "%i.%03i", - (int) (y/(screen_height-1)), (int) (1000.0*y/(screen_height-1)) % 1000)) < 0) - return ret; + y += height/2; + y = CA_CLAMP(y, 0, screen_height-1); + + if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_VPOS, "%i.%03i", + (int) (y/(screen_height-1)), (int) (1000.0*y/(screen_height-1)) % 1000)) < 0) + return ret; + } } } +#endif return CA_SUCCESS; } |