[maemo-commits] [maemo-commits] r8780 - in projects/haf/branches/maemo-af-desktop/hildon-desktop: . libhildondesktop libhildonwm
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Fri Dec 15 14:41:51 EET 2006
- Previous message: [maemo-commits] r8779 - in projects/haf/trunk/maemo-af-desktop: . hildon-navigator
- Next message: [maemo-commits] r8781 - in projects/haf/branches/gtk+/maemo-gtk-2-10: . gtk
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: jobi Date: 2006-12-15 14:41:49 +0200 (Fri, 15 Dec 2006) New Revision: 8780 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/hildon-home-titlebar.c 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.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-15 Johan Bilien <johan.bilien at nokia.com> * libhildondesktop/desktop-panel-window.c: Fixed a warning * libhildondesktop/hildon-home-window.c: - Removed main_area and hbox in the layout - implemeted _expose, _map, _forall, size_allocate - track the _NET_WORKAREA and resize accordingly * libhildondesktop/hildon-home-titlebar.c: Removed hard-coded width * libhildonwm/hd-wm.[ch]: Added _get_workarea method Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog 2006-12-15 11:35:33 UTC (rev 8779) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog 2006-12-15 12:41:49 UTC (rev 8780) @@ -1,3 +1,14 @@ +2006-12-15 Johan Bilien <johan.bilien at nokia.com> + + * libhildondesktop/desktop-panel-window.c: Fixed a warning + * libhildondesktop/hildon-home-window.c: + - Removed main_area and hbox in the layout + - implemeted _expose, _map, _forall, size_allocate + - track the _NET_WORKAREA and resize accordingly + * libhildondesktop/hildon-home-titlebar.c: Removed hard-coded + width + * libhildonwm/hd-wm.[ch]: Added _get_workarea method + 2006-12-15 Lucas Rocha <lucas.rocha at nokia.com> * libhildondesktop/hildon-desktop-plugin.[ch]: small fixes on GObject 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-15 11:35:33 UTC (rev 8779) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/desktop-panel-window.c 2006-12-15 12:41:49 UTC (rev 8780) @@ -768,14 +768,15 @@ desktop_panel_update_geometry (DesktopPanelWindow *window) { GdkScreen *screen; - gint monitor; + gint monitor = 0; 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); + if (GTK_WIDGET_REALIZED (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); Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/hildon-home-titlebar.c =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/hildon-home-titlebar.c 2006-12-15 11:35:33 UTC (rev 8779) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/hildon-home-titlebar.c 2006-12-15 12:41:49 UTC (rev 8780) @@ -46,7 +46,6 @@ #include "hildon-home-window.h" #include "hildon-home-l10n.h" -#define HILDON_HOME_TITLEBAR_WIDTH 720 #define HILDON_HOME_TITLEBAR_HEIGHT 60 #define HILDON_HOME_TITLEBAR_MENU_LABEL_FONT "osso-TitleFont" #define HILDON_HOME_TITLEBAR_MENU_LABEL_COLOR "TitleTextColor" @@ -537,6 +536,8 @@ HildonHomeTitlebar *titlebar; gdouble x_win, y_win; + g_debug ("button_press"); + /* Make sure we don't step over the end of the title bar */ gdk_event_get_coords ((GdkEvent *) event, &x_win, &y_win); if (x_win >= HILDON_HOME_MENU_WIDTH) @@ -733,7 +734,7 @@ g_type_class_add_private (gobject_class, sizeof (HildonHomeTitlebarPrivate)); } - static void +static void hildon_home_titlebar_init (HildonHomeTitlebar *titlebar) { HildonHomeTitlebarPrivate *priv; @@ -747,7 +748,7 @@ priv->menu_popup_status = FALSE; gtk_widget_set_size_request (GTK_WIDGET (titlebar), - HILDON_HOME_TITLEBAR_WIDTH, + -1, HILDON_HOME_TITLEBAR_HEIGHT); gtk_event_box_set_visible_window (GTK_EVENT_BOX (titlebar), FALSE); @@ -809,6 +810,7 @@ titlebar); gtk_box_pack_start (GTK_BOX (hbox), priv->layout_accept, FALSE, FALSE, 0); + priv->layout_cancel = gtk_button_new_with_label (""); g_object_set (priv->layout_cancel, "image", gtk_image_new_from_icon_name (LAYOUT_MODE_CANCEL_BUTTON, @@ -824,6 +826,13 @@ priv->layout_text = g_strdup (HH_MENU_LAYOUT_TITLE); + g_signal_connect_swapped (priv->layout_cancel, "size-allocate", + G_CALLBACK (g_print), + "CANCEL BUTTON ALLOCATE\n"); + g_signal_connect_swapped (priv->layout_accept, "size-allocate", + G_CALLBACK (g_print), + "ACCEPT BUTTON ALLOCATE\n"); + gtk_widget_pop_composite_child (); } @@ -844,6 +853,8 @@ g_return_if_fail (HILDON_IS_HOME_TITLEBAR (titlebar)); + g_debug ("SETTING TITLEBAR MODE"); + priv = titlebar->priv; if (priv->mode != mode) 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-15 11:35:33 UTC (rev 8779) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/hildon-home-window.c 2006-12-15 12:41:49 UTC (rev 8780) @@ -29,23 +29,15 @@ #include <gdk/gdkx.h> #include <gdk/gdkkeysyms.h> #include <stdlib.h> -#include <gtk/gtk.h> -#include <locale.h> -#include <libintl.h> -#include <math.h> #include <stdio.h> #include <string.h> #include <libosso.h> #include <glib.h> -#include <libgnomevfs/gnome-vfs.h> - #include <hildon-widgets/hildon-banner.h> #include <hildon-widgets/hildon-note.h> #include <hildon-widgets/hildon-defines.h> -#include <hildon-widgets/hildon-caption.h> -#include <hildon-widgets/hildon-color-button.h> #include <libhildonwm/hd-wm.h> @@ -94,11 +86,8 @@ { /* BackgroundManager *bg_manager;*/ - GtkWidget *align; - GtkWidget *titlebar; GtkWidget *applet_area; - GtkWidget *main_area; GtkWidget *layout_mode_banner; guint layout_mode_banner_to; @@ -744,6 +733,131 @@ g_free (user_filename); } +static void +hildon_home_window_size_allocate (GtkWidget *widget, + GtkAllocation *allocation) +{ + HildonHomeWindow *window; + HildonHomeWindowPrivate *priv; + GtkRequisition child_req; + GtkAllocation child_allocation = {0}; + + window = HILDON_HOME_WINDOW (widget); + priv = window->priv; + + widget->allocation = *allocation; + + if (!priv->work_area) + return; + + g_debug ("In size_allocate, work area is (%i,%i) %ix%i", + priv->work_area->x, + priv->work_area->y, + priv->work_area->width, + priv->work_area->height); + + + if (GTK_IS_WIDGET (priv->titlebar)) + { + gtk_widget_size_request (priv->titlebar, &child_req); + child_allocation.x = priv->work_area->x; + child_allocation.y = priv->work_area->y; + child_allocation.width = priv->work_area->width; + child_allocation.height = MIN (priv->work_area->height, child_req.height); + + g_debug ("Allocating (%i,%i) %ix%i to titlebar", + child_allocation.x, + child_allocation.y, + child_allocation.width, + child_allocation.height); + gtk_widget_size_allocate (priv->titlebar, &child_allocation); + } + + if (GTK_IS_WIDGET (priv->applet_area)) + { + child_allocation.y = child_allocation.height; + child_allocation.height = priv->work_area->height - + child_allocation.height; + + child_allocation.x = priv->work_area->x; + child_allocation.width = priv->work_area->width; + + g_debug ("Allocating (%i,%i) %ix%i to applet area", + child_allocation.x, + child_allocation.y, + child_allocation.width, + child_allocation.height); + gtk_widget_size_allocate (priv->applet_area, &child_allocation); + } +} + +static gint +hildon_home_window_expose (GtkWidget *widget, + GdkEventExpose *event) +{ + HildonHomeWindow *window; + HildonHomeWindowPrivate *priv; + + window = HILDON_HOME_WINDOW (widget); + priv = window->priv; + + g_debug ("Called hildon_home_window_expose"); + + if (GTK_IS_WIDGET (priv->applet_area)) + gtk_container_propagate_expose (GTK_CONTAINER (widget), + priv->applet_area, + event); + + if (GTK_IS_WIDGET (priv->titlebar)) + gtk_container_propagate_expose (GTK_CONTAINER (widget), + priv->titlebar, + event); + + + return TRUE; +} + +static void +hildon_home_window_map (GtkWidget *widget) +{ + HildonHomeWindow *window; + HildonHomeWindowPrivate *priv; + + window = HILDON_HOME_WINDOW (widget); + priv = window->priv; + + if (GTK_WIDGET_CLASS (hildon_home_window_parent_class)->map) + GTK_WIDGET_CLASS (hildon_home_window_parent_class)->map (widget); + + if (GTK_IS_WIDGET (priv->applet_area)) + gtk_widget_map (priv->applet_area); + + if (GTK_IS_WIDGET (priv->titlebar)) + gtk_widget_map (priv->titlebar); + +} + + + +static void +hildon_home_window_forall (GtkContainer *container, + gboolean include_internals, + GtkCallback callback, + gpointer callback_data) +{ + HildonHomeWindow *window; + HildonHomeWindowPrivate *priv; + + window = HILDON_HOME_WINDOW (container); + priv = window->priv; + + if (GTK_IS_WIDGET (priv->titlebar) && include_internals) + (* callback) (priv->titlebar, callback_data); + + if (GTK_IS_WIDGET (priv->applet_area)) + (* callback) (priv->applet_area, callback_data); +} + static GObject * hildon_home_window_constructor (GType gtype, guint n_params, @@ -753,8 +867,6 @@ HildonHomeWindow *window; HildonHomeWindowPrivate *priv; GtkWidget *widget; - GtkWidget *vbox; - GtkWidget *hbox; retval = G_OBJECT_CLASS (hildon_home_window_parent_class)->constructor (gtype, n_params, @@ -766,29 +878,7 @@ gtk_widget_set_app_paintable (widget, TRUE); gtk_widget_push_composite_child (); - - /* we push everything inside an alignment because we don't want - * to be hidden by the task navigator - */ - priv->align = gtk_alignment_new (0.0, 0.0, 1.0, 1.0); - gtk_alignment_set_padding (GTK_ALIGNMENT (priv->align), - 0, 0, /* top, bottom */ - HILDON_HOME_LEFT_PADDING, 0); - gtk_widget_set_composite_name (priv->align, "hildon-home-main-alignment"); - gtk_container_add (GTK_CONTAINER (window), priv->align); - gtk_widget_show (priv->align); - - vbox = gtk_vbox_new (FALSE, 0); - gtk_widget_set_composite_name (vbox, "hildon-home-main-vbox"); - gtk_container_add (GTK_CONTAINER (priv->align), vbox); - gtk_widget_show (vbox); - hbox = gtk_hbox_new (FALSE, 0); - gtk_widget_set_size_request (hbox, -1, HILDON_HOME_TOP_BAR_HEIGHT); - gtk_widget_set_composite_name (hbox, "hildon-home-top-bar"); - gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - gtk_widget_show (hbox); - priv->titlebar = hildon_home_titlebar_new (); gtk_widget_set_composite_name (priv->titlebar, "hildon-home-titlebar"); g_signal_connect (priv->titlebar, "select-applets-activate", @@ -806,17 +896,20 @@ g_signal_connect (priv->titlebar, "layout-cancel", G_CALLBACK (titlebar_layout_cancel_cb), window); - gtk_box_pack_start (GTK_BOX (hbox), priv->titlebar, TRUE, TRUE, 0); + g_object_ref (priv->titlebar); + gtk_object_sink (GTK_OBJECT (priv->titlebar)); + gtk_widget_set_parent (priv->titlebar, widget); gtk_widget_show (priv->titlebar); - priv->main_area = gtk_event_box_new (); - gtk_widget_set_composite_name (priv->main_area, "hildon-home-main-area"); - gtk_box_pack_end (GTK_BOX (vbox), priv->main_area, TRUE, TRUE, 0); - gtk_widget_show (priv->main_area); + priv->applet_area = hildon_home_area_new (); + + g_object_ref (priv->applet_area); + gtk_object_sink (GTK_OBJECT (priv->applet_area)); + gtk_widget_show (priv->applet_area); + gtk_widget_set_parent (priv->applet_area, widget); - priv->applet_area = hildon_home_area_new (); - gtk_container_add (GTK_CONTAINER(priv->main_area), priv->applet_area); HILDON_DESKTOP_WINDOW (window)->container = GTK_CONTAINER (priv->applet_area); + g_signal_connect (priv->applet_area, "layout-mode-start", G_CALLBACK (area_layout_mode_start), window); @@ -879,9 +972,10 @@ static void hildon_home_window_class_init (HildonHomeWindowClass *klass) { - GParamSpec *pspec; - 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); + GtkContainerClass *container_class = GTK_CONTAINER_CLASS (klass); gobject_class->constructor = hildon_home_window_constructor; gobject_class->set_property = hildon_home_window_set_property; @@ -890,7 +984,12 @@ widget_class->style_set = hildon_home_window_style_set; widget_class->key_press_event = hildon_home_window_key_press_event; + widget_class->size_allocate = hildon_home_window_size_allocate; + widget_class->expose_event = hildon_home_window_expose; + widget_class->map = hildon_home_window_map; + container_class->forall = hildon_home_window_forall; + klass->background = hildon_home_window_background; klass->lowmem = hildon_home_window_lowmem; klass->system_inactivity = hildon_home_window_system_inactivity; @@ -931,7 +1030,7 @@ pspec = g_param_spec_pointer ("work-area", "Work Area", "Work area available for desktop", - (G_PARAM_READABLE | G_PARAM_CONSTRUCT)); + G_PARAM_READWRITE); g_object_class_install_property (gobject_class, PROP_WORK_AREA, @@ -945,6 +1044,7 @@ { HildonHomeWindowPrivate *priv; GtkWidget *widget; + GdkRectangle work_area; HDWM *wm; gtk_window_set_has_frame (GTK_WINDOW (window), FALSE); @@ -959,6 +1059,12 @@ priv->is_dimmed = FALSE; wm = hd_wm_get_singleton (); + + hd_wm_get_work_area (wm, &work_area); + g_debug ("Got work_area"); + hildon_home_window_set_work_area (window, &work_area); + g_debug ("Work_area set"); + g_signal_connect_swapped (wm, "work-area-changed", G_CALLBACK (hildon_home_window_set_work_area), window); @@ -969,6 +1075,9 @@ GdkRectangle *work_area) { HildonHomeWindowPrivate *priv; + + g_debug ("hildon_home_window_set_work_area: window: %p, work_area: %p", + window, work_area); g_return_if_fail (HILDON_IS_HOME_WINDOW (window) && work_area); priv = window->priv; @@ -1010,15 +1119,6 @@ return window->priv->titlebar; } -GtkWidget * -hildon_home_window_get_main_area (HildonHomeWindow *window) -{ - g_return_val_if_fail (HILDON_IS_HOME_WINDOW (window), NULL); - - return window->priv->main_area; -} - - void hildon_home_window_show_information_note (HildonHomeWindow *window, const gchar *text) Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/hildon-home-window.h =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/hildon-home-window.h 2006-12-15 11:35:33 UTC (rev 8779) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/hildon-home-window.h 2006-12-15 12:41:49 UTC (rev 8780) @@ -62,7 +62,6 @@ GtkWidget *hildon_home_window_new (void); GtkWidget *hildon_home_window_get_titlebar (HildonHomeWindow *window); -GtkWidget *hildon_home_window_get_main_area (HildonHomeWindow *window); void hildon_home_window_show_information_note(HildonHomeWindow *window, const gchar *text); 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-15 11:35:33 UTC (rev 8779) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm.c 2006-12-15 12:41:49 UTC (rev 8780) @@ -1875,30 +1875,10 @@ else if (prop->atom == hdwm->priv->atoms[HD_ATOM_NET_WORKAREA]) { - int *work_area_data; + GdkRectangle work_area; - 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); - } + hd_wm_get_work_area (hdwm, &work_area); + g_signal_emit_by_name (hdwm, "work-area-changed", &work_area); } else if (prop->atom == hdwm->priv->atoms[HD_ATOM_NET_SHOWING_DESKTOP]) @@ -2521,3 +2501,27 @@ } } +void +hd_wm_get_work_area (HDWM *hdwm, GdkRectangle *work_area) +{ + 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) + { + work_area->x = work_area_data[0]; + work_area->y = work_area_data[1]; + work_area->width = work_area_data[2]; + work_area->height = work_area_data[3]; + + XFree (work_area_data); + } +} 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-15 11:35:33 UTC (rev 8779) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm.h 2006-12-15 12:41:49 UTC (rev 8780) @@ -237,6 +237,9 @@ gboolean hd_wm_fullscreen_mode (void); +void +hd_wm_get_work_area (HDWM *hdwm, GdkRectangle *work_area); + /* * These are simple getters/setters that replace direct use of global * hnwm->something. In order to ensure that we do not incure performance
- Previous message: [maemo-commits] r8779 - in projects/haf/trunk/maemo-af-desktop: . hildon-navigator
- Next message: [maemo-commits] r8781 - in projects/haf/branches/gtk+/maemo-gtk-2-10: . gtk
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]