diff --git a/ChangeLog b/ChangeLog index 23d48bd1a4..d6c4f2d081 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2001-06-04 Havoc Pennington + + * gtk/gtkclist.c (vadjustment_value_changed): Apply fix from + Sam Solon, bug #54577, update value even if not drawable. + 2001-06-04 Havoc Pennington * gtk/gtkrange.c (gtk_range_scroll_event): change SCROLL_RIGHT to diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 23d48bd1a4..d6c4f2d081 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,8 @@ +2001-06-04 Havoc Pennington + + * gtk/gtkclist.c (vadjustment_value_changed): Apply fix from + Sam Solon, bug #54577, update value even if not drawable. + 2001-06-04 Havoc Pennington * gtk/gtkrange.c (gtk_range_scroll_event): change SCROLL_RIGHT to diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 23d48bd1a4..d6c4f2d081 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,8 @@ +2001-06-04 Havoc Pennington + + * gtk/gtkclist.c (vadjustment_value_changed): Apply fix from + Sam Solon, bug #54577, update value even if not drawable. + 2001-06-04 Havoc Pennington * gtk/gtkrange.c (gtk_range_scroll_event): change SCROLL_RIGHT to diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 23d48bd1a4..d6c4f2d081 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,8 @@ +2001-06-04 Havoc Pennington + + * gtk/gtkclist.c (vadjustment_value_changed): Apply fix from + Sam Solon, bug #54577, update value even if not drawable. + 2001-06-04 Havoc Pennington * gtk/gtkrange.c (gtk_range_scroll_event): change SCROLL_RIGHT to diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 23d48bd1a4..d6c4f2d081 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,8 @@ +2001-06-04 Havoc Pennington + + * gtk/gtkclist.c (vadjustment_value_changed): Apply fix from + Sam Solon, bug #54577, update value even if not drawable. + 2001-06-04 Havoc Pennington * gtk/gtkrange.c (gtk_range_scroll_event): change SCROLL_RIGHT to diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 23d48bd1a4..d6c4f2d081 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,8 @@ +2001-06-04 Havoc Pennington + + * gtk/gtkclist.c (vadjustment_value_changed): Apply fix from + Sam Solon, bug #54577, update value even if not drawable. + 2001-06-04 Havoc Pennington * gtk/gtkrange.c (gtk_range_scroll_event): change SCROLL_RIGHT to diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 23d48bd1a4..d6c4f2d081 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,8 @@ +2001-06-04 Havoc Pennington + + * gtk/gtkclist.c (vadjustment_value_changed): Apply fix from + Sam Solon, bug #54577, update value even if not drawable. + 2001-06-04 Havoc Pennington * gtk/gtkrange.c (gtk_range_scroll_event): change SCROLL_RIGHT to diff --git a/gtk/gtkclist.c b/gtk/gtkclist.c index a32d4a4524..c483647181 100644 --- a/gtk/gtkclist.c +++ b/gtk/gtkclist.c @@ -6124,14 +6124,18 @@ vadjustment_value_changed (GtkAdjustment *adjustment, clist = GTK_CLIST (data); - if (!GTK_WIDGET_DRAWABLE (clist) || adjustment != clist->vadjustment) + if (adjustment != clist->vadjustment) return; value = -adjustment->value; dy = value - clist->voffset; clist->voffset = value; - gdk_window_scroll (clist->clist_window, 0, dy); - gdk_window_process_updates (clist->clist_window, FALSE); + + if (GTK_WIDGET_DRAWABLE (clist)) + { + gdk_window_scroll (clist->clist_window, 0, dy); + gdk_window_process_updates (clist->clist_window, FALSE); + } return; } @@ -6155,90 +6159,96 @@ hadjustment_value_changed (GtkAdjustment *adjustment, clist = GTK_CLIST (data); container = GTK_CONTAINER (data); - if (!GTK_WIDGET_DRAWABLE (clist) || adjustment != clist->hadjustment) + if (adjustment != clist->hadjustment) return; value = adjustment->value; dx = -value - clist->hoffset; - - /* 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); - } - } - } + 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); + } + } + } + } clist->hoffset = -value; - if (GTK_WIDGET_CAN_FOCUS(clist) && GTK_WIDGET_HAS_FOCUS(clist) && - !container->focus_child && GTK_CLIST_ADD_MODE(clist)) + + if (GTK_WIDGET_DRAWABLE (clist)) { - y = ROW_TOP_YPIXEL (clist, clist->focus_row); + if (GTK_WIDGET_CAN_FOCUS(clist) && GTK_WIDGET_HAS_FOCUS(clist) && + !container->focus_child && GTK_CLIST_ADD_MODE(clist)) + { + y = ROW_TOP_YPIXEL (clist, clist->focus_row); - gdk_draw_rectangle (clist->clist_window, clist->xor_gc, FALSE, 0, y, - clist->clist_window_width - 1, - clist->row_height - 1); - } + gdk_draw_rectangle (clist->clist_window, clist->xor_gc, FALSE, 0, y, + clist->clist_window_width - 1, + clist->row_height - 1); + } - gdk_window_scroll (clist->clist_window, dx, 0); - gdk_window_process_updates (clist->clist_window, FALSE); + gdk_window_scroll (clist->clist_window, dx, 0); + gdk_window_process_updates (clist->clist_window, FALSE); - if (GTK_WIDGET_CAN_FOCUS(clist) && GTK_WIDGET_HAS_FOCUS(clist) && - !container->focus_child) - { - if (GTK_CLIST_ADD_MODE(clist)) - { - gint focus_row; + if (GTK_WIDGET_CAN_FOCUS(clist) && GTK_WIDGET_HAS_FOCUS(clist) && + !container->focus_child) + { + if (GTK_CLIST_ADD_MODE(clist)) + { + gint focus_row; - focus_row = clist->focus_row; - clist->focus_row = -1; - draw_rows (clist, &area); - clist->focus_row = focus_row; + focus_row = clist->focus_row; + clist->focus_row = -1; + draw_rows (clist, &area); + clist->focus_row = focus_row; - gdk_draw_rectangle (clist->clist_window, clist->xor_gc, - FALSE, 0, y, clist->clist_window_width - 1, - clist->row_height - 1); - return; - } - else if (ABS(dx) < clist->clist_window_width - 1) - { - gint x0; - gint x1; + gdk_draw_rectangle (clist->clist_window, clist->xor_gc, + FALSE, 0, y, clist->clist_window_width - 1, + clist->row_height - 1); + return; + } + else if (ABS(dx) < clist->clist_window_width - 1) + { + gint x0; + gint x1; - if (dx > 0) - { - x0 = clist->clist_window_width - 1; - x1 = dx; - } - else - { - x0 = 0; - x1 = clist->clist_window_width - 1 + dx; - } + if (dx > 0) + { + x0 = clist->clist_window_width - 1; + x1 = dx; + } + else + { + x0 = 0; + x1 = clist->clist_window_width - 1 + dx; + } - y = ROW_TOP_YPIXEL (clist, clist->focus_row); - gdk_draw_line (clist->clist_window, clist->xor_gc, - x0, y + 1, x0, y + clist->row_height - 2); - gdk_draw_line (clist->clist_window, clist->xor_gc, - x1, y + 1, x1, y + clist->row_height - 2); - } + y = ROW_TOP_YPIXEL (clist, clist->focus_row); + gdk_draw_line (clist->clist_window, clist->xor_gc, + x0, y + 1, x0, y + clist->row_height - 2); + gdk_draw_line (clist->clist_window, clist->xor_gc, + x1, y + 1, x1, y + clist->row_height - 2); + } + } } }