]> Pileus Git - ~andy/gtk/commitdiff
Offset invalidated range correctly. Fix scrolling of title window.
authorOwen Taylor <otaylor@redhat.com>
Fri, 23 Nov 2001 23:42:30 +0000 (23:42 +0000)
committerOwen Taylor <otaylor@src.gnome.org>
Fri, 23 Nov 2001 23:42:30 +0000 (23:42 +0000)
Fri Nov 23 18:36:42 2001  Owen Taylor  <otaylor@redhat.com>
* gtk/gtkrange.c (gtk_range_button_press): Offset
invalidated range correctly.
* gtk/gtkclist.c (hadjustment_value_changed): Fix scrolling
of title window. (#65001, reported by Damon Chaplin)
* gtk/gtkcombo.c (gtk_combo_button_event_after): Replace
horrible hack with use of ::event_after.

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/gtkclist.c
gtk/gtkcombo.c
gtk/gtkrange.c

index 457a2e3741ba5a0ced67fe13fc84388163bfc49f..b5b77d332c2ee311ba1ebbd2c374c6f78d3bee4a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+Fri Nov 23 18:36:42 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkrange.c (gtk_range_button_press): Offset 
+       invalidated range correctly.
+
+       * gtk/gtkclist.c (hadjustment_value_changed): Fix scrolling 
+       of title window. (#65001, reported by Damon Chaplin)
+
+       * gtk/gtkcombo.c (gtk_combo_button_event_after): Replace
+       horrible hack with use of ::event_after.
+
 Thu Nov 22 15:01:03 2001  Owen Taylor  <otaylor@redhat.com>
 
        * Version 1.3.11
index 457a2e3741ba5a0ced67fe13fc84388163bfc49f..b5b77d332c2ee311ba1ebbd2c374c6f78d3bee4a 100644 (file)
@@ -1,3 +1,14 @@
+Fri Nov 23 18:36:42 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkrange.c (gtk_range_button_press): Offset 
+       invalidated range correctly.
+
+       * gtk/gtkclist.c (hadjustment_value_changed): Fix scrolling 
+       of title window. (#65001, reported by Damon Chaplin)
+
+       * gtk/gtkcombo.c (gtk_combo_button_event_after): Replace
+       horrible hack with use of ::event_after.
+
 Thu Nov 22 15:01:03 2001  Owen Taylor  <otaylor@redhat.com>
 
        * Version 1.3.11
index 457a2e3741ba5a0ced67fe13fc84388163bfc49f..b5b77d332c2ee311ba1ebbd2c374c6f78d3bee4a 100644 (file)
@@ -1,3 +1,14 @@
+Fri Nov 23 18:36:42 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkrange.c (gtk_range_button_press): Offset 
+       invalidated range correctly.
+
+       * gtk/gtkclist.c (hadjustment_value_changed): Fix scrolling 
+       of title window. (#65001, reported by Damon Chaplin)
+
+       * gtk/gtkcombo.c (gtk_combo_button_event_after): Replace
+       horrible hack with use of ::event_after.
+
 Thu Nov 22 15:01:03 2001  Owen Taylor  <otaylor@redhat.com>
 
        * Version 1.3.11
index 457a2e3741ba5a0ced67fe13fc84388163bfc49f..b5b77d332c2ee311ba1ebbd2c374c6f78d3bee4a 100644 (file)
@@ -1,3 +1,14 @@
+Fri Nov 23 18:36:42 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkrange.c (gtk_range_button_press): Offset 
+       invalidated range correctly.
+
+       * gtk/gtkclist.c (hadjustment_value_changed): Fix scrolling 
+       of title window. (#65001, reported by Damon Chaplin)
+
+       * gtk/gtkcombo.c (gtk_combo_button_event_after): Replace
+       horrible hack with use of ::event_after.
+
 Thu Nov 22 15:01:03 2001  Owen Taylor  <otaylor@redhat.com>
 
        * Version 1.3.11
index 457a2e3741ba5a0ced67fe13fc84388163bfc49f..b5b77d332c2ee311ba1ebbd2c374c6f78d3bee4a 100644 (file)
@@ -1,3 +1,14 @@
+Fri Nov 23 18:36:42 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkrange.c (gtk_range_button_press): Offset 
+       invalidated range correctly.
+
+       * gtk/gtkclist.c (hadjustment_value_changed): Fix scrolling 
+       of title window. (#65001, reported by Damon Chaplin)
+
+       * gtk/gtkcombo.c (gtk_combo_button_event_after): Replace
+       horrible hack with use of ::event_after.
+
 Thu Nov 22 15:01:03 2001  Owen Taylor  <otaylor@redhat.com>
 
        * Version 1.3.11
index 457a2e3741ba5a0ced67fe13fc84388163bfc49f..b5b77d332c2ee311ba1ebbd2c374c6f78d3bee4a 100644 (file)
@@ -1,3 +1,14 @@
+Fri Nov 23 18:36:42 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkrange.c (gtk_range_button_press): Offset 
+       invalidated range correctly.
+
+       * gtk/gtkclist.c (hadjustment_value_changed): Fix scrolling 
+       of title window. (#65001, reported by Damon Chaplin)
+
+       * gtk/gtkcombo.c (gtk_combo_button_event_after): Replace
+       horrible hack with use of ::event_after.
+
 Thu Nov 22 15:01:03 2001  Owen Taylor  <otaylor@redhat.com>
 
        * Version 1.3.11
index 457a2e3741ba5a0ced67fe13fc84388163bfc49f..b5b77d332c2ee311ba1ebbd2c374c6f78d3bee4a 100644 (file)
@@ -1,3 +1,14 @@
+Fri Nov 23 18:36:42 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkrange.c (gtk_range_button_press): Offset 
+       invalidated range correctly.
+
+       * gtk/gtkclist.c (hadjustment_value_changed): Fix scrolling 
+       of title window. (#65001, reported by Damon Chaplin)
+
+       * gtk/gtkcombo.c (gtk_combo_button_event_after): Replace
+       horrible hack with use of ::event_after.
+
 Thu Nov 22 15:01:03 2001  Owen Taylor  <otaylor@redhat.com>
 
        * Version 1.3.11
index f4224a9c5a3e23106f7b0a53e07bd7b65552e265..791bc9817cdf5f97f1c90d0d543c45a799d94825 100644 (file)
@@ -3789,9 +3789,6 @@ real_unselect_row (GtkCList *clist,
 static void
 real_select_all (GtkCList *clist)
 {
-  GList *list;
-  gint i;
   g_return_if_fail (GTK_IS_CLIST (clist));
 
   if (gdk_pointer_is_grabbed () && GTK_WIDGET_HAS_GRAB (clist))
@@ -6138,6 +6135,64 @@ vadjustment_value_changed (GtkAdjustment *adjustment,
   return;
 }
 
+typedef struct
+{
+  GdkWindow *window;
+  gint dx;
+} ScrollData;
+
+/* The window to which widget->window is relative */
+#define ALLOCATION_WINDOW(widget)              \
+   (GTK_WIDGET_NO_WINDOW (widget) ?            \
+    (widget)->window :                          \
+     gdk_window_get_parent ((widget)->window))
+
+static void
+adjust_allocation_recurse (GtkWidget *widget,
+                          gpointer   data)
+{
+  ScrollData *scroll_data = data;
+  
+  if (!GTK_WIDGET_REALIZED (widget))
+    {
+      if (GTK_WIDGET_VISIBLE (widget))
+       {
+         GdkRectangle tmp_rectangle = widget->allocation;
+         tmp_rectangle.x += scroll_data->dx;
+      
+         gtk_widget_size_allocate (widget, &tmp_rectangle);
+       }
+    }
+  else
+    {
+      if (ALLOCATION_WINDOW (widget) == scroll_data->window)
+       {
+         widget->allocation.x += scroll_data->dx;
+
+         if (GTK_IS_CONTAINER (widget))
+           gtk_container_forall (GTK_CONTAINER (widget),
+                                 adjust_allocation_recurse,
+                                 data);
+       }
+    }
+}
+
+static void
+adjust_allocation (GtkWidget *widget,
+                  gint       dx)
+{
+  ScrollData scroll_data;
+
+  if (GTK_WIDGET_REALIZED (widget))
+    scroll_data.window = ALLOCATION_WINDOW (widget);
+  else
+    scroll_data.window = NULL;
+    
+  scroll_data.dx = dx;
+  
+  adjust_allocation_recurse (widget, &scroll_data);
+}
+
 static void
 hadjustment_value_changed (GtkAdjustment *adjustment,
                           gpointer       data)
@@ -6164,32 +6219,14 @@ hadjustment_value_changed (GtkAdjustment *adjustment,
   dx = -value - clist->hoffset;
 
   if (GTK_WIDGET_REALIZED (clist))
-    {
-      /* move the column buttons and resize windows */
-      for (i = (dx<0)? 0 : clist->columns-1; i >= 0 && i < clist->columns; i += (dx<0)? 1 : -1)
-        {
-          if (clist->column[i].button)
-            {
-              clist->column[i].button->allocation.x -= value + clist->hoffset;
-              
-              if (clist->column[i].button->window)
-                {
-                  gdk_window_move (clist->column[i].button->window,
-                                   clist->column[i].button->allocation.x,
-                                   clist->column[i].button->allocation.y);
-                  
-                  if (clist->column[i].window)
-                    gdk_window_move (clist->column[i].window,
-                                     clist->column[i].button->allocation.x +
-                                     clist->column[i].button->allocation.width - 
-                                     (DRAG_WIDTH / 2), 0); 
-                }
-            }
-        }
-    }
+    gdk_window_scroll (clist->title_window, dx, 0);
 
-  clist->hoffset = -value;
+  /* adjust the column button's allocations */
+  for (i = 0; i < clist->columns; i++)
+    if (clist->column[i].button)
+      adjust_allocation (clist->column[i].button, dx);
 
+  clist->hoffset = -value;
 
   if (GTK_WIDGET_DRAWABLE (clist))
     {
index edbed499cb837a3be24ff0cf6ca12c295d793b26..589912bb337066af0f52b8f81034e4d16683a1a4 100644 (file)
@@ -86,7 +86,7 @@ static void         gtk_combo_update_list        (GtkEntry         *entry,
 static gint         gtk_combo_button_press       (GtkWidget        *widget,
                                                  GdkEvent         *event,
                                                  GtkCombo         *combo);
-static gint         gtk_combo_button_release     (GtkWidget        *widget,
+static void         gtk_combo_button_event_after (GtkWidget        *widget,
                                                  GdkEvent         *event,
                                                  GtkCombo         *combo);
 static gint         gtk_combo_list_enter         (GtkWidget        *widget,
@@ -616,23 +616,15 @@ gtk_combo_button_press (GtkWidget * widget, GdkEvent * event, GtkCombo * combo)
   return TRUE;
 }
 
-static gint
-gtk_combo_button_release (GtkWidget *widget,
-                         GdkEvent  *event,
-                         GtkCombo  *combo)
+static void
+gtk_combo_button_event_after (GtkWidget *widget,
+                             GdkEvent  *event,
+                             GtkCombo  *combo)
 {
   GtkWidget *child;
 
-  /* Horrible hack to get connect-after effect without regard to the return value of the default
-   * handler.
-   */
-  gtk_signal_handler_block_by_func (GTK_OBJECT (widget),
-                                   GTK_SIGNAL_FUNC (gtk_combo_button_release),
-                                   combo);
-  gtk_widget_event (widget, event);
-  gtk_signal_handler_unblock_by_func (GTK_OBJECT (widget),
-                                     GTK_SIGNAL_FUNC (gtk_combo_button_release),
-                                     combo);
+  if (event->type != GDK_BUTTON_RELEASE)
+    return;
   
   if ((combo->current_button != 0) && (event->button.button == 1))
     {
@@ -669,7 +661,7 @@ gtk_combo_button_release (GtkWidget *widget,
                            GDK_BUTTON_RELEASE_MASK |
                            GDK_POINTER_MOTION_MASK, 
                            NULL, NULL, GDK_CURRENT_TIME);
-         return TRUE;
+         return;
        }
     }
   else
@@ -684,8 +676,6 @@ gtk_combo_button_release (GtkWidget *widget,
     }
   
   gtk_widget_hide (combo->popwin);
-
-  return TRUE;
 }
 
 static gint         
@@ -789,12 +779,8 @@ gtk_combo_init (GtkCombo * combo)
                      (GtkSignalFunc) gtk_combo_activate, combo);
   gtk_signal_connect (GTK_OBJECT (combo->button), "button_press_event",
                      (GtkSignalFunc) gtk_combo_popup_button_press, combo);
-  /*gtk_signal_connect_after (GTK_OBJECT (combo->button), "button_release_event",
-    (GtkSignalFunc) gtk_combo_button_release, combo);*/
   gtk_signal_connect (GTK_OBJECT (combo->button), "leave_notify_event",
                      (GtkSignalFunc) gtk_combo_popup_button_leave, combo);
-  /*gtk_signal_connect (GTK_OBJECT (combo->button), "clicked",
-     (GtkSignalFunc)prelight_bug, combo); */
 
   combo->popwin = gtk_window_new (GTK_WINDOW_POPUP);
   gtk_widget_ref (combo->popwin);
@@ -848,8 +834,8 @@ gtk_combo_init (GtkCombo * combo)
   gtk_signal_connect (GTK_OBJECT (combo->popwin), "button_press_event",
                      GTK_SIGNAL_FUNC (gtk_combo_button_press), combo);
 
-  gtk_signal_connect (GTK_OBJECT (combo->list), "button_release_event",
-                     GTK_SIGNAL_FUNC (gtk_combo_button_release), combo);
+  gtk_signal_connect (GTK_OBJECT (combo->list), "event_after",
+                     (GtkSignalFunc) 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.
index 2f51e174c8a9990faf52c125fe4a6ec60ac61526..06a261a0768b28007d1f7aaa919670894fdfc78e 100644 (file)
@@ -1161,8 +1161,8 @@ gtk_range_button_press (GtkWidget      *widget,
 
       stepper_area = get_area (range, range->layout->mouse_location);
       gtk_widget_queue_draw_area (widget,
-                                  stepper_area->x,
-                                  stepper_area->y,
+                                  widget->allocation.x + stepper_area->x,
+                                  widget->allocation.y + stepper_area->y,
                                   stepper_area->width,
                                   stepper_area->height);