[maemo-commits] [maemo-commits] r9825 - in projects/haf/branches/maemo-af-desktop/hildon-desktop: . libhildonwm src
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Tue Feb 13 16:22:58 EET 2007
- Previous message: [maemo-commits] r9824 - in projects/haf/branches/gtk+/maemo-gtk-2-10: . gtk
- Next message: [maemo-commits] r9826 - in projects/haf/branches/gtk+/maemo-gtk-2-10: . gtk
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: moimart Date: 2007-02-13 16:22:57 +0200 (Tue, 13 Feb 2007) New Revision: 9825 Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm.c projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-panel-window-dialog.c Log: * src/hd-panel-window-dialog.c: - Connected to fullscreen libhildonwm's signal * libhildonwm/hd-wm.c: - Added fullscreen signal. - Added checking of fullscreen for specific watched window. * ChangeLog updated. Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog 2007-02-13 13:40:23 UTC (rev 9824) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog 2007-02-13 14:22:57 UTC (rev 9825) @@ -1,5 +1,13 @@ 2007-02-13 Moises Martinez <moises.martinez at nokia.com> + * src/hd-panel-window-dialog.c: + - Connected to fullscreen libhildonwm's signal + * libhildonwm/hd-wm.c: + - Added fullscreen signal. + - Added checking of fullscreen for specific watched window. + +2007-02-13 Moises Martinez <moises.martinez at nokia.com> + * libhildondesktop/statusbar-item-socket.c: * libhildondesktop/hildon-desktop-panel-expandable.c: - Use gdk_window_set_back_pixmap for getting the proper background. Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm.c =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm.c 2007-02-13 13:40:23 UTC (rev 9824) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm.c 2007-02-13 14:22:57 UTC (rev 9825) @@ -114,6 +114,7 @@ HDWM_WORK_AREA_CHANGED_SIGNAL, HDWM_SHOW_A_MENU_SIGNAL, HDWM_APPLICATION_STARTING_SIGNAL, + HDWM_FULLSCREEN, HDWM_SIGNALS }; @@ -147,6 +148,9 @@ static gboolean hd_wm_relaunch_timeout (gpointer data); + static void +hd_wm_check_net_state (HDWM *hdwm, HDWMWatchedWindow *win); + struct xwinv { Window *wins; @@ -715,6 +719,17 @@ 1, G_TYPE_STRING); + hdwm_signals[HDWM_FULLSCREEN] = + g_signal_new("fullscreen", + G_OBJECT_CLASS_TYPE(object_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (HDWMClass,show_menu), + NULL, NULL, + g_cclosure_marshal_VOID__BOOLEAN, + G_TYPE_NONE, + 1, + G_TYPE_BOOLEAN); + } static void hd_wm_register_object_path (HDWM *hdwm, @@ -1215,6 +1230,8 @@ const gchar * service = hd_wm_watchable_app_get_service (app); hd_wm_top_service (service); + + hd_wm_check_net_state (hdwm,hdwm->priv->last_active_window); } else hd_wm_top_desktop (); @@ -1252,6 +1269,8 @@ * this breaks the AS menu focus. */ hdwm->priv->active_window = NULL; + + g_signal_emit_by_name (hdwm, "fullscreen", FALSE); } @@ -2097,6 +2116,44 @@ return FALSE; } +static void +hd_wm_check_net_state (HDWM *hdwm, HDWMWatchedWindow *win) +{ + Window xid = hd_wm_watched_window_get_x_win (win); + unsigned long n; + unsigned long extra; + int format, status, i; + Atom realType, *value = NULL; + + status = XGetWindowProperty(GDK_DISPLAY (), xid, + hdwm->priv->atoms[HD_ATOM_NET_WM_STATE], + 0L, 1000000L, + 0, XA_ATOM, &realType, &format, + &n, &extra, (unsigned char **) &value); + + if (status == Success) + { + if (realType == XA_ATOM && format == 32 && n > 0) + { + for (i=0; i < n; i++) + if (value[i] && value[i] == hdwm->priv->atoms[HD_ATOM_NET_WM_STATE_FULLSCREEN]) + { + if (value) XFree(value); + g_signal_emit_by_name (hdwm,"fullscreen",TRUE); + g_debug ("FULLSCREEN ON %d",(GdkNativeWindow)xid); + return; + } + } + } + + if (value) + XFree(value); + + g_signal_emit_by_name (hdwm,"fullscreen",FALSE); + g_debug ("FULLSCREEN OFF"); + +} + /* Main event filter */ static GdkFilterReturn @@ -2273,6 +2330,9 @@ if (!win) return GDK_FILTER_CONTINUE; + if (prop->atom == hdwm->priv->atoms[HD_ATOM_NET_WM_STATE]) + hd_wm_check_net_state (hdwm, win); + else if (prop->atom == hdwm->priv->atoms[HD_ATOM_WM_NAME] || prop->atom == hdwm->priv->atoms[HD_ATOM_MB_WIN_SUB_NAME] || prop->atom == hdwm->priv->atoms[HD_ATOM_NET_WM_NAME]) Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-panel-window-dialog.c =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-panel-window-dialog.c 2007-02-13 13:40:23 UTC (rev 9824) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-panel-window-dialog.c 2007-02-13 14:22:57 UTC (rev 9825) @@ -31,6 +31,7 @@ #include <gtk/gtk.h> #include <libhildondesktop/hildon-desktop-panel-expandable.h> +#include <libhildonwm/hd-wm.h> #include "hd-panel-window-dialog.h" #define HD_PANEL_WINDOW_DIALOG_GET_PRIVATE(obj) \ @@ -92,6 +93,17 @@ gtk_widget_set_name (GTK_BIN (widget)->child, HD_PANEL_WINDOW_DIALOG_BUTTON_NAME); } +static void +hd_panel_window_dialog_fullscreen (HDWM *hdwm, gboolean fullscreen, gpointer _data) +{ + GtkWidget *window = GTK_WIDGET (_data); + + if (!fullscreen) + gtk_widget_show (window); + else + gtk_widget_hide (window); +} + static GObject * hd_panel_window_dialog_constructor (GType gtype, guint n_params, @@ -101,6 +113,8 @@ #ifdef HD_PANEL_WINDOW_DIALOG_NEW_THEME HildonDesktopPanelWindowOrientation orientation; #endif + + HDWM *hdwm = hd_wm_get_singleton (); object = G_OBJECT_CLASS (hd_panel_window_dialog_parent_class)->constructor (gtype, n_params, @@ -111,6 +125,11 @@ G_CALLBACK (hd_panel_window_dialog_cadd), NULL); + g_signal_connect (G_OBJECT (hdwm), + "fullscreen", + G_CALLBACK (hd_panel_window_dialog_fullscreen), + (gpointer)object); + #ifdef HD_PANEL_WINDOW_DIALOG_NEW_THEME g_object_get (G_OBJECT (object), "orientation", &orientation,
- Previous message: [maemo-commits] r9824 - in projects/haf/branches/gtk+/maemo-gtk-2-10: . gtk
- Next message: [maemo-commits] r9826 - in projects/haf/branches/gtk+/maemo-gtk-2-10: . gtk
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]