]> Pileus Git - ~andy/gtk/commitdiff
Remove the "select first item if popped up from keypress" hack -- was
authorOwen Taylor <otaylor@redhat.com>
Sat, 2 Feb 2002 17:52:01 +0000 (17:52 +0000)
committerOwen Taylor <otaylor@src.gnome.org>
Sat, 2 Feb 2002 17:52:01 +0000 (17:52 +0000)
Sat Feb  2 11:37:21 2002  Owen Taylor  <otaylor@redhat.com>

        * gtk/gtkmenu.c (gtk_menu_popup): Remove the
        "select first item if popped up from keypress" hack --
        was causing more problems than it was worth
        (#53191, #68483)

        * gtk/gtktextview.c (popup_targets_received):
         gtk/gtkentry.c (popup_targets_received): If activated
        from keyboard, select first item of popup menu.

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkentry.c
gtk/gtkmenu.c
gtk/gtktextview.c

index 5315a4c9cf0a0b255a99fc1b640573822a720635..0f2c36310c1ba3933379446824c63d2ed3d1dfd0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+Sat Feb  2 11:37:21 2002  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkmenu.c (gtk_menu_popup): Remove the 
+       "select first item if popped up from keypress" hack --
+       was causing more problems than it was worth 
+       (#53191, #68483)
+
+       * gtk/gtktextview.c (popup_targets_received): 
+        gtk/gtkentry.c (popup_targets_received): If activated
+       from keyboard, select first item of popup menu.
+
 Sat Feb  2 18:07:51 2002  Kristian Rietveld  <kris@gtk.org>
 
        * gtk/gtktreeview.c (gtk_tree_view_size_allocate): set upper member
index 5315a4c9cf0a0b255a99fc1b640573822a720635..0f2c36310c1ba3933379446824c63d2ed3d1dfd0 100644 (file)
@@ -1,3 +1,14 @@
+Sat Feb  2 11:37:21 2002  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkmenu.c (gtk_menu_popup): Remove the 
+       "select first item if popped up from keypress" hack --
+       was causing more problems than it was worth 
+       (#53191, #68483)
+
+       * gtk/gtktextview.c (popup_targets_received): 
+        gtk/gtkentry.c (popup_targets_received): If activated
+       from keyboard, select first item of popup menu.
+
 Sat Feb  2 18:07:51 2002  Kristian Rietveld  <kris@gtk.org>
 
        * gtk/gtktreeview.c (gtk_tree_view_size_allocate): set upper member
index 5315a4c9cf0a0b255a99fc1b640573822a720635..0f2c36310c1ba3933379446824c63d2ed3d1dfd0 100644 (file)
@@ -1,3 +1,14 @@
+Sat Feb  2 11:37:21 2002  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkmenu.c (gtk_menu_popup): Remove the 
+       "select first item if popped up from keypress" hack --
+       was causing more problems than it was worth 
+       (#53191, #68483)
+
+       * gtk/gtktextview.c (popup_targets_received): 
+        gtk/gtkentry.c (popup_targets_received): If activated
+       from keyboard, select first item of popup menu.
+
 Sat Feb  2 18:07:51 2002  Kristian Rietveld  <kris@gtk.org>
 
        * gtk/gtktreeview.c (gtk_tree_view_size_allocate): set upper member
index 5315a4c9cf0a0b255a99fc1b640573822a720635..0f2c36310c1ba3933379446824c63d2ed3d1dfd0 100644 (file)
@@ -1,3 +1,14 @@
+Sat Feb  2 11:37:21 2002  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkmenu.c (gtk_menu_popup): Remove the 
+       "select first item if popped up from keypress" hack --
+       was causing more problems than it was worth 
+       (#53191, #68483)
+
+       * gtk/gtktextview.c (popup_targets_received): 
+        gtk/gtkentry.c (popup_targets_received): If activated
+       from keyboard, select first item of popup menu.
+
 Sat Feb  2 18:07:51 2002  Kristian Rietveld  <kris@gtk.org>
 
        * gtk/gtktreeview.c (gtk_tree_view_size_allocate): set upper member
index 5315a4c9cf0a0b255a99fc1b640573822a720635..0f2c36310c1ba3933379446824c63d2ed3d1dfd0 100644 (file)
@@ -1,3 +1,14 @@
+Sat Feb  2 11:37:21 2002  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkmenu.c (gtk_menu_popup): Remove the 
+       "select first item if popped up from keypress" hack --
+       was causing more problems than it was worth 
+       (#53191, #68483)
+
+       * gtk/gtktextview.c (popup_targets_received): 
+        gtk/gtkentry.c (popup_targets_received): If activated
+       from keyboard, select first item of popup menu.
+
 Sat Feb  2 18:07:51 2002  Kristian Rietveld  <kris@gtk.org>
 
        * gtk/gtktreeview.c (gtk_tree_view_size_allocate): set upper member
index 5315a4c9cf0a0b255a99fc1b640573822a720635..0f2c36310c1ba3933379446824c63d2ed3d1dfd0 100644 (file)
@@ -1,3 +1,14 @@
+Sat Feb  2 11:37:21 2002  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkmenu.c (gtk_menu_popup): Remove the 
+       "select first item if popped up from keypress" hack --
+       was causing more problems than it was worth 
+       (#53191, #68483)
+
+       * gtk/gtktextview.c (popup_targets_received): 
+        gtk/gtkentry.c (popup_targets_received): If activated
+       from keyboard, select first item of popup menu.
+
 Sat Feb  2 18:07:51 2002  Kristian Rietveld  <kris@gtk.org>
 
        * gtk/gtktreeview.c (gtk_tree_view_size_allocate): set upper member
index 5315a4c9cf0a0b255a99fc1b640573822a720635..0f2c36310c1ba3933379446824c63d2ed3d1dfd0 100644 (file)
@@ -1,3 +1,14 @@
+Sat Feb  2 11:37:21 2002  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkmenu.c (gtk_menu_popup): Remove the 
+       "select first item if popped up from keypress" hack --
+       was causing more problems than it was worth 
+       (#53191, #68483)
+
+       * gtk/gtktextview.c (popup_targets_received): 
+        gtk/gtkentry.c (popup_targets_received): If activated
+       from keyboard, select first item of popup menu.
+
 Sat Feb  2 18:07:51 2002  Kristian Rietveld  <kris@gtk.org>
 
        * gtk/gtktreeview.c (gtk_tree_view_size_allocate): set upper member
index 1083a37cc97ad9a5dfe8a9033eb8bd3be6e32d1e..d9bf421f3d5941fe3dd2c864e0cf3e40640f33a4 100644 (file)
@@ -3812,6 +3812,28 @@ unichar_chosen_func (const char *text,
   gtk_entry_enter_text (entry, text);
 }
 
+static void
+menu_select_first_child (GtkMenu *menu)
+{
+  GList *children = gtk_container_get_children (GTK_CONTAINER (menu));
+
+  GList *tmp_list = children;
+  while (tmp_list)
+    {
+      GtkWidget *child = tmp_list->data;
+      
+      if (GTK_WIDGET_VISIBLE (child))
+       {
+         gtk_menu_shell_select_item (GTK_MENU_SHELL (menu), child);
+         break;
+       }
+      
+      tmp_list = tmp_list->next;
+    }
+
+  g_list_free (children);
+}
+
 typedef struct
 {
   GtkEntry *entry;
@@ -3892,9 +3914,12 @@ popup_targets_received (GtkClipboard     *clipboard,
                        NULL, NULL,
                        info->button, info->time);
       else
-       gtk_menu_popup (GTK_MENU (entry->popup_menu), NULL, NULL,
-                       popup_position_func, entry,
-                       info->button, info->time);
+       {
+         gtk_menu_popup (GTK_MENU (entry->popup_menu), NULL, NULL,
+                         popup_position_func, entry,
+                         info->button, info->time);
+         menu_select_first_child (GTK_MENU (entry->popup_menu));
+       }
     }
 
   g_object_unref (entry);
index 5d8a4efc944b113f125b325adaf7ea6d91f11dfc..e0d69a4aae503423bf37f1d18475d11683032f59 100644 (file)
@@ -652,22 +652,6 @@ gtk_menu_popup (GtkMenu                *menu,
   gtk_widget_show (GTK_WIDGET (menu));
   gtk_widget_show (menu->toplevel);
 
-  if (current_event)
-    {
-      /* Also, if we're popping up from a key event, select the first
-       * item in the menu. Bad hack, but no better way to do it
-       * in current menu framework.
-       */
-      if (current_event->type == GDK_KEY_PRESS &&
-          GTK_MENU_SHELL (menu)->children)
-        {
-          gtk_menu_shell_select_item (GTK_MENU_SHELL (menu),
-                                      GTK_MENU_SHELL (menu)->children->data);
-        }
-      
-      gdk_event_free (current_event);
-    }
-  
   gtk_menu_scroll_to (menu, menu->scroll_offset);
 
   /* Find the last viewable ancestor, and make an X grab on it
index dc8d04a8e33b2aecb2ce6dfb10bb328139407c2e..d834db973bb96471f4836fb93d3edd8f1ca39a13 100644 (file)
@@ -6273,6 +6273,28 @@ unichar_chosen_func (const char *text,
   gtk_text_view_commit_text (text_view, text);
 }
 
+static void
+menu_select_first_child (GtkMenu *menu)
+{
+  GList *children = gtk_container_get_children (GTK_CONTAINER (menu));
+
+  GList *tmp_list = children;
+  while (tmp_list)
+    {
+      GtkWidget *child = tmp_list->data;
+      
+      if (GTK_WIDGET_VISIBLE (child))
+       {
+         gtk_menu_shell_select_item (GTK_MENU_SHELL (menu), child);
+         break;
+       }
+      
+      tmp_list = tmp_list->next;
+    }
+
+  g_list_free (children);
+}
+
 static void
 popup_targets_received (GtkClipboard     *clipboard,
                        GtkSelectionData *data,
@@ -6355,9 +6377,12 @@ popup_targets_received (GtkClipboard     *clipboard,
                        NULL, NULL,
                        info->button, info->time);
       else
-       gtk_menu_popup (GTK_MENU (text_view->popup_menu), NULL, NULL,
-                       popup_position_func, text_view,
-                       0, gtk_get_current_event_time ());
+       {
+         gtk_menu_popup (GTK_MENU (text_view->popup_menu), NULL, NULL,
+                         popup_position_func, text_view,
+                         0, gtk_get_current_event_time ());
+         menu_select_first_child (GTK_MENU (text_view->popup_menu));
+       }
     }
 
   g_object_unref (text_view);