diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | ChangeLog.ja | 5 | ||||
-rw-r--r-- | src/mainwindow.c | 6 |
3 files changed, 16 insertions, 0 deletions
@@ -1,3 +1,8 @@ +2007-09-26 + + * src/mainwindow.c: main_window_separation_change(): keep previous + focus when separation changed. + 2007-09-20 libsylph/utils.c diff --git a/ChangeLog.ja b/ChangeLog.ja index 7bbb4082..599d2120 100644 --- a/ChangeLog.ja +++ b/ChangeLog.ja @@ -1,3 +1,8 @@ +2007-09-26 + + * src/mainwindow.c: main_window_separation_change(): 分離状態が変更 + された場合、以前のフォーカスを保持するようにした。 + 2007-09-20 libsylph/utils.c diff --git a/src/mainwindow.c b/src/mainwindow.c index 490bffe1..af3ed9bb 100644 --- a/src/mainwindow.c +++ b/src/mainwindow.c @@ -1403,12 +1403,16 @@ void main_window_separation_change(MainWindow *mainwin, SeparateType type) GtkWidget *folder_wid = GTK_WIDGET_PTR(mainwin->folderview); GtkWidget *summary_wid = GTK_WIDGET_PTR(mainwin->summaryview); GtkWidget *message_wid = GTK_WIDGET_PTR(mainwin->messageview); + GtkWidget *focus_widget; debug_print(_("Changing window separation type from %d to %d\n"), mainwin->type, type); if (mainwin->type == type) return; + /* keep previous focus */ + focus_widget = gtk_window_get_focus(GTK_WINDOW(mainwin->window)); + /* remove widgets from those containers */ gtk_widget_ref(folder_wid); gtk_widget_ref(summary_wid); @@ -1442,6 +1446,8 @@ void main_window_separation_change(MainWindow *mainwin, SeparateType type) gtk_widget_hide(mainwin->window); main_window_set_widgets(mainwin, type); gtk_widget_show(mainwin->window); + if (focus_widget) + gtk_widget_grab_focus(focus_widget); gtk_widget_unref(folder_wid); gtk_widget_unref(summary_wid); |