[maemo-commits] [maemo-commits] r10724 - in projects/haf/trunk/hildon-desktop: . libhildonwm src

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Thu Mar 22 17:59:55 EET 2007
Author: moimart
Date: 2007-03-22 17:59:55 +0200 (Thu, 22 Mar 2007)
New Revision: 10724

Modified:
   projects/haf/trunk/hildon-desktop/ChangeLog
   projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm.c
   projects/haf/trunk/hildon-desktop/src/hn-app-switcher.c
Log:

	* src/hn-app-switcher.c: Implemented navigation throw swap-key.
        * libhildonwm/hd-wm.c: Send signal when long key press.
	* ChangeLog updated.



Modified: projects/haf/trunk/hildon-desktop/ChangeLog
===================================================================
--- projects/haf/trunk/hildon-desktop/ChangeLog	2007-03-22 15:23:17 UTC (rev 10723)
+++ projects/haf/trunk/hildon-desktop/ChangeLog	2007-03-22 15:59:55 UTC (rev 10724)
@@ -1,3 +1,8 @@
+2007-03-22  Moises Martinez  <moises.martinez at nokia.com>
+
+	* src/hn-app-switcher.c: Implemented navigation throw swap-key.
+	* libhildonwm/hd-wm.c: Send signal when long key press.
+
 2007-03-22  Johan Bilien  <johan.bilien at nokia.com>
 
 	* configure.ac: retrieve home, statusbar and home directories

Modified: projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm.c
===================================================================
--- projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm.c	2007-03-22 15:23:17 UTC (rev 10723)
+++ projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm.c	2007-03-22 15:59:55 UTC (rev 10724)
@@ -122,6 +122,7 @@
   HDWM_ENTRY_INFO_STACK_CHANGED_SIGNAL,
   HDWM_WORK_AREA_CHANGED_SIGNAL,
   HDWM_SHOW_A_MENU_SIGNAL,
+  HDWM_LONG_PRESS_KEY,
   HDWM_APPLICATION_STARTING_SIGNAL,
   HDWM_FULLSCREEN,
   HDWM_CLOSE_APP,
@@ -749,6 +750,8 @@
 {
   const gchar *member;
 
+  HDWM *hdwm = HD_WM (data);
+
   g_debug ("processing MCE");
   
   if (dbus_message_get_type (msg) != DBUS_MESSAGE_TYPE_SIGNAL)
@@ -760,7 +763,7 @@
 
   if (strcmp (HOME_LONG_PRESS, member) == 0 && !hd_wm_modal_windows_present())
   {
-    hd_wm_toggle_desktop ();
+    g_signal_emit_by_name (hdwm, "long-key-press");
       
     return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
   }
@@ -861,6 +864,15 @@
 		     NULL, NULL,
 		     g_cclosure_marshal_VOID__VOID,
 		     G_TYPE_NONE, 0);
+
+  hdwm_signals[HDWM_LONG_PRESS_KEY] = 
+	g_signal_new("long-key-press",
+		     G_OBJECT_CLASS_TYPE(object_class),
+		     G_SIGNAL_RUN_LAST,
+		     0,
+		     NULL, NULL,
+		     g_cclosure_marshal_VOID__VOID,
+		     G_TYPE_NONE, 0);
   
   hdwm_signals[HDWM_APPLICATION_STARTING_SIGNAL] = 
 	g_signal_new("application_starting",

Modified: projects/haf/trunk/hildon-desktop/src/hn-app-switcher.c
===================================================================
--- projects/haf/trunk/hildon-desktop/src/hn-app-switcher.c	2007-03-22 15:23:17 UTC (rev 10723)
+++ projects/haf/trunk/hildon-desktop/src/hn-app-switcher.c	2007-03-22 15:59:55 UTC (rev 10724)
@@ -162,7 +162,7 @@
 static void
 queue_refresh_buttons (HNAppSwitcher *app_switcher);
 
-	static gboolean 
+static gboolean 
 hn_app_switcher_close_application_dialog (HDWM *hdwm, HDWMCADAction action, GList *items);
 
 /*
@@ -302,11 +302,33 @@
  if (gtk_toggle_button_get_active 
       (GTK_TOGGLE_BUTTON (app_switcher->priv->main_button)))
  {
-   gtk_toggle_button_set_active
-     (GTK_TOGGLE_BUTTON (app_switcher->priv->main_button), FALSE);
+   GList *l,*children = gtk_container_get_children (GTK_CONTAINER (app_switcher->priv->main_menu));
+   
+   for (l = children; l; l = g_list_next (l))
+   {
+      if (l->data == app_switcher->priv->active_menu_item &&
+	  l->data != app_switcher->priv->main_home_item)
+      {
+        GtkWidget *item;
+	      
+        if ((l->next)->data)
+          item = GTK_WIDGET ((l->next)->data);        		
+	else
+	  item = app_switcher->priv->main_home_item;
+
+	app_switcher->priv->active_menu_item = item;
+	
+        gtk_menu_shell_select_item (GTK_MENU_SHELL (app_switcher->priv->main_menu), item);	      
+      }
+      else 
+      if (l->data == app_switcher->priv->main_home_item)
+	gtk_menu_shell_select_item (GTK_MENU_SHELL (app_switcher->priv->main_menu), 
+			            GTK_WIDGET (children->data));
+   }	
+	 
    return;
  }
-
+ 
  gtk_toggle_button_set_active 
    (GTK_TOGGLE_BUTTON (app_switcher->priv->main_button), TRUE);
  
@@ -1096,6 +1118,19 @@
   g_list_free (children);
 }
 
+static void 
+hn_app_switcher_long_press_cb (HDWM *hdwm, HNAppSwitcher *app_switcher)
+{
+  if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (app_switcher->priv->main_button)))
+  {
+    gtk_menu_shell_activate_item (GTK_MENU_SHELL (app_switcher->priv->main_menu),
+		  		  app_switcher->priv->active_menu_item,
+				  TRUE);  
+  }
+  else
+    hd_wm_top_desktop ();  
+}
+
 static GtkWidget *
 create_app_button (HNAppSwitcher *app_switcher,
 	           gint           pos)
@@ -1206,6 +1241,11 @@
 		    (gpointer)app_switcher);
 
   g_signal_connect (app_switcher->hdwm,
+		    "long-press-key",
+		    G_CALLBACK (hn_app_switcher_long_press_cb),
+		    (gpointer)app_switcher);
+
+  g_signal_connect (app_switcher->hdwm,
 		    "close-app",
 		    G_CALLBACK (hn_app_switcher_close_application_dialog),
 		    NULL);


More information about the maemo-commits mailing list