[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.org
Date: Thu Dec 7 17:07:07 EET 2006
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);


More information about the maemo-commits mailing list