summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--ChangeLog.pre-2-06
-rw-r--r--ChangeLog.pre-2-106
-rw-r--r--ChangeLog.pre-2-26
-rw-r--r--ChangeLog.pre-2-46
-rw-r--r--ChangeLog.pre-2-66
-rw-r--r--ChangeLog.pre-2-86
-rw-r--r--gtk/gtkclist.c188
8 files changed, 69 insertions, 161 deletions
diff --git a/ChangeLog b/ChangeLog
index bfdb07b069..1ec10cf097 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2001-03-12 Alexander Larsson <alla@lysator.liu.se>
+
+ * gtk/gtkclist.c:
+ Scroll using gdk_window_scroll(). Don't wait for exposes.
+ Move the column headers in an order that makes them flash less.
+
2001-03-10 Hans Breuer <hans@breuer.org>
* gdk/gdk.def : updated
diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0
index bfdb07b069..1ec10cf097 100644
--- a/ChangeLog.pre-2-0
+++ b/ChangeLog.pre-2-0
@@ -1,3 +1,9 @@
+2001-03-12 Alexander Larsson <alla@lysator.liu.se>
+
+ * gtk/gtkclist.c:
+ Scroll using gdk_window_scroll(). Don't wait for exposes.
+ Move the column headers in an order that makes them flash less.
+
2001-03-10 Hans Breuer <hans@breuer.org>
* gdk/gdk.def : updated
diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10
index bfdb07b069..1ec10cf097 100644
--- a/ChangeLog.pre-2-10
+++ b/ChangeLog.pre-2-10
@@ -1,3 +1,9 @@
+2001-03-12 Alexander Larsson <alla@lysator.liu.se>
+
+ * gtk/gtkclist.c:
+ Scroll using gdk_window_scroll(). Don't wait for exposes.
+ Move the column headers in an order that makes them flash less.
+
2001-03-10 Hans Breuer <hans@breuer.org>
* gdk/gdk.def : updated
diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2
index bfdb07b069..1ec10cf097 100644
--- a/ChangeLog.pre-2-2
+++ b/ChangeLog.pre-2-2
@@ -1,3 +1,9 @@
+2001-03-12 Alexander Larsson <alla@lysator.liu.se>
+
+ * gtk/gtkclist.c:
+ Scroll using gdk_window_scroll(). Don't wait for exposes.
+ Move the column headers in an order that makes them flash less.
+
2001-03-10 Hans Breuer <hans@breuer.org>
* gdk/gdk.def : updated
diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4
index bfdb07b069..1ec10cf097 100644
--- a/ChangeLog.pre-2-4
+++ b/ChangeLog.pre-2-4
@@ -1,3 +1,9 @@
+2001-03-12 Alexander Larsson <alla@lysator.liu.se>
+
+ * gtk/gtkclist.c:
+ Scroll using gdk_window_scroll(). Don't wait for exposes.
+ Move the column headers in an order that makes them flash less.
+
2001-03-10 Hans Breuer <hans@breuer.org>
* gdk/gdk.def : updated
diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6
index bfdb07b069..1ec10cf097 100644
--- a/ChangeLog.pre-2-6
+++ b/ChangeLog.pre-2-6
@@ -1,3 +1,9 @@
+2001-03-12 Alexander Larsson <alla@lysator.liu.se>
+
+ * gtk/gtkclist.c:
+ Scroll using gdk_window_scroll(). Don't wait for exposes.
+ Move the column headers in an order that makes them flash less.
+
2001-03-10 Hans Breuer <hans@breuer.org>
* gdk/gdk.def : updated
diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8
index bfdb07b069..1ec10cf097 100644
--- a/ChangeLog.pre-2-8
+++ b/ChangeLog.pre-2-8
@@ -1,3 +1,9 @@
+2001-03-12 Alexander Larsson <alla@lysator.liu.se>
+
+ * gtk/gtkclist.c:
+ Scroll using gdk_window_scroll(). Don't wait for exposes.
+ Move the column headers in an order that makes them flash less.
+
2001-03-10 Hans Breuer <hans@breuer.org>
* gdk/gdk.def : updated
diff --git a/gtk/gtkclist.c b/gtk/gtkclist.c
index a3e5e8bfdd..dc2a587f45 100644
--- a/gtk/gtkclist.c
+++ b/gtk/gtkclist.c
@@ -358,7 +358,6 @@ static void column_button_clicked (GtkWidget *widget,
/* Adjustments */
static void adjust_adjustments (GtkCList *clist,
gboolean block_resize);
-static void check_exposures (GtkCList *clist);
static void vadjustment_changed (GtkAdjustment *adjustment,
gpointer data);
static void vadjustment_value_changed (GtkAdjustment *adjustment,
@@ -6101,8 +6100,7 @@ vadjustment_value_changed (GtkAdjustment *adjustment,
gpointer data)
{
GtkCList *clist;
- GdkRectangle area;
- gint diff, value;
+ gint dy, value;
g_return_if_fail (adjustment != NULL);
g_return_if_fail (data != NULL);
@@ -6113,62 +6111,13 @@ vadjustment_value_changed (GtkAdjustment *adjustment,
if (!GTK_WIDGET_DRAWABLE (clist) || adjustment != clist->vadjustment)
return;
- value = adjustment->value;
-
- if (value > -clist->voffset)
- {
- /* scroll down */
- diff = value + clist->voffset;
-
- /* we have to re-draw the whole screen here... */
- if (diff >= clist->clist_window_height)
- {
- clist->voffset = -value;
- draw_rows (clist, NULL);
- return;
- }
-
- if ((diff != 0) && (diff != clist->clist_window_height))
- gdk_window_copy_area (clist->clist_window, clist->fg_gc,
- 0, 0, clist->clist_window, 0, diff,
- clist->clist_window_width,
- clist->clist_window_height - diff);
-
- area.x = 0;
- area.y = clist->clist_window_height - diff;
- area.width = clist->clist_window_width;
- area.height = diff;
- }
- else
- {
- /* scroll up */
- diff = -clist->voffset - value;
-
- /* we have to re-draw the whole screen here... */
- if (diff >= clist->clist_window_height)
- {
- clist->voffset = -value;
- draw_rows (clist, NULL);
- return;
- }
-
- if ((diff != 0) && (diff != clist->clist_window_height))
- gdk_window_copy_area (clist->clist_window, clist->fg_gc,
- 0, diff, clist->clist_window, 0, 0,
- clist->clist_window_width,
- clist->clist_window_height - diff);
-
- area.x = 0;
- area.y = 0;
- area.width = clist->clist_window_width;
- area.height = diff;
- }
-
- clist->voffset = -value;
- if ((diff != 0) && (diff != clist->clist_window_height))
- check_exposures (clist);
-
- draw_rows (clist, &area);
+ 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);
+
+ return;
}
static void
@@ -6180,8 +6129,8 @@ hadjustment_value_changed (GtkAdjustment *adjustment,
GdkRectangle area;
gint i;
gint y = 0;
- gint diff = 0;
gint value;
+ gint dx;
g_return_if_fail (adjustment != NULL);
g_return_if_fail (data != NULL);
@@ -6195,8 +6144,10 @@ hadjustment_value_changed (GtkAdjustment *adjustment,
value = adjustment->value;
+ dx = -value - clist->hoffset;
+
/* move the column buttons and resize windows */
- for (i = 0; i < clist->columns; i++)
+ for (i = (dx<0)? 0 : clist->columns-1; i >= 0 && i < clist->columns; i += (dx<0)? 1 : -1)
{
if (clist->column[i].button)
{
@@ -6217,82 +6168,21 @@ hadjustment_value_changed (GtkAdjustment *adjustment,
}
}
- if (value > -clist->hoffset)
- {
- /* scroll right */
- diff = value + clist->hoffset;
-
- clist->hoffset = -value;
-
- /* we have to re-draw the whole screen here... */
- if (diff >= clist->clist_window_width)
- {
- draw_rows (clist, NULL);
- return;
- }
- 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_window_copy_area (clist->clist_window,
- clist->fg_gc,
- 0, 0,
- clist->clist_window,
- diff,
- 0,
- clist->clist_window_width - diff,
- clist->clist_window_height);
+ clist->hoffset = -value;
- area.x = clist->clist_window_width - diff;
- }
- else
+ if (GTK_WIDGET_CAN_FOCUS(clist) && GTK_WIDGET_HAS_FOCUS(clist) &&
+ !container->focus_child && GTK_CLIST_ADD_MODE(clist))
{
- /* scroll left */
- if (!(diff = -clist->hoffset - value))
- return;
-
- clist->hoffset = -value;
+ y = ROW_TOP_YPIXEL (clist, clist->focus_row);
- /* we have to re-draw the whole screen here... */
- if (diff >= clist->clist_window_width)
- {
- draw_rows (clist, NULL);
- return;
- }
-
- 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_window_copy_area (clist->clist_window,
- clist->fg_gc,
- diff, 0,
- clist->clist_window,
- 0,
- 0,
- clist->clist_window_width - diff,
- clist->clist_window_height);
-
- area.x = 0;
+ gdk_draw_rectangle (clist->clist_window, clist->xor_gc, FALSE, 0, y,
+ clist->clist_window_width - 1,
+ clist->row_height - 1);
}
-
- area.y = 0;
- area.width = diff;
- area.height = clist->clist_window_height;
-
- check_exposures (clist);
+
+ 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)
@@ -6311,52 +6201,28 @@ hadjustment_value_changed (GtkAdjustment *adjustment,
clist->row_height - 1);
return;
}
- else
+ else if (ABS(dx) < clist->clist_window_width - 1)
{
gint x0;
gint x1;
- if (area.x == 0)
+ if (dx > 0)
{
x0 = clist->clist_window_width - 1;
- x1 = diff;
+ x1 = dx;
}
else
{
x0 = 0;
- x1 = area.x - 1;
+ 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);
-
- }
- }
- draw_rows (clist, &area);
-}
-
-static void
-check_exposures (GtkCList *clist)
-{
- GdkEvent *event;
-
- if (!GTK_WIDGET_REALIZED (clist))
- return;
-
- /* Make sure graphics expose events are processed before scrolling
- * again */
- while ((event = gdk_event_get_graphics_expose (clist->clist_window)) != NULL)
- {
- gtk_widget_send_expose (GTK_WIDGET (clist), event);
- if (event->expose.count == 0)
- {
- gdk_event_free (event);
- break;
}
- gdk_event_free (event);
}
}