[maemo-commits] [maemo-commits] r8714 - in projects/haf/branches/maemo-af-desktop/hildon-desktop: . libhildondesktop libhildonwm
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Mon Dec 11 14:52:01 EET 2006
- Previous message: [maemo-commits] r8713 - projects/haf/tags/hildon-fm
- Next message: [maemo-commits] r8715 - projects/haf/trunk/osso-application-installer/src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: jobi Date: 2006-12-11 14:52:00 +0200 (Mon, 11 Dec 2006) New Revision: 8714 Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/desktop-panel-window.c projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/desktop-panel-window.h projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/hildon-home-window.c projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm-types.h projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm.c projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm.h Log: 2006-12-11 Johan Bilien <johan.bilien at nokia.com> * libhildonwm/hd-wm.[ch]: - added work-area-changed property to keep track of the _NET_WORKAREA root window property * libhildondesktop/desktop-panel-window.c: - add missing _new implementation * libhildondesktop/hildon-home-window.c: - use the new WM property to track thw work area changes Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog 2006-12-11 11:52:21 UTC (rev 8713) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog 2006-12-11 12:52:00 UTC (rev 8714) @@ -1,3 +1,13 @@ +2006-12-11 Johan Bilien <johan.bilien at nokia.com> + + * libhildonwm/hd-wm.[ch]: + - added work-area-changed property to keep track of the + _NET_WORKAREA root window property + * libhildondesktop/desktop-panel-window.c: + - add missing _new implementation + * libhildondesktop/hildon-home-window.c: + - use the new WM property to track thw work area changes + 2006-12-08 Moises Martinez <moises.martinzes at nokia.com> * libhildondesktop/desktop-panel.c: Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/desktop-panel-window.c =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/desktop-panel-window.c 2006-12-11 11:52:21 UTC (rev 8713) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/desktop-panel-window.c 2006-12-11 12:52:00 UTC (rev 8714) @@ -1062,3 +1062,11 @@ window->priv->ms = ms; } + +GtkWidget * +desktop_panel_window_new () +{ + GtkWidget *window; + window = g_object_new (DESKTOP_TYPE_PANEL_WINDOW, NULL); + return window; +} Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/desktop-panel-window.h =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/desktop-panel-window.h 2006-12-11 11:52:21 UTC (rev 8713) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/desktop-panel-window.h 2006-12-11 12:52:00 UTC (rev 8714) @@ -86,7 +86,7 @@ GType desktop_panel_window_get_type (void); -DesktopPanelWindow* desktop_panel_window_new (void); +GtkWidget * desktop_panel_window_new (void); void set_multiscreen_handler (DesktopPanelWindow *window, DesktopMultiscreen *ms); Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/hildon-home-window.c =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/hildon-home-window.c 2006-12-11 11:52:21 UTC (rev 8713) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/hildon-home-window.c 2006-12-11 12:52:00 UTC (rev 8714) @@ -47,6 +47,8 @@ #include <hildon-widgets/hildon-caption.h> #include <hildon-widgets/hildon-color-button.h> +#include <libhildonwm/hd-wm.h> + /*#include "background-manager.h"*/ #include "hildon-home-l10n.h" @@ -92,29 +94,35 @@ { /* BackgroundManager *bg_manager;*/ - GtkWidget *align; + GtkWidget *align; - GtkWidget *titlebar; - GtkWidget *applet_area; - GtkWidget *main_area; + GtkWidget *titlebar; + GtkWidget *applet_area; + GtkWidget *main_area; - GtkWidget *layout_mode_banner; - guint layout_mode_banner_to; + GtkWidget *layout_mode_banner; + guint layout_mode_banner_to; - guint is_dimmed : 1; - guint is_lowmem : 1; - guint is_inactive : 1; + GdkRectangle *work_area; - guint selecting_applets : 1; + guint is_dimmed : 1; + guint is_lowmem : 1; + guint is_inactive : 1; + + guint selecting_applets : 1; }; G_DEFINE_TYPE (HildonHomeWindow, hildon_home_window, HILDON_DESKTOP_TYPE_WINDOW); +static void +hildon_home_window_set_work_area (HildonHomeWindow *window, + GdkRectangle *workarea); + enum { PROP_0, - PROP_OSSO_CONTEXT + PROP_WORK_AREA }; static gboolean @@ -675,29 +683,42 @@ static void hildon_home_window_set_property (GObject *gobject, - guint prop_id, - const GValue *value, - GParamSpec *pspec) + guint prop_id, + const GValue *value, + GParamSpec *pspec) { switch (prop_id) { - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); - break; + case PROP_WORK_AREA: + hildon_home_window_set_work_area (HILDON_HOME_WINDOW (gobject), + (GdkRectangle *) + g_value_get_pointer (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); + break; } } static void hildon_home_window_get_property (GObject *gobject, - guint prop_id, - GValue *value, - GParamSpec *pspec) + guint prop_id, + GValue *value, + GParamSpec *pspec) { + HildonHomeWindowPrivate *priv; + + g_return_if_fail (HILDON_IS_HOME_WINDOW (gobject)); + priv = HILDON_HOME_WINDOW (gobject)->priv; + switch (prop_id) { - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); - break; + case PROP_WORK_AREA: + g_value_set_pointer (value, priv->work_area); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); + break; } } @@ -725,8 +746,8 @@ static GObject * hildon_home_window_constructor (GType gtype, - guint n_params, - GObjectConstructParam *params) + guint n_params, + GObjectConstructParam *params) { GObject *retval; HildonHomeWindow *window; @@ -858,8 +879,9 @@ static void hildon_home_window_class_init (HildonHomeWindowClass *klass) { - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + GParamSpec *pspec; + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gobject_class->constructor = hildon_home_window_constructor; gobject_class->set_property = hildon_home_window_set_property; @@ -906,12 +928,14 @@ 1, G_TYPE_BOOLEAN); + pspec = g_param_spec_pointer ("work-area", + "Work Area", + "Work area available for desktop", + (G_PARAM_READABLE | G_PARAM_CONSTRUCT)); + g_object_class_install_property (gobject_class, - PROP_OSSO_CONTEXT, - g_param_spec_pointer ("osso-context", - "Osso Context", - "Osso context to be used by the window", - (G_PARAM_READWRITE | G_PARAM_CONSTRUCT))); + PROP_WORK_AREA, + pspec); g_type_class_add_private (klass, sizeof (HildonHomeWindowPrivate)); } @@ -921,6 +945,7 @@ { HildonHomeWindowPrivate *priv; GtkWidget *widget; + HDWM *wm; gtk_window_set_has_frame (GTK_WINDOW (window), FALSE); @@ -931,9 +956,43 @@ window->priv = priv = HILDON_HOME_WINDOW_GET_PRIVATE (window); + priv->is_dimmed = FALSE; + wm = hd_wm_get_singleton (); + g_signal_connect_swapped (wm, "work-area-changed", + G_CALLBACK (hildon_home_window_set_work_area), + window); +} - priv->is_dimmed = FALSE; +static void +hildon_home_window_set_work_area (HildonHomeWindow *window, + GdkRectangle *work_area) +{ + HildonHomeWindowPrivate *priv; + g_return_if_fail (HILDON_IS_HOME_WINDOW (window) && work_area); + priv = window->priv; + + g_debug ("New work area: (%i,%i) %ix%i", work_area->x, + work_area->y, + work_area->width, + work_area->height); + + if (!priv->work_area || priv->work_area->x != work_area->x + || priv->work_area->y != work_area->y + || priv->work_area->width != work_area->width + || priv->work_area->height != work_area->height) + { + if (!priv->work_area) + priv->work_area = g_new (GdkRectangle, 1); + + priv->work_area->x = work_area->x; + priv->work_area->y = work_area->y; + priv->work_area->width = work_area->width; + priv->work_area->height = work_area->height; + + gtk_widget_queue_resize (GTK_WIDGET (window)); + g_object_notify (G_OBJECT (window), "work-area"); + } } GtkWidget * Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm-types.h =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm-types.h 2006-12-11 11:52:21 UTC (rev 8713) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm-types.h 2006-12-11 12:52:00 UTC (rev 8714) @@ -49,6 +49,7 @@ HD_ATOM_NET_SHOWING_DESKTOP, HD_ATOM_NET_WM_PID, HD_ATOM_NET_ACTIVE_WINDOW, + HD_ATOM_NET_WORKAREA, HD_ATOM_NET_CLIENT_LIST, HD_ATOM_NET_WM_ICON, HD_ATOM_NET_WM_USER_TIME, 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 2006-12-11 11:52:21 UTC (rev 8713) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm.c 2006-12-11 12:52:00 UTC (rev 8714) @@ -73,6 +73,7 @@ HDWM_ENTRY_INFO_ADDED_SIGNAL, HDWM_ENTRY_INFO_REMOVED_SIGNAL, HDWM_ENTRY_INFO_STACK_CHANGED_SIGNAL, + HDWM_WORK_AREA_CHANGED_SIGNAL, HDWM_SHOW_A_MENU_SIGNAL, HDWM_SIGNALS }; @@ -203,6 +204,7 @@ "_NET_SHOWING_DESKTOP", "_NET_WM_PID", "_NET_ACTIVE_WINDOW", + "_NET_WORKAREA", "_NET_CLIENT_LIST", "_NET_WM_ICON", "_NET_WM_USER_TIME", @@ -546,6 +548,17 @@ NULL, NULL, g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, G_TYPE_POINTER); + + hdwm_signals[HDWM_WORK_AREA_CHANGED_SIGNAL] = + g_signal_new("work-area-changed", + G_OBJECT_CLASS_TYPE(object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (HDWMClass, work_area_changed), + NULL, NULL, + g_cclosure_marshal_VOID__POINTER, + G_TYPE_NONE, + 1, + G_TYPE_POINTER); hdwm_signals[HDWM_SHOW_A_MENU_SIGNAL] = g_signal_new("show_menu", @@ -1790,6 +1803,34 @@ else if (prop->atom == hdwm->priv->atoms[HD_ATOM_MB_CURRENT_APP_WINDOW]) hd_wm_process_mb_current_app_window (hdwm); + else + if (prop->atom == hdwm->priv->atoms[HD_ATOM_NET_WORKAREA]) + { + int *work_area_data; + + work_area_data = + hd_wm_util_get_win_prop_data_and_validate ( + GDK_WINDOW_XID (gdk_get_default_root_window()), + hdwm->priv->atoms[HD_ATOM_NET_WORKAREA], + XA_CARDINAL, + 32, + 4, + NULL); + + if (work_area_data) + { + GdkRectangle work_area; + + work_area.width = work_area_data[0]; + work_area.height = work_area_data[1]; + work_area.x = work_area_data[2]; + work_area.y = work_area_data[3]; + + g_signal_emit_by_name (hdwm, "work-area-changed", &work_area); + + XFree (work_area_data); + } + } else if (prop->atom == hdwm->priv->atoms[HD_ATOM_NET_SHOWING_DESKTOP]) { Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm.h =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm.h 2006-12-11 11:52:21 UTC (rev 8713) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm.h 2006-12-11 12:52:00 UTC (rev 8714) @@ -141,6 +141,7 @@ void (*entry_info_removed) (HDWM *hdwm,HDEntryInfo *info); void (*entry_info_changed) (HDWM *hdwm,HDEntryInfo *info); void (*entry_info_stack_changed) (HDWM *hdwm,HDEntryInfo *info); + void (*work_area_changed) (HDWM *hdwm,GdkRectangle *work_area); void (*show_menu) (HDWM *hdwm); /* */ };
- Previous message: [maemo-commits] r8713 - projects/haf/tags/hildon-fm
- Next message: [maemo-commits] r8715 - projects/haf/trunk/osso-application-installer/src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]