anchor row and multiple selection fixes
authorColin Leroy <colin@colino.net>
Wed, 9 Oct 2002 10:22:03 +0000 (10:22 +0000)
committerColin Leroy <colin@colino.net>
Wed, 9 Oct 2002 10:22:03 +0000 (10:22 +0000)
ChangeLog.claws
configure.in
src/gtksctree.c
src/gtksctree.h
src/summaryview.c

index 1cf57dc2e4f773be655258672386fb2808c4688d..e8d2d2deb83a53e6845e4384bc7f4a8d3db62c96 100644 (file)
@@ -1,3 +1,12 @@
+2002-10-09 [colin]     0.8.5claws5
+
+       * src/gtksctree.[ch]
+               Fix range_select
+               Add gtk_sctree_reanchor() 
+       * src/summaryview.c
+               Use gtk_sctree_reanchor() - better fix for 
+               bug 60413
+
 2002-10-09 [colin]     0.8.5claws4
 
        * src/summaryview.c
index 166f2e516c288368840aaf01f7afe1a65e0bd565..bcd56b46201e89c77787f7a6e4eea3903e97f0cf 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=8
 MICRO_VERSION=5
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=claws4
+EXTRA_VERSION=claws5
 VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION
 
 dnl set $target
index 49145180d64146c67514ffc5f3c98471f796d547..4231d11bd3825fe7720f8bba5989240409345ced 100644 (file)
@@ -202,6 +202,7 @@ select_range (GtkSCTree *sctree, gint row)
        if (row < prev_row) {
                min = row;
                max = prev_row;
+               GTK_CLIST(sctree)->focus_row = max;
        } else {
                min = prev_row;
                max = row;
@@ -1034,3 +1035,11 @@ gtk_ctree_last_visible (GtkCTree     *ctree,
 
        return gtk_ctree_last_visible (ctree, work);
 }
+
+void gtk_sctree_reanchor (GtkSCTree *sctree, GtkCTreeNode *node)
+{
+       g_return_if_fail (sctree != NULL);
+       g_return_if_fail (node != NULL);
+       sctree->anchor_row = node;
+       
+}
index e463f3acf789c076129e8c76f74bb4f0d062a4ac..64b27ff4cebc648eebc5f21d238450cd19b55802 100644 (file)
@@ -69,7 +69,6 @@ void gtk_sctree_sort_node (GtkCTree *ctree, GtkCTreeNode *node);
 
 void gtk_sctree_sort_recursive (GtkCTree *ctree, GtkCTreeNode *node);
 
-
-
+void gtk_sctree_reanchor (GtkSCTree *sctree, GtkCTreeNode *node);
 
 #endif /* __GTK_SCTREE_H__ */
index 80b4c658736265a705084b2c4a78ae098c3cd45c..ed655f1718553b654a9f709cedddcb3212a8b26f 100644 (file)
@@ -2455,6 +2455,12 @@ void summary_step(SummaryView *summaryview, GtkScrollType type)
 
        gtk_signal_emit_by_name(GTK_OBJECT(ctree), "scroll_vertical",
                                type, 0.0);
+       
+       if(summaryview->selected) {
+               gtk_sctree_reanchor (GTK_SCTREE(ctree), summaryview->selected);
+       }
+
+
 }
 
 void summary_toggle_view(SummaryView *summaryview)
@@ -2952,11 +2958,11 @@ void summary_delete(SummaryView *summaryview)
                        summary_step(summaryview, GTK_SCROLL_STEP_FORWARD);
                else if (sel_last && node == GTK_CTREE_NODE_PREV(sel_last))
                        summary_step(summaryview, GTK_SCROLL_STEP_BACKWARD);
-               
-               summary_select_node
-                       (summaryview, node,
-                        messageview_is_visible(summaryview->messageview),
-                        FALSE);
+               else
+                       summary_select_node
+                               (summaryview, node,
+                                messageview_is_visible(summaryview->messageview),
+                                FALSE);
        }
 
        if (prefs_common.immediate_exec || item->stype == F_TRASH)