]> Pileus Git - ~andy/gtk/commitdiff
Fix warning.
authorOwen Taylor <otaylor@redhat.com>
Wed, 13 Nov 2002 21:47:11 +0000 (21:47 +0000)
committerOwen Taylor <otaylor@src.gnome.org>
Wed, 13 Nov 2002 21:47:11 +0000 (21:47 +0000)
Wed Nov 13 15:52:53 2002  Owen Taylor  <otaylor@redhat.com>

        * gtk/gtkcombo.c (gtk_combo_activate): Fix warning.

        * gtk/gtkcombo.c: Fix code that was meant to delay
        grabbing events on the list until we had an enter-notify.
        (#54353, reported by Mike Fulbright, others)

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkcombo.c

index 8c8dd8f9af93a36671252ab0fcd853b59dcb4c2f..185f2517e008f0abc1a29a32cb4dc94ea23c4836 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Wed Nov 13 15:52:53 2002  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkcombo.c (gtk_combo_activate): Fix warning.
+       
+       * gtk/gtkcombo.c: Fix code that was meant to delay
+       grabbing events on the list until we had an enter-notify.
+       (#54353, reported by Mike Fulbright, others)
+
 2002-11-13  Matthias Clasen  <maclas@gmx.de>
 
        * gtk/theme-bits/decompose-bits.c (do_part): Add a const here.
index 8c8dd8f9af93a36671252ab0fcd853b59dcb4c2f..185f2517e008f0abc1a29a32cb4dc94ea23c4836 100644 (file)
@@ -1,3 +1,11 @@
+Wed Nov 13 15:52:53 2002  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkcombo.c (gtk_combo_activate): Fix warning.
+       
+       * gtk/gtkcombo.c: Fix code that was meant to delay
+       grabbing events on the list until we had an enter-notify.
+       (#54353, reported by Mike Fulbright, others)
+
 2002-11-13  Matthias Clasen  <maclas@gmx.de>
 
        * gtk/theme-bits/decompose-bits.c (do_part): Add a const here.
index 8c8dd8f9af93a36671252ab0fcd853b59dcb4c2f..185f2517e008f0abc1a29a32cb4dc94ea23c4836 100644 (file)
@@ -1,3 +1,11 @@
+Wed Nov 13 15:52:53 2002  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkcombo.c (gtk_combo_activate): Fix warning.
+       
+       * gtk/gtkcombo.c: Fix code that was meant to delay
+       grabbing events on the list until we had an enter-notify.
+       (#54353, reported by Mike Fulbright, others)
+
 2002-11-13  Matthias Clasen  <maclas@gmx.de>
 
        * gtk/theme-bits/decompose-bits.c (do_part): Add a const here.
index 8c8dd8f9af93a36671252ab0fcd853b59dcb4c2f..185f2517e008f0abc1a29a32cb4dc94ea23c4836 100644 (file)
@@ -1,3 +1,11 @@
+Wed Nov 13 15:52:53 2002  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkcombo.c (gtk_combo_activate): Fix warning.
+       
+       * gtk/gtkcombo.c: Fix code that was meant to delay
+       grabbing events on the list until we had an enter-notify.
+       (#54353, reported by Mike Fulbright, others)
+
 2002-11-13  Matthias Clasen  <maclas@gmx.de>
 
        * gtk/theme-bits/decompose-bits.c (do_part): Add a const here.
index 8c8dd8f9af93a36671252ab0fcd853b59dcb4c2f..185f2517e008f0abc1a29a32cb4dc94ea23c4836 100644 (file)
@@ -1,3 +1,11 @@
+Wed Nov 13 15:52:53 2002  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkcombo.c (gtk_combo_activate): Fix warning.
+       
+       * gtk/gtkcombo.c: Fix code that was meant to delay
+       grabbing events on the list until we had an enter-notify.
+       (#54353, reported by Mike Fulbright, others)
+
 2002-11-13  Matthias Clasen  <maclas@gmx.de>
 
        * gtk/theme-bits/decompose-bits.c (do_part): Add a const here.
index 8c8dd8f9af93a36671252ab0fcd853b59dcb4c2f..185f2517e008f0abc1a29a32cb4dc94ea23c4836 100644 (file)
@@ -1,3 +1,11 @@
+Wed Nov 13 15:52:53 2002  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkcombo.c (gtk_combo_activate): Fix warning.
+       
+       * gtk/gtkcombo.c: Fix code that was meant to delay
+       grabbing events on the list until we had an enter-notify.
+       (#54353, reported by Mike Fulbright, others)
+
 2002-11-13  Matthias Clasen  <maclas@gmx.de>
 
        * gtk/theme-bits/decompose-bits.c (do_part): Add a const here.
index 4cdecc0a71b7761d81e404f5c9f318e6fdbbeace..701027a4c1df3ab9c4a8088a237f17d314353849 100644 (file)
@@ -601,7 +601,7 @@ gtk_combo_activate (GtkWidget        *widget,
   if (!combo->button->window ||
       !popup_grab_on_window (combo->button->window,
                             gtk_get_current_event_time ()))
-    return FALSE;
+    return;
 
   gtk_combo_popup_list (combo);
 
@@ -641,8 +641,6 @@ gtk_combo_popup_button_press (GtkWidget        *button,
   gtk_button_pressed (GTK_BUTTON (button));
 
   gtk_grab_add (combo->popwin);
-  GTK_LIST (combo->list)->drag_selection = TRUE;
-  gtk_grab_add (combo->list);
 
   return TRUE;
 }
@@ -759,6 +757,29 @@ gtk_combo_button_event_after (GtkWidget *widget,
   gtk_combo_popdown_list (combo);
 }
 
+static void
+find_child_foreach (GtkWidget *widget,
+                   gpointer   data)
+{
+  GdkEventButton *event = data;
+
+  if (!event->window)
+    {
+      if (event->x >= widget->allocation.x &&
+         event->x < widget->allocation.x + widget->allocation.width &&
+         event->y >= widget->allocation.y &&
+         event->y < widget->allocation.y + widget->allocation.height)
+       event->window = g_object_ref (widget->window);
+    }
+}
+
+static void
+find_child_window (GtkContainer   *container,
+                  GdkEventButton *event)
+{
+  gtk_container_foreach (container, find_child_foreach, event);
+}
+
 static gint         
 gtk_combo_list_enter (GtkWidget        *widget,
                      GdkEventCrossing *event,
@@ -767,7 +788,7 @@ gtk_combo_list_enter (GtkWidget        *widget,
   GtkWidget *event_widget;
 
   event_widget = gtk_get_event_widget ((GdkEvent*) event);
-  
+
   if ((event_widget == combo->list) &&
       (combo->current_button != 0) && 
       (!GTK_WIDGET_HAS_GRAB (combo->list)))
@@ -783,7 +804,6 @@ gtk_combo_list_enter (GtkWidget        *widget,
        */
       gdk_window_get_pointer (combo->list->window, &x, &y, &mask);
 
-      tmp_event->button.window = g_object_ref (combo->list->window);
       tmp_event->button.send_event = TRUE;
       tmp_event->button.time = GDK_CURRENT_TIME; /* bad */
       tmp_event->button.x = x;
@@ -794,6 +814,19 @@ gtk_combo_list_enter (GtkWidget        *widget,
       tmp_event->button.button = combo->current_button;
       tmp_event->button.state = mask;
 
+      find_child_window (GTK_CONTAINER (combo->list), &tmp_event->button);
+      if (!tmp_event->button.window)
+       {
+         GtkWidget *child;
+         
+         if (GTK_LIST (combo->list)->children)
+           child = GTK_LIST (combo->list)->children->data;
+         else
+           child = combo->list;
+
+         tmp_event->button.window = g_object_ref (child->window);
+       }
+
       gtk_widget_event (combo->list, tmp_event);
       gdk_event_free (tmp_event);
     }
@@ -915,14 +948,12 @@ gtk_combo_init (GtkCombo * combo)
   g_signal_connect (combo->popwin, "button_press_event",
                    G_CALLBACK (gtk_combo_button_press), combo);
 
+  g_signal_connect (combo->popwin, "event_after",
+                   G_CALLBACK (gtk_combo_button_event_after), combo);
   g_signal_connect (combo->list, "event_after",
                    G_CALLBACK (gtk_combo_button_event_after), combo);
 
-  /* We connect here on the button, because we'll have a grab on it
-   * when the event occurs. But we are actually interested in enters
-   * for the combo->list.
-   */
-  g_signal_connect (combo->button, "enter_notify_event",
+  g_signal_connect (combo->list, "enter_notify_event",
                    G_CALLBACK (gtk_combo_list_enter), combo);
 }