[Fedora-directory-commits] esc/src/app/xpcom/tray rhLinuxTray.cpp, 1.4, 1.5 rhTray.h, 1.4, 1.5

Jack Magne (jmagne) fedora-directory-commits at redhat.com
Mon May 7 23:46:46 UTC 2007


Author: jmagne

Update of /cvs/dirsec/esc/src/app/xpcom/tray
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv480

Modified Files:
	rhLinuxTray.cpp rhTray.h 
Log Message:
Latest bug fixes.


Index: rhLinuxTray.cpp
===================================================================
RCS file: /cvs/dirsec/esc/src/app/xpcom/tray/rhLinuxTray.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- rhLinuxTray.cpp	24 Feb 2007 02:02:37 -0000	1.4
+++ rhLinuxTray.cpp	7 May 2007 23:46:43 -0000	1.5
@@ -22,11 +22,13 @@
 #include <prlog.h>
 #include "notifytray.h"
 #include "intl/nsIStringBundle.h"
+#include <gdk/gdkx.h>
 
 NS_IMPL_ISUPPORTS1(rhTray, rhITray)
 
 GtkWidget* rhTray::mWnd = NULL;
 GtkWidget* rhTray::mIconMenu = NULL;
+GtkWidget* rhTray::mIconBoxWidget = NULL;
 
 int rhTray::mInitialized = 0;
 
@@ -37,6 +39,44 @@
 
 static PRLogModuleInfo *trayLog = PR_NewLogModule("tray");
 
+static void popup_position(GtkMenu *menu,
+                                       gint *x,
+                                       gint *y,
+                                       gboolean *push_in,
+                                       gpointer user_data)
+{
+
+  char tBuff[56];
+  GtkWidget *icon_box_widget = GTK_WIDGET(user_data);
+
+  if(icon_box_widget)
+  {
+     GdkWindow* window = icon_box_widget->window;
+
+     gint width;
+     gint height;
+
+     gint px;
+     gint py;
+
+     gdk_drawable_get_size(window,&width,&height);
+
+     gdk_window_get_position(window,
+                                     &px,
+                                     &py);
+
+    PR_LOG( trayLog, PR_LOG_DEBUG, ("%s popup_position width %d height %d  px %d py %d \n",GetTStamp(tBuff,56),width,height,px,py));
+
+
+     gint x_coord = px;
+     gint y_coord = (py + height);
+
+     *x = x_coord;
+     *y = y_coord; 
+
+  }
+
+}
 
 rhTray::rhTray() 
 {
@@ -232,11 +272,12 @@
        return E_FAIL;
     }
     
-    GtkWidget *icon_widget = notify_icon_get_box_widget();
+    mIconBoxWidget = notify_icon_get_box_widget();
 
-    if(icon_widget)
+    if(mIconBoxWidget)
     {
-        g_signal_connect(G_OBJECT(icon_widget), "button-press-event", G_CALLBACK(rhTray::IconCBProc), NULL);
+        g_signal_connect(G_OBJECT(mIconBoxWidget), "button-press-event", G_CALLBACK(rhTray::IconCBProc), NULL);
+
     }
 
     res = CreateEventWindow();
@@ -352,11 +393,23 @@
 
     GtkWidget *min_item = gtk_menu_item_new_with_label ("Hide");
     GtkWidget *max_item = gtk_menu_item_new_with_label ("Manage Keys");
-    GtkWidget *exit_item = gtk_menu_item_new_with_label ("Exit");
+    GtkWidget *exit_item = gtk_image_menu_item_new_with_label ("Exit");
 
-    gtk_menu_shell_append (GTK_MENU_SHELL (mIconMenu), max_item);
+    GtkWidget* quit_icon = gtk_image_new_from_stock(GTK_STOCK_QUIT,GTK_ICON_SIZE_SMALL_TOOLBAR);
+
+    if(max_item)
+       gtk_menu_shell_append (GTK_MENU_SHELL (mIconMenu), max_item);
     //gtk_menu_shell_append (GTK_MENU_SHELL (mIconMenu), min_item);
-    gtk_menu_shell_append (GTK_MENU_SHELL (mIconMenu), exit_item);
+    if(exit_item)
+    {
+        gtk_menu_shell_append (GTK_MENU_SHELL (mIconMenu), exit_item);
+
+        if(quit_icon)
+        {
+           gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(exit_item), quit_icon);
+
+        }
+    }
 
     g_signal_connect(G_OBJECT (min_item), "activate",
                               G_CALLBACK (rhTray::IconMenuCBProc),
@@ -404,8 +457,8 @@
                 gtk_menu_popup(GTK_MENU(mIconMenu),
                                              NULL,
                                              NULL,
-                                             NULL,
-                                             NULL,
+                        (GtkMenuPositionFunc) popup_position,
+                                              mIconBoxWidget,
                                              event->button,
                                              event->time);
 
@@ -725,6 +778,7 @@
 
          if(widget->window)
          {
+             gdk_x11_window_set_user_time (widget->window, gdk_x11_get_server_time (widget->window));
              if(GTK_WIDGET_VISIBLE(mWnd))
              {
                  gdk_window_show(widget->window);


Index: rhTray.h
===================================================================
RCS file: /cvs/dirsec/esc/src/app/xpcom/tray/rhTray.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- rhTray.h	24 Feb 2007 02:06:23 -0000	1.4
+++ rhTray.h	7 May 2007 23:46:43 -0000	1.5
@@ -263,6 +263,7 @@
   // Icon menu related
 
     static GtkWidget *mIconMenu;
+    static GtkWidget *mIconBoxWidget;
     static void IconMenuCBProc(GtkWidget *widget, gpointer data);
     HRESULT CreateIconMenu();     
 




More information about the Fedora-directory-commits mailing list