[maemo-commits] [maemo-commits] r10628 - in projects/haf/trunk/hildon-desktop: . libhildondesktop
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Mon Mar 19 18:10:22 EET 2007
- Previous message: [maemo-commits] r10627 - projects/haf/hafbuildbot
- Next message: [maemo-commits] r10629 - projects/haf/trunk/python/debian
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: moimart Date: 2007-03-19 18:10:20 +0200 (Mon, 19 Mar 2007) New Revision: 10628 Modified: projects/haf/trunk/hildon-desktop/ChangeLog projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-panel-window-dialog.c Log: * libhildondesktop/hildon-desktop-panel-window-dialog.c: - Check the WM we are running: if not matchbox set the window dialog as a dock window. * ChangeLog updated. Modified: projects/haf/trunk/hildon-desktop/ChangeLog =================================================================== --- projects/haf/trunk/hildon-desktop/ChangeLog 2007-03-19 13:41:48 UTC (rev 10627) +++ projects/haf/trunk/hildon-desktop/ChangeLog 2007-03-19 16:10:20 UTC (rev 10628) @@ -1,3 +1,9 @@ +2007-03-19 Moises Martinez <moises.martinez at nokia.com> + + * libhildondesktop/hildon-desktop-panel-window-dialog.c: + - Check the WM we are running: if not matchbox set the window dialog + as a dock window. + 2007-03-14 Lucas Rocha <lucas.rocha at nokia.com> * debian/control, debian/changelog, src/hd-desktop.c, Modified: projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-panel-window-dialog.c =================================================================== --- projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-panel-window-dialog.c 2007-03-19 13:41:48 UTC (rev 10627) +++ projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-panel-window-dialog.c 2007-03-19 16:10:20 UTC (rev 10628) @@ -26,6 +26,8 @@ #include <gtk/gtk.h> #include <gdk/gdk.h> #include <libhildonwm/hd-wm.h> +#include <X11/Xatom.h> +#include <gdk/gdkx.h> #include "hildon-desktop-panel-window-dialog.h" #include "hildon-desktop-panel-expandable.h" @@ -93,6 +95,53 @@ /* FIXME: what do we do with focus??? */ } +static gchar * +hildon_desktop_get_current_wm_name (HildonDesktopPanelWindowDialog *dialog) +{ + Atom atom_utf8_string, atom_wm_name, atom_check, type; + int result, format; + gchar *val, *retval; + unsigned long nitems, bytes_after; + Window *support_xwin = NULL; + Display *dpy; + + dpy = GDK_DISPLAY (); + + atom_check = XInternAtom (dpy, "_NET_SUPPORTING_WM_CHECK", False); + + XGetWindowProperty (dpy, + GDK_WINDOW_XID (gdk_get_default_root_window ()), + atom_check, + 0, 16L, False, XA_WINDOW, &type, &format, + &nitems, &bytes_after, (unsigned char **)&support_xwin); + + if (support_xwin == NULL) + return NULL; + + atom_utf8_string = XInternAtom (dpy, "UTF8_STRING", False); + atom_wm_name = XInternAtom (dpy, "_NET_WM_NAME", False); + + result = XGetWindowProperty (dpy, *support_xwin, atom_wm_name, + 0, 1000L,False, atom_utf8_string, + &type, &format, &nitems, + &bytes_after, (unsigned char **)&val); + if (result != Success) + return NULL; + + if (type != atom_utf8_string || format !=8 || nitems == 0) + { + if (val) + XFree (val); + return NULL; + } + + retval = g_strdup (val); + + XFree (val); + + return retval; +} + static GObject * hildon_desktop_panel_window_dialog_constructor (GType gtype, guint n_params, @@ -103,19 +152,16 @@ GtkWidget *widget; GtkContainer *parent = NULL; gint orientation; + gchar *wm_name; object = G_OBJECT_CLASS (hildon_desktop_panel_window_dialog_parent_class)->constructor (gtype, n_params, params); - widget = GTK_WIDGET (object); window = HILDON_DESKTOP_PANEL_WINDOW_DIALOG (object); GTK_WINDOW (window)->type = GTK_WINDOW_TOPLEVEL; - gtk_window_set_type_hint (GTK_WINDOW (window), GDK_WINDOW_TYPE_HINT_DIALOG); - gtk_window_set_decorated (GTK_WINDOW (window), FALSE); - if (HILDON_DESKTOP_WINDOW (window)->container != NULL) { parent = GTK_CONTAINER (GTK_WIDGET (HILDON_DESKTOP_WINDOW (window)->container)->parent); @@ -148,11 +194,27 @@ gtk_widget_show (GTK_WIDGET (HILDON_DESKTOP_WINDOW (window)->container)); - gtk_widget_realize (GTK_WIDGET (window)); - - gdk_window_set_transient_for (GTK_WIDGET (window)->window, gdk_get_default_root_window ()); - gtk_window_set_accept_focus (GTK_WINDOW (window), FALSE); + wm_name = hildon_desktop_get_current_wm_name (window); + if (g_str_equal (wm_name, "matchbox")) + { + gtk_window_set_type_hint (GTK_WINDOW (window), GDK_WINDOW_TYPE_HINT_DIALOG); + gtk_window_set_decorated (GTK_WINDOW (window), FALSE); + + gtk_widget_realize (GTK_WIDGET (window)); + + gdk_window_set_transient_for (GTK_WIDGET (window)->window, gdk_get_default_root_window ()); + gtk_window_set_accept_focus (GTK_WINDOW (window), FALSE); + } + else + { + gtk_window_set_type_hint (GTK_WINDOW (window), GDK_WINDOW_TYPE_HINT_DOCK); + + gtk_widget_realize (GTK_WIDGET (window)); + } + + g_free (wm_name); + gtk_widget_pop_composite_child (); g_signal_connect (window->priv->hdwm,
- Previous message: [maemo-commits] r10627 - projects/haf/hafbuildbot
- Next message: [maemo-commits] r10629 - projects/haf/trunk/python/debian
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]