2006-09-02 [colin] 2.4.0cvs130
authorColin Leroy <colin@colino.net>
Sat, 2 Sep 2006 14:06:38 +0000 (14:06 +0000)
committerColin Leroy <colin@colino.net>
Sat, 2 Sep 2006 14:06:38 +0000 (14:06 +0000)
* src/gtk/logwindow.c
* src/gtk/logwindow.h
Block scrolling if we're not at the end
of the log

ChangeLog
PATCHSETS
configure.ac
src/gtk/logwindow.c
src/gtk/logwindow.h

index 585422a3c0d2425d6f2607743e815db9d4506dc9..fdc0022949fbd08b250070f5fd8879c18a8b2cf0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2006-09-02 [colin]     2.4.0cvs130
+
+       * src/gtk/logwindow.c
+       * src/gtk/logwindow.h
+               Block scrolling if we're not at the end
+               of the log
+
 2006-09-02 [colin]     2.4.0cvs129
 
        * src/folder.c
index 5bc05217ddd3ec826d8fa71575b0e5a58e7f332c..bc50e7862b9c245fbcde56e8bced05fdb51a6806 100644 (file)
--- a/PATCHSETS
+++ b/PATCHSETS
 ( cvs diff -u -r 1.17.2.26 -r 1.17.2.27 src/alertpanel.c;  cvs diff -u -r 1.65.2.48 -r 1.65.2.49 src/codeconv.c;  cvs diff -u -r 1.149.2.56 -r 1.149.2.57 src/inc.c;  cvs diff -u -r 1.274.2.142 -r 1.274.2.143 src/mainwindow.c;  cvs diff -u -r 1.39.2.21 -r 1.39.2.22 src/mainwindow.h;  cvs diff -u -r 1.1.4.48 -r 1.1.4.49 src/etpan/imap-thread.c;  cvs diff -u -r 1.1.4.17 -r 1.1.4.18 src/gtk/logwindow.c;  cvs diff -u -r 1.1.4.4 -r 1.1.4.5 src/gtk/logwindow.h;  ) > 2.4.0cvs127.patchset
 ( cvs diff -u -r 1.179.2.130 -r 1.179.2.131 src/imap.c;  cvs diff -u -r 1.13.2.17 -r 1.13.2.18 src/import.c;  cvs diff -u -r 1.149.2.57 -r 1.149.2.58 src/inc.c;  cvs diff -u -r 1.274.2.143 -r 1.274.2.144 src/mainwindow.c;  cvs diff -u -r 1.39.2.22 -r 1.39.2.23 src/mainwindow.h;  cvs diff -u -r 1.28.2.25 -r 1.28.2.26 src/mbox.c;  cvs diff -u -r 1.3.2.6 -r 1.3.2.7 src/mbox.h;  ) > 2.4.0cvs128.patchset
 ( cvs diff -u -r 1.213.2.112 -r 1.213.2.113 src/folder.c;  cvs diff -u -r 1.274.2.144 -r 1.274.2.145 src/mainwindow.c;  cvs diff -u -r 1.1.4.18 -r 1.1.4.19 src/gtk/logwindow.c;  cvs diff -u -r 1.1.4.5 -r 1.1.4.6 src/gtk/logwindow.h;  ) > 2.4.0cvs129.patchset
+( cvs diff -u -r 1.1.4.19 -r 1.1.4.20 src/gtk/logwindow.c;  cvs diff -u -r 1.1.4.6 -r 1.1.4.7 src/gtk/logwindow.h;  ) > 2.4.0cvs130.patchset
index fa5799e4fd72371b4470acba121399edc9694ff5..d15c86a9165ed32330e6fabd8213e37533ba086f 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=4
 MICRO_VERSION=0
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=129
+EXTRA_VERSION=130
 EXTRA_RELEASE=
 EXTRA_GTK2_VERSION=
 
index d22d951544cdc70ca9988dd1fa5d37e8f5e30b05..8ff0ab27930ec514d38d3b8f4c348707d9f06a08 100644 (file)
@@ -108,7 +108,8 @@ LogWindow *log_window_create(void)
        logwin->buffer = buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text));
 
        gtk_text_buffer_get_start_iter(buffer, &iter);
-       gtk_text_buffer_create_mark(buffer, "end", &iter, FALSE);
+       logwin->end_mark = gtk_text_buffer_create_mark(buffer, "end", &iter, FALSE);
+
        g_signal_connect(G_OBJECT(text), "populate-popup",
                         G_CALLBACK(log_window_popup_menu_extend), logwin);
        gtk_container_add(GTK_CONTAINER(scrolledwin), text);
@@ -298,10 +299,11 @@ static gboolean log_window_append(gpointer source, gpointer data)
        if (logwindow->clip)
               log_window_clip (logwindow, logwindow->clip_length);
 
-       gtk_text_buffer_get_iter_at_offset(buffer, &iter, -1);
        if (!logwindow->hidden) {
-               gtk_text_view_scroll_to_iter(text, &iter, 0, TRUE, 0, 0);
-               gtk_text_buffer_place_cursor(buffer, &iter);
+               GtkAdjustment *vadj = text->vadjustment;
+               gfloat upper = vadj->upper - vadj->page_size;
+               if (vadj->value == upper)
+                       gtk_text_view_scroll_mark_onscreen(text, logwindow->end_mark);
        }
 
        return FALSE;
index 33959594f562007c85d71505ff858b9aaebcd599..58f4b2efb8a89f4db39c55cb618f72c7fc9d212e 100644 (file)
@@ -42,6 +42,7 @@ struct _LogWindow
        guint    hook_id;
        GtkTextBuffer *buffer;
        GtkTextTag *error_tag;
+       GtkTextTag *end_mark;
        gboolean hidden;
 };