aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-07-04 06:28:36 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-07-04 06:28:36 +0000
commit8644ba8917c984017852e950784e5828772ec216 (patch)
tree57bc602525f5ae47478569f6072fcfc466c7337b
parente15e2513a81f0eb179508b633aca7d2cfa232450 (diff)
fixed selection becoming wrong when another folder was clicked quickly.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@392 ee746299-78ed-0310-b773-934348b2243d
-rw-r--r--ChangeLog6
-rw-r--r--ChangeLog.ja6
-rw-r--r--src/folderview.c10
-rw-r--r--src/folderview.h2
4 files changed, 24 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index ac6e2c27..8ba6abb7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2005-07-04
+ * src/folderview.[ch]: lock button/key input while a folder is
+ loading (fixed selection becoming wrong when another folder was
+ clicked quickly).
+
+2005-07-04
+
* src/mh.c: unified move_folder and rename_folder.
2005-07-04
diff --git a/ChangeLog.ja b/ChangeLog.ja
index c15b1dbd..80a3cb6d 100644
--- a/ChangeLog.ja
+++ b/ChangeLog.ja
@@ -1,5 +1,11 @@
2005-07-04
+ * src/folderview.[ch]: フォルダを開こうとしている間はボタン/キー入力
+ をロックするようにした(別のフォルダを素早くクリックしたときに
+ 選択状態が不正になるのを修正)。
+
+2005-07-04
+
* move_folder と rename_folder を統合。
2005-07-04
diff --git a/src/folderview.c b/src/folderview.c
index 15b7f86a..eff37d90 100644
--- a/src/folderview.c
+++ b/src/folderview.c
@@ -1555,6 +1555,9 @@ static gboolean folderview_button_pressed(GtkWidget *widget,
&path, NULL, NULL, NULL))
return TRUE;
+ if (folderview->selection_locked)
+ return TRUE;
+
if (event->button == 1 || event->button == 2) {
folderview->open_folder = TRUE;
} else if (event->button == 3) {
@@ -1588,6 +1591,9 @@ static gboolean folderview_key_pressed(GtkWidget *widget, GdkEventKey *event,
if (!event) return FALSE;
+ if (folderview->selection_locked)
+ return TRUE;
+
switch (event->keyval) {
case GDK_Return:
if (folderview->selected) {
@@ -1688,6 +1694,8 @@ static void folderview_selection_changed(GtkTreeSelection *selection,
gtk_tree_path_free(open_path);
}
+ folderview->selection_locked = TRUE;
+
GTK_EVENTS_FLUSH();
opened = summary_show(folderview->summaryview, item, FALSE);
@@ -1708,6 +1716,8 @@ static void folderview_selection_changed(GtkTreeSelection *selection,
folderview_select_row_ref(folderview, folderview->opened);
gtk_tree_path_free(path);
+
+ folderview->selection_locked = FALSE;
}
static void folderview_row_expanded(GtkTreeView *treeview, GtkTreeIter *iter,
diff --git a/src/folderview.h b/src/folderview.h
index 5fb251f2..1787678a 100644
--- a/src/folderview.h
+++ b/src/folderview.h
@@ -58,6 +58,8 @@ struct _FolderView
guint expand_timeout;
guint scroll_timeout;
+ gboolean selection_locked;
+
GdkColor color_new;
GdkColor color_noselect;