[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 ]
