r161 - trunk/src/target/OM-2007/libraries/mokoui

mickey at gta01.hmw-consulting.de mickey at gta01.hmw-consulting.de
Tue Oct 31 02:23:53 CET 2006


Author: mickey
Date: 2006-10-31 01:23:53 +0000 (Tue, 31 Oct 2006)
New Revision: 161

Modified:
   trunk/src/target/OM-2007/libraries/mokoui/moko-menubox.c
Log:
mokoui: menu forwarder (again, *sigh*)


Modified: trunk/src/target/OM-2007/libraries/mokoui/moko-menubox.c
===================================================================
--- trunk/src/target/OM-2007/libraries/mokoui/moko-menubox.c	2006-10-31 00:59:57 UTC (rev 160)
+++ trunk/src/target/OM-2007/libraries/mokoui/moko-menubox.c	2006-10-31 01:23:53 UTC (rev 161)
@@ -113,36 +113,45 @@
 static gboolean cb_button_release(GtkWidget *widget, GdkEventButton *event, GtkMenu* menu)
 {
     g_debug( "menu open forwarder activated on widget '%s'...", gtk_widget_get_name(widget) );
+    //g_debug( "relative clicked on %f, %f", event->x, event->y );
 
     //FIXME works only with one menu per menubar
+    GtkAllocation* my_a = &widget->allocation;
+    g_debug( "my allocate is %d, %d * %d, %d", my_a->x, my_a->y, my_a->width, my_a->height );
+
+    gint relx = event->x + my_a->x;
+    gint rely = event->y + my_a->y;
+    g_debug( "clicked on %d, %d", relx, rely );
+
     GList* children = gtk_container_get_children( GTK_CONTAINER(widget) );
     GtkAllocation* a = &GTK_WIDGET(children->data)->allocation;
-    g_debug( "allocate is %d, %d * %d, %d", a->x, a->y, a->width, a->height );
+    g_debug( "menu-allocate is %d, %d * %d, %d", a->x, a->y, a->width, a->height );
 
-    if ( event->x >= a->x && event->x <= (a->x+a->width) &&
-         event->y >= a->y && event->y <= (a->y+a->height) )
+    if ( relx >= my_a->x + a->x && relx <= (my_a->x + a->x+a->width) &&
+         rely >= my_a->y + a->y && rely <= (my_a->y + a->y+a->height) )
     {
         g_debug( "INSIDE ITEM" );
         return FALSE;
     }
-    else
+    if ( relx >= my_a->x && relx <= (my_a->x+my_a->width) &&
+         rely >= my_a->y && rely <= (my_a->y+my_a->height) )
     {
-        g_debug( "OUTSIDE ITEM" );
-    }
+        g_debug( "INSIDE MENUBOX" );
 
-    g_debug( "clicked on %f, %f", event->x, event->y );
-
-    if ( !GTK_WIDGET_VISIBLE(menu) )
-    {
-        g_debug( "menu open forwarder: not yet open -- popping up" );
-        gtk_menu_shell_select_first( GTK_MENU_SHELL(widget), FALSE );
-        return TRUE;
+        if ( !GTK_WIDGET_VISIBLE(menu) )
+        {
+            g_debug( "menu open forwarder: not yet open -- popping up" );
+            gtk_menu_shell_select_first( GTK_MENU_SHELL(widget), FALSE );
+            return TRUE;
+        }
+        {
+            g_debug( "menu open forwarder: already open -- ignoring" );
+            gtk_menu_popdown( menu );
+            return FALSE;
+        }
     }
-    {
-        g_debug( "menu open forwarder: already open -- ignoring" );
-        gtk_menu_popdown( menu );
-        return FALSE;
-    }
+    g_debug( "Jenseits von Gut und Böse..." );
+    return TRUE;
 }
 
 static void cb_filter_menu_update( GtkMenu* menu, MokoMenuBox* self )





More information about the commitlog mailing list