diff options
author | Owen Taylor <otaylor@redhat.com> | 2001-11-23 23:42:30 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2001-11-23 23:42:30 +0000 |
commit | 1123956779445f285ab6b807cc7714141c47154b (patch) | |
tree | 4ee5afb283d04ac4aa0fdc2caf92b53cc6a29ab9 | |
parent | 2936c8e9423cc28555dbe56877a315d16b7f7d8f (diff) | |
download | gtk+-1123956779445f285ab6b807cc7714141c47154b.tar.gz |
Offset invalidated range correctly. Fix scrolling of title window.
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.
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | ChangeLog.pre-2-0 | 11 | ||||
-rw-r--r-- | ChangeLog.pre-2-10 | 11 | ||||
-rw-r--r-- | ChangeLog.pre-2-2 | 11 | ||||
-rw-r--r-- | ChangeLog.pre-2-4 | 11 | ||||
-rw-r--r-- | ChangeLog.pre-2-6 | 11 | ||||
-rw-r--r-- | ChangeLog.pre-2-8 | 11 | ||||
-rw-r--r-- | gtk/gtkclist.c | 91 | ||||
-rw-r--r-- | gtk/gtkcombo.c | 34 | ||||
-rw-r--r-- | gtk/gtkrange.c | 4 |
10 files changed, 153 insertions, 53 deletions
@@ -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 diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 457a2e3741..b5b77d332c 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -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 diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 457a2e3741..b5b77d332c 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -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 diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 457a2e3741..b5b77d332c 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -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 diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 457a2e3741..b5b77d332c 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -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 diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 457a2e3741..b5b77d332c 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -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 diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 457a2e3741..b5b77d332c 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -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 diff --git a/gtk/gtkclist.c b/gtk/gtkclist.c index f4224a9c5a..791bc9817c 100644 --- a/gtk/gtkclist.c +++ b/gtk/gtkclist.c @@ -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)) { diff --git a/gtk/gtkcombo.c b/gtk/gtkcombo.c index edbed499cb..589912bb33 100644 --- a/gtk/gtkcombo.c +++ b/gtk/gtkcombo.c @@ -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. diff --git a/gtk/gtkrange.c b/gtk/gtkrange.c index 2f51e174c8..06a261a076 100644 --- a/gtk/gtkrange.c +++ b/gtk/gtkrange.c @@ -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); |