[maemo-commits] [maemo-commits] r8673 - in projects/haf/branches/maemo-af-desktop/hildon-desktop: . libhildondesktop
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Thu Dec 7 17:07:07 EET 2006
- Previous message: [maemo-commits] r8672 - projects/haf/trunk/maemo-af-desktop
- Next message: [maemo-commits] r8674 - projects/haf/branches/osso-gnome-vfs2/2-16-upstream-merge/debian
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: lucasr Date: 2006-12-07 17:07:06 +0200 (Thu, 07 Dec 2006) New Revision: 8673 Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/desktop-multiscreen.h 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-desktop-window.h Log: 2006-12-07 Lucas Rocha <lucas.rocha at nokia.com> * libhildondesktop/hildon-desktop-panel.h, libhildondesktop/desktop-multiscreen.h: code cleanups. * libhildondesktop/desktop-panel-window.c: code cleanups and refactoring. Implementation of panel window positioting on bottom and right. Always use DesktopMultiscreen when required. Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog 2006-12-07 13:23:19 UTC (rev 8672) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog 2006-12-07 15:07:06 UTC (rev 8673) @@ -1,3 +1,11 @@ +2006-12-07 Lucas Rocha <lucas.rocha at nokia.com> + + * libhildondesktop/hildon-desktop-panel.h, + libhildondesktop/desktop-multiscreen.h: code cleanups. + * libhildondesktop/desktop-panel-window.c: code cleanups and + refactoring. Implementation of panel window positioting on bottom and + right. Always use DesktopMultiscreen when required. + 2006-12-05 Johan Bilien <johan.bilien at nokia.com> * libhildondesktop/hildon-home-window.c: when an applet is added, Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/desktop-multiscreen.h =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/desktop-multiscreen.h 2006-12-07 13:23:19 UTC (rev 8672) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/desktop-multiscreen.h 2006-12-07 15:07:06 UTC (rev 8673) @@ -99,7 +99,7 @@ gint desktop_ms_get_x (DesktopMultiscreen *ms, GdkScreen *screen, - gint monitor); + gint monitor); gint desktop_ms_get_y (DesktopMultiscreen *ms, GdkScreen *screen, 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-07 13:23:19 UTC (rev 8672) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/desktop-panel-window.c 2006-12-07 15:07:06 UTC (rev 8673) @@ -82,6 +82,8 @@ #define MAGIC_GEOMETRY(w) (w->priv->magic_geometry.width != -1 && w->priv->magic_geometry.height != -1) +#define HANDLE_SIZE 10 + /*static void set_focus_forall_cb (GtkWidget *widget, gpointer data);*/ static void desktop_panel_window_finalize (GObject *self); @@ -178,8 +180,6 @@ 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); - - g_object_class_install_property (object_class, PROP_VER_H, g_param_spec_int( @@ -265,8 +265,6 @@ 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); - - g_object_class_install_property (object_class, PROP_MAG_HEIGHT, g_param_spec_int( @@ -277,7 +275,6 @@ G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); - } static void @@ -371,7 +368,10 @@ window = DESKTOP_PANEL_WINDOW (object); if (window->priv->ms) + { g_object_unref (G_OBJECT (window->priv->ms)); + window->priv->ms = NULL; + } G_OBJECT_CLASS (desktop_panel_window_parent_class)->finalize (object); } @@ -383,9 +383,9 @@ guint32 timestamp) { gtk_grab_add (GTK_WIDGET (window)); - GdkCursor *cursor = gdk_cursor_new (GDK_CROSS); + if (gdk_pointer_grab (GTK_WIDGET (window)->window, FALSE, GDK_POINTER_MOTION_MASK | GDK_BUTTON_RELEASE_MASK, NULL, cursor, timestamp) == GDK_GRAB_SUCCESS) @@ -398,7 +398,6 @@ if (grab_keyboard) gdk_keyboard_grab (GTK_WIDGET (window)->window, FALSE, timestamp); - } static void @@ -421,7 +420,6 @@ switch (window->priv->state) { case DESKTOP_PANEL_GRAB_MOVE: - /* FIXME: will this change??? */ desktop_panel_calc_orientation (window, event->x_root, event->y_root); @@ -492,16 +490,15 @@ desktop_panel_win_set_orientation (DesktopPanelWindow *window, DPanelWinOrientation orientation) { - gboolean rotate = FALSE; /* what is this for? */ + gboolean rotate = FALSE; if (orientation & DPANEL_ORIENTATION_HORIZONTAL && window->priv->orientation & DPANEL_ORIENTATION_VERTICAL) { rotate = TRUE; } - else - if (orientation & DPANEL_ORIENTATION_VERTICAL && - window->priv->orientation & DPANEL_ORIENTATION_HORIZONTAL) + else if (orientation & DPANEL_ORIENTATION_VERTICAL && + window->priv->orientation & DPANEL_ORIENTATION_HORIZONTAL) { rotate = TRUE; } @@ -538,7 +535,7 @@ desktop_panel_grab_motion_event (DESKTOP_PANEL_WINDOW (widget), event); } else - return FALSE; + return FALSE; } static void @@ -558,7 +555,7 @@ new_y; screen = gtk_window_get_screen (GTK_WINDOW (window)); - monitor = gdk_screen_get_monitor_at_point (screen, px, py); + monitor = gdk_screen_get_monitor_at_point (screen, px, py); CHECK_MULTISCREEN_HANDLER (window->priv->ms); @@ -587,6 +584,7 @@ new_orientation = DPANEL_ORIENTATION_LEFT; } break; + case DPANEL_ORIENTATION_BOTTOM: if (new_y < hborder) new_orientation = DPANEL_ORIENTATION_TOP; @@ -600,6 +598,7 @@ new_orientation = DPANEL_ORIENTATION_LEFT; } break; + case DPANEL_ORIENTATION_LEFT: if (new_x > (monitor_width - vborder)) new_orientation = DPANEL_ORIENTATION_RIGHT; @@ -613,6 +612,7 @@ new_orientation = DPANEL_ORIENTATION_TOP; } break; + case DPANEL_ORIENTATION_RIGHT: if (new_x < vborder) new_orientation = DPANEL_ORIENTATION_LEFT; @@ -626,6 +626,7 @@ new_orientation = DPANEL_ORIENTATION_TOP; } break; + default: g_debug ("Unreachable"); break; @@ -635,47 +636,43 @@ } static void -desktop_panel_update_geometry (DesktopPanelWindow *window, - GtkRequisition *requisition) +desktop_panel_update_size (DesktopPanelWindow *window, + GdkScreen *screen, + gint monitor) { - GdkScreen *screen; - - screen = gtk_window_get_screen (GTK_WINDOW (window)); - - /*FIXME: separate this! */ - /* size */ if (window->priv->stretch) { - /* This code is only for one screen with one monitor */ - /* TODO: implement it! */ - if IS_HORIZONTAL (window) - { - window->priv->geometry.width = gdk_screen_width (); /*FIXME: USE THE MULTISCREEN HANDLER LUKE!!! */ - - if MAGIC_GEOMETRY (window) - window->priv->geometry.height = window->priv->magic_geometry.height; - else - window->priv->geometry.height = window->priv->horiz_geometry.height; - } - else - if IS_VERTICAL (window) - { - window->priv->geometry.height = gdk_screen_height (); /*FIXME: USE THE MULTISCREEN HANDLER LUKE!!! */ - - if MAGIC_GEOMETRY (window) - window->priv->geometry.width = window->priv->magic_geometry.height; - else - window->priv->geometry.width = window->priv->vert_geometry.height; - } + if IS_HORIZONTAL (window) + { + window->priv->geometry.width = desktop_ms_get_width (window->priv->ms, + screen, + monitor); + + if (MAGIC_GEOMETRY (window)) + window->priv->geometry.height = window->priv->magic_geometry.height; + else + window->priv->geometry.height = window->priv->horiz_geometry.height; + } + else if IS_VERTICAL (window) + { + window->priv->geometry.height = desktop_ms_get_height (window->priv->ms, + screen, + monitor); + + if (MAGIC_GEOMETRY (window)) + window->priv->geometry.width = window->priv->magic_geometry.height; + else + window->priv->geometry.width = window->priv->vert_geometry.height; + } } else { if IS_HORIZONTAL (window) { - if MAGIC_GEOMETRY (window) + if (MAGIC_GEOMETRY (window)) { window->priv->geometry.width = window->priv->magic_geometry.width; - window->priv->geometry.height = window->priv->magic_geometry.height; + window->priv->geometry.height = window->priv->magic_geometry.height; } else { @@ -683,10 +680,9 @@ window->priv->geometry.height = window->priv->horiz_geometry.height; } } - else - if IS_VERTICAL (window) + else if IS_VERTICAL (window) { - if MAGIC_GEOMETRY (window) + if (MAGIC_GEOMETRY (window)) { window->priv->geometry.width = window->priv->magic_geometry.height; window->priv->geometry.height = window->priv->magic_geometry.width; @@ -698,9 +694,13 @@ } } } - /* position */ - /* FIXME: I think It can be done better */ - +} + +static void +desktop_panel_update_position (DesktopPanelWindow *window, + GdkScreen *screen, + gint monitor) +{ if IS_TOP (window) { window->priv->geometry.y = 0; @@ -710,15 +710,26 @@ else window->priv->geometry.x = window->priv->horiz_geometry.x; } + if IS_BOTTOM (window) { - window->priv->geometry.y = window->priv->vert_geometry.y; - + gint height; + + if (MAGIC_GEOMETRY (window)) + height = window->priv->magic_geometry.height; + else + height = window->priv->horiz_geometry.height; + + window->priv->geometry.y = desktop_ms_get_height (window->priv->ms, + screen, + monitor) - height; + if (window->priv->stretch) window->priv->geometry.x = 0; else window->priv->geometry.x = window->priv->horiz_geometry.x; } + if IS_LEFT(window) { window->priv->geometry.x = window->priv->geometry.y = 0; @@ -726,20 +737,45 @@ if (window->priv->stretch) window->priv->geometry.y = 0; else - window->priv->geometry.y = window->priv->vert_geometry.y / 3;/*FIXME: This is not well implemented */ - /*window->priv->geometry.y = (gdk_screen_height ()*window->priv->horiz_geometry.x)/gdk_screen_width (); */ + window->priv->geometry.y = (desktop_ms_get_height (window->priv->ms, screen, monitor) * window->priv->horiz_geometry.x) / + desktop_ms_get_width (window->priv->ms, screen, monitor);/*FIXME: This is not well implemented */ } + if IS_RIGHT (window) { - window->priv->geometry.x = gdk_screen_width () - window->priv->vert_geometry.width;/*FIXME: window->priv->horiz_geometry.x - window->priv->vert_geometry.width;*/ - window->priv->geometry.y = 0; - + gint width; + + if (MAGIC_GEOMETRY (window)) + width = window->priv->magic_geometry.height; + else + width = window->priv->vert_geometry.width; + + window->priv->geometry.x = desktop_ms_get_width (window->priv->ms, + screen, + monitor) - width; + if (window->priv->stretch) window->priv->geometry.y = 0; else - window->priv->geometry.y = window->priv->vert_geometry.y / 3;/*FIXME: This is not well implemented */ + window->priv->geometry.y = window->priv->vert_geometry.y;/*FIXME: This is not well implemented */ } +} +static void +desktop_panel_update_geometry (DesktopPanelWindow *window) +{ + GdkScreen *screen; + gint monitor; + + CHECK_MULTISCREEN_HANDLER (window->priv->ms); + + screen = gtk_window_get_screen (GTK_WINDOW (window)); + + monitor = gdk_screen_get_monitor_at_window (screen, + GTK_WIDGET (window)->window); + + desktop_panel_update_size (window, screen, monitor); + desktop_panel_update_position (window, screen, monitor); } static void @@ -799,7 +835,6 @@ allocation = widget->allocation; gtk_widget_size_allocate (widget, &allocation); - } static void @@ -814,13 +849,10 @@ window = DESKTOP_PANEL_WINDOW (widget); bin = GTK_BIN (widget); -/* - if (bin->child && GTK_WIDGET_VISIBLE (bin->child)) - gtk_widget_size_request (bin->child, requisition); -*/ + old_geometry = window->priv->geometry; - desktop_panel_update_geometry (window,requisition); + desktop_panel_update_geometry (window); requisition->width = window->priv->geometry.width; requisition->height = window->priv->geometry.height; @@ -847,10 +879,9 @@ desktop_panel_size_allocate (GtkWidget *widget, GtkAllocation *allocation) { -#define HANDLE_SIZE 10 DesktopPanelWindow *window = DESKTOP_PANEL_WINDOW (widget); - GtkBin *bin = GTK_BIN (widget); - GtkAllocation challoc; + GtkBin *bin = GTK_BIN (widget); + GtkAllocation challoc; widget->allocation = *allocation; @@ -888,7 +919,6 @@ GValue *value, GParamSpec *pspec) { - DesktopPanelWindow *window = DESKTOP_PANEL_WINDOW (object); switch (prop_id) 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-07 13:23:19 UTC (rev 8672) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/desktop-panel-window.h 2006-12-07 15:07:06 UTC (rev 8673) @@ -66,22 +66,22 @@ struct _DesktopPanelWindow { - HildonDesktopWindow parent; + HildonDesktopWindow parent; - GtkWidget *panel; + GtkWidget *panel; - DesktopPanelWindowPrivate *priv; + DesktopPanelWindowPrivate *priv; }; struct _DesktopPanelWindowClass { - HildonDesktopWindowClass parent_class; + HildonDesktopWindowClass parent_class; - void (*set_sensitive) (DesktopPanelWindow *window, - gboolean sensitive); - - void (*set_focus) (DesktopPanelWindow *window, - gboolean focus); + void (*set_sensitive) (DesktopPanelWindow *window, + gboolean sensitive); + + void (*set_focus) (DesktopPanelWindow *window, + gboolean focus); }; GType desktop_panel_window_get_type (void); Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/hildon-desktop-window.h =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/hildon-desktop-window.h 2006-12-07 13:23:19 UTC (rev 8672) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/hildon-desktop-window.h 2006-12-07 15:07:06 UTC (rev 8673) @@ -26,7 +26,7 @@ #ifndef __HILDON_DESKTOP_WINDOW_H__ #define __HILDON_DESKTOP_WINDOW_H__ -#include <gtk/gtkwindow.h> +#include <gtk/gtk.h> G_BEGIN_DECLS @@ -42,27 +42,28 @@ struct _HildonDesktopWindow { - GtkWindow parent; + GtkWindow parent; - HildonDesktopWindowPrivate *priv; - GtkContainer *container; + HildonDesktopWindowPrivate *priv; + + GtkContainer *container; }; struct _HildonDesktopWindowClass { - GtkWindowClass parent_class; + GtkWindowClass parent_class; - void (*select_plugins) (HildonDesktopWindow *window); + void (*select_plugins) (HildonDesktopWindow *window); - void (*save) (HildonDesktopWindow *window); + void (*save) (HildonDesktopWindow *window); - void (*load) (HildonDesktopWindow *window); + void (*load) (HildonDesktopWindow *window); - void (*set_sensitive) (HildonDesktopWindow *window, - gboolean sensitive); - - void (*set_focus) (HildonDesktopWindow *window, - gboolean focus); + void (*set_sensitive) (HildonDesktopWindow *window, + gboolean sensitive); + + void (*set_focus) (HildonDesktopWindow *window, + gboolean focus); }; GType hildon_desktop_window_get_type (void);
- Previous message: [maemo-commits] r8672 - projects/haf/trunk/maemo-af-desktop
- Next message: [maemo-commits] r8674 - projects/haf/branches/osso-gnome-vfs2/2-16-upstream-merge/debian
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]