[maemo-commits] [maemo-commits] r9204 - in projects/haf/trunk/maemo-af-desktop: . hildon-status-bar

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Mon Jan 22 10:03:06 EET 2007
Author: jobi
Date: 2007-01-22 10:03:05 +0200 (Mon, 22 Jan 2007)
New Revision: 9204

Modified:
   projects/haf/trunk/maemo-af-desktop/ChangeLog
   projects/haf/trunk/maemo-af-desktop/hildon-status-bar/hildon-status-bar-main.c
   projects/haf/trunk/maemo-af-desktop/hildon-status-bar/hildon-status-bar-main.h
Log:

2007-01-22  Johan Bilien <johan.bilien at nokia.com>

	* hildon-status-bar/hildon-status-bar-main.c: Added
	optional parent window id parameter to the show delayed
	info banner RPC call



Modified: projects/haf/trunk/maemo-af-desktop/ChangeLog
===================================================================
--- projects/haf/trunk/maemo-af-desktop/ChangeLog	2007-01-19 15:44:52 UTC (rev 9203)
+++ projects/haf/trunk/maemo-af-desktop/ChangeLog	2007-01-22 08:03:05 UTC (rev 9204)
@@ -1,3 +1,9 @@
+2007-01-22  Johan Bilien <johan.bilien at nokia.com>
+
+	* hildon-status-bar/hildon-status-bar-main.c: Added
+	optional parent window id parameter to the show delayed
+	info banner RPC call
+
 2007-01-19  Moises Martinez <moises.martinez at nokia.com>
 
 	* hildon-navigator/hildon-navigator-panel.c:

Modified: projects/haf/trunk/maemo-af-desktop/hildon-status-bar/hildon-status-bar-main.c
===================================================================
--- projects/haf/trunk/maemo-af-desktop/hildon-status-bar/hildon-status-bar-main.c	2007-01-19 15:44:52 UTC (rev 9203)
+++ projects/haf/trunk/maemo-af-desktop/hildon-status-bar/hildon-status-bar-main.c	2007-01-22 08:03:05 UTC (rev 9204)
@@ -75,7 +75,8 @@
 static gint _delayed_infobanner_add(gint32 pid, 
 		                    gint32 begin, 
 				    gint32 timeout, 
-				    const gchar *text);
+				    const gchar *text,
+                    gint32 parent_window_id);
 gboolean _delayed_infobanner_remove(gpointer data);
 gboolean _delayed_ib_show(gpointer data);
 void _remove_sb_d_ib_item (gpointer key, gpointer value, gpointer user_data);
@@ -1071,13 +1072,15 @@
     /* Check the method delayed infobanner */    
     else if( g_str_equal( "delayed_infobanner", method ) )
     {  
+        gint parent_window_id = 0;
+
         if( arguments->len < 4 ||
 	    arguments->len > 5 ||
             val[0]->type != DBUS_TYPE_INT32 ||
             val[1]->type != DBUS_TYPE_INT32 ||
             val[2]->type != DBUS_TYPE_INT32 ||
-            val[3]->type != DBUS_TYPE_STRING ) 
-            /* (arguments->len == 5 && val[5]->type != DBUS_TYPE_NIL) )*/
+            val[3]->type != DBUS_TYPE_STRING ||
+            (arguments->len == 5 && val[5]->type != DBUS_TYPE_INT32) )
 	  {
             if( arguments->len < 4 ) {
                 retval->value.s = "Not enough arguments.";
@@ -1094,11 +1097,16 @@
 	    
 	    return OSSO_ERROR;
 	  }
+
+      if (arguments->len == 5)
+        parent_window_id = val[4]->value.i;
+
 	
-	return _delayed_infobanner_add(val[0]->value.i,
+	  return _delayed_infobanner_add(val[0]->value.i,
 				       val[1]->value.i,
 				       val[2]->value.i,
-				       val[3]->value.s
+				       val[3]->value.s,
+                       parent_window_id
 				       );
     }
     /* Check the method cancel delayed infobanner */
@@ -1489,7 +1497,8 @@
 gint _delayed_infobanner_add(gint32 pid, 
 		             gint32 begin, 
 			     gint32 timeout, 
-			     const gchar *text)
+			     const gchar *text,
+                 gint32 parent_window_id)
 {
     SBDelayedInfobanner *data;
   
@@ -1508,6 +1517,7 @@
     data->timeout_to_show_id = g_timeout_add( (guint) begin,
                         _delayed_ib_show,
                         GINT_TO_POINTER(pid));
+    data->parent_window_id = parent_window_id;
     
     g_hash_table_insert(delayed_banners, GINT_TO_POINTER(pid), data);
     
@@ -1546,6 +1556,14 @@
     info->timeout_to_show_id = 0;
      
     info->banner = hildon_banner_show_animation( NULL, NULL, info->text );
+    if (info->parent_window_id) {
+        GdkWindow *parent_window = gdk_window_foreign_new (info->parent_window_id);
+        if (parent_window) {
+            gdk_window_set_transient_for (info->banner->window, parent_window);
+            gdk_window_destroy (parent_window);
+        }
+    }
+
     info->timeout_onscreen_id = g_timeout_add(
                        (guint)info->displaytime,
                        _delayed_infobanner_remove,

Modified: projects/haf/trunk/maemo-af-desktop/hildon-status-bar/hildon-status-bar-main.h
===================================================================
--- projects/haf/trunk/maemo-af-desktop/hildon-status-bar/hildon-status-bar-main.h	2007-01-19 15:44:52 UTC (rev 9203)
+++ projects/haf/trunk/maemo-af-desktop/hildon-status-bar/hildon-status-bar-main.h	2007-01-22 08:03:05 UTC (rev 9204)
@@ -129,6 +129,7 @@
   gchar *text;
   guint timeout_to_show_id;
   guint timeout_onscreen_id;
+  gint32 parent_window_id;
   GtkWidget *banner;
 };
 


More information about the maemo-commits mailing list