From 641edb4693162b0b34215c0235a78094bae33478 Mon Sep 17 00:00:00 2001 From: Colin Leroy Date: Tue, 7 Oct 2008 14:54:54 +0000 Subject: [PATCH] 2008-10-07 [colin] 3.6.0cvs12 * src/mainwindow.c * src/mainwindow.h * src/prefs_common.c * src/prefs_common.h * src/summaryview.c * src/gtk/colorlabel.c Fix bug 1749, 'Shortcut keys for color labels not changeable' Make fullscreen a setting remembered between sessions --- ChangeLog | 13 +++++++++++ PATCHSETS | 1 + configure.ac | 2 +- src/gtk/colorlabel.c | 10 ++++++++- src/mainwindow.c | 53 ++++++++++++++++++++++++++++++++++---------- src/mainwindow.h | 5 +++-- src/prefs_common.c | 2 ++ src/prefs_common.h | 1 + src/summaryview.c | 4 +++- 9 files changed, 74 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index 15a603519..9d5b9e89c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2008-10-07 [colin] 3.6.0cvs12 + + * src/mainwindow.c + * src/mainwindow.h + * src/prefs_common.c + * src/prefs_common.h + * src/summaryview.c + * src/gtk/colorlabel.c + Fix bug 1749, 'Shortcut keys for color labels + not changeable' + Make fullscreen a setting remembered between + sessions + 2008-10-07 [colin] 3.6.0cvs11 * src/prefs_other.c diff --git a/PATCHSETS b/PATCHSETS index 68aa3b833..6bb2491d8 100644 --- a/PATCHSETS +++ b/PATCHSETS @@ -3568,3 +3568,4 @@ ( cvs diff -u -r 1.274.2.278 -r 1.274.2.279 src/mainwindow.c; ) > 3.6.0cvs9.patchset ( cvs diff -u -r 1.274.2.279 -r 1.274.2.280 src/mainwindow.c; ) > 3.6.0cvs10.patchset ( cvs diff -u -r 1.1.2.32 -r 1.1.2.33 src/prefs_other.c; ) > 3.6.0cvs11.patchset +( cvs diff -u -r 1.274.2.280 -r 1.274.2.281 src/mainwindow.c; cvs diff -u -r 1.39.2.52 -r 1.39.2.53 src/mainwindow.h; cvs diff -u -r 1.204.2.180 -r 1.204.2.181 src/prefs_common.c; cvs diff -u -r 1.103.2.115 -r 1.103.2.116 src/prefs_common.h; cvs diff -u -r 1.395.2.394 -r 1.395.2.395 src/summaryview.c; cvs diff -u -r 1.2.2.23 -r 1.2.2.24 src/gtk/colorlabel.c; ) > 3.6.0cvs12.patchset diff --git a/configure.ac b/configure.ac index aad662008..675915fde 100644 --- a/configure.ac +++ b/configure.ac @@ -11,7 +11,7 @@ MINOR_VERSION=6 MICRO_VERSION=0 INTERFACE_AGE=0 BINARY_AGE=0 -EXTRA_VERSION=11 +EXTRA_VERSION=12 EXTRA_RELEASE= EXTRA_GTK2_VERSION= diff --git a/src/gtk/colorlabel.c b/src/gtk/colorlabel.c index 2543d2c6f..1b48baaf1 100644 --- a/src/gtk/colorlabel.c +++ b/src/gtk/colorlabel.c @@ -27,6 +27,7 @@ #include #include #include +#include #include "colorlabel.h" #include "utils.h" @@ -328,12 +329,19 @@ GtkWidget *colorlabel_create_check_color_menu_item(gint color_index, gboolean fo gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 4); if (color_index < 9) { - accel = g_strdup_printf(gettext("Ctrl+%c"), '1'+color_index); + accel = gtk_accelerator_get_label(GDK_1+color_index, GDK_CONTROL_MASK); label = gtk_label_new(accel); gtk_widget_show(label); gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); g_free(accel); gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 4); + g_object_set_data(G_OBJECT(item), "accel_label", label); + } else { + label = gtk_label_new(""); + gtk_widget_show(label); + gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); + gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 4); + g_object_set_data(G_OBJECT(item), "accel_label", label); } return item; } diff --git a/src/mainwindow.c b/src/mainwindow.c index 9fca790c3..93b11bf2b 100644 --- a/src/mainwindow.c +++ b/src/mainwindow.c @@ -1043,6 +1043,27 @@ static void mainwindow_tags_menu_item_activate_cb(GtkWidget *widget, summary_set_tag(mainwin->summaryview, id, NULL); } +void mainwin_accel_changed_cb (GtkAccelGroup *accelgroup, guint keyval, GdkModifierType modifier, + GClosure *closure, GtkMenuItem *item) +{ + GList *closures = gtk_widget_list_accel_closures(GTK_WIDGET(item)); + GList *cur; + for (cur = closures; cur; cur = cur->next) { + if (closure == cur->data) { + GtkLabel *label = g_object_get_data(G_OBJECT(item), "accel_label"); + gchar *new_accel; + + if (keyval == GDK_BackSpace) { + keyval = 0; modifier = 0; + gtk_accel_map_change_entry (gtk_menu_item_get_accel_path(item), keyval, modifier, TRUE); + } + new_accel = gtk_accelerator_get_label(keyval, modifier); + gtk_label_set_text(label, new_accel); + g_free(new_accel); + } + } +} + static void mainwindow_colorlabel_menu_create(MainWindow *mainwin, gboolean refresh) { GtkWidget *label_menuitem; @@ -1094,11 +1115,15 @@ static void mainwindow_colorlabel_menu_create(MainWindow *mainwin, gboolean refr g_object_set_data(G_OBJECT(item), "mainwin", mainwin); gtk_widget_show(item); - accel_path = g_strdup_printf("/%d", i); + accel_path = g_strdup_printf("/%d", i+1); gtk_menu_item_set_accel_path(GTK_MENU_ITEM(item), accel_path); if (i < 9) gtk_accel_map_add_entry(accel_path, GDK_1+i, GDK_CONTROL_MASK); g_free(accel_path); + g_signal_connect (gtk_ui_manager_get_accel_group(mainwin->ui_manager), + "accel-changed", G_CALLBACK (mainwin_accel_changed_cb), item); + + } gtk_widget_show(menu); gtk_menu_item_set_submenu(GTK_MENU_ITEM(label_menuitem), menu); @@ -1908,7 +1933,6 @@ MainWindow *main_window_create() hildon_window_set_menu(HILDON_WINDOW(window), GTK_MENU(menubar)); #endif - if (prefs_common.toolbar_detachable) { handlebox = gtk_handle_box_new(); gtk_widget_show(handlebox); @@ -2246,8 +2270,13 @@ MainWindow *main_window_create() #ifdef MAEMO main_window_install_maemo_hooks(mainwin); #endif - mainwin->fullscreen = FALSE; - +#ifndef MAEMO + if (prefs_common.mainwin_fullscreen) { + cm_toggle_menu_set_active_full(mainwin->ui_manager, + "Menu/View/FullScreen", + TRUE); + } +#endif return mainwin; } @@ -2825,11 +2854,11 @@ void main_window_get_size(MainWindow *mainwin) allocation = &(GTK_WIDGET_PTR(mainwin->summaryview)->allocation); - if (mainwin->fullscreen) { + if (prefs_common.mainwin_fullscreen) { debug_print("mainwin in full screen state. " "Keeping original settings\n"); } - if (allocation->width > 1 && allocation->height > 1 && !mainwin->fullscreen) { + if (allocation->width > 1 && allocation->height > 1 && !prefs_common.mainwin_fullscreen) { prefs_common.summaryview_width = allocation->width; if (messageview_is_visible(mainwin->messageview)) @@ -2840,7 +2869,7 @@ void main_window_get_size(MainWindow *mainwin) allocation = &mainwin->window->allocation; if (allocation->width > 1 && allocation->height > 1 && - !prefs_common.mainwin_maximised && !mainwin->fullscreen) { + !prefs_common.mainwin_maximised && !prefs_common.mainwin_fullscreen) { prefs_common.mainview_height = allocation->height; prefs_common.mainwin_width = allocation->width; prefs_common.mainwin_height = allocation->height; @@ -2848,14 +2877,14 @@ void main_window_get_size(MainWindow *mainwin) allocation = &(GTK_WIDGET_PTR(mainwin->folderview)->allocation); if (allocation->width > 1 && allocation->height > 1 && - !mainwin->fullscreen) { + !prefs_common.mainwin_fullscreen) { prefs_common.folderview_width = allocation->width; prefs_common.folderview_height = allocation->height; } allocation = &(GTK_WIDGET_PTR(mainwin->messageview)->allocation); if (allocation->width > 1 && allocation->height > 1 && - !mainwin->fullscreen) { + !prefs_common.mainwin_fullscreen) { prefs_common.msgview_width = allocation->width; prefs_common.msgview_height = allocation->height; } @@ -2875,7 +2904,7 @@ void main_window_get_position(MainWindow *mainwin) { gint x, y; - if (prefs_common.mainwin_maximised || mainwin->fullscreen) + if (prefs_common.mainwin_maximised || prefs_common.mainwin_fullscreen) return; gtkut_widget_get_uposition(mainwin->window, &x, &y); @@ -4255,10 +4284,10 @@ static void toggle_fullscreen_cb(GtkAction *action, gpointer data) if (mainwin->menu_lock_count) return; if (!gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action))) { gtk_window_unfullscreen(GTK_WINDOW(mainwin->window)); - mainwin->fullscreen = FALSE; + prefs_common.mainwin_fullscreen = FALSE; } else { - mainwin->fullscreen = TRUE; + prefs_common.mainwin_fullscreen = TRUE; gtk_window_fullscreen(GTK_WINDOW(mainwin->window)); } } diff --git a/src/mainwindow.h b/src/mainwindow.h index 095cc542a..0e74cc323 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -142,8 +142,6 @@ struct _MainWindow gboolean in_folder; GtkActionGroup *action_group; GtkUIManager *ui_manager; - - gboolean fullscreen; }; MainWindow *main_window_create (void); @@ -214,4 +212,7 @@ void maemo_connect_key_press_to_mainwindow (GtkWindow *window); void mainwindow_maemo_led_set(gboolean state); #endif +void mainwin_accel_changed_cb (GtkAccelGroup *accelgroup, guint keyval, GdkModifierType modifier, + GClosure *closure, GtkMenuItem *item); + #endif /* __MAINWINDOW_H__ */ diff --git a/src/prefs_common.c b/src/prefs_common.c index 00895da41..2f368fc2b 100644 --- a/src/prefs_common.c +++ b/src/prefs_common.c @@ -634,6 +634,8 @@ static PrefParam param[] = { NULL, NULL, NULL}, {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL, NULL, NULL, NULL}, + {"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL, + NULL, NULL, NULL}, #ifndef GENERIC_UMPC {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT, NULL, NULL, NULL}, diff --git a/src/prefs_common.h b/src/prefs_common.h index bee484c10..c7cece491 100644 --- a/src/prefs_common.h +++ b/src/prefs_common.h @@ -278,6 +278,7 @@ struct _PrefsCommon gint mainwin_width; gint mainwin_height; gint mainwin_maximised; + gint mainwin_fullscreen; gint msgwin_width; gint msgwin_height; diff --git a/src/summaryview.c b/src/summaryview.c index 54d541a37..9d51b97f8 100644 --- a/src/summaryview.c +++ b/src/summaryview.c @@ -5798,11 +5798,13 @@ static void summary_colorlabel_menu_create(SummaryView *summaryview, gboolean re g_object_set_data(G_OBJECT(item), "summaryview", summaryview); gtk_widget_show(item); - accel_path = g_strdup_printf("/%d", i); + accel_path = g_strdup_printf("/%d", i+1); gtk_menu_item_set_accel_path(GTK_MENU_ITEM(item), accel_path); if (i < 9) gtk_accel_map_add_entry(accel_path, GDK_1+i, GDK_CONTROL_MASK); g_free(accel_path); + g_signal_connect (gtk_ui_manager_get_accel_group(mainwindow_get_mainwindow()->ui_manager), + "accel-changed", G_CALLBACK (mainwin_accel_changed_cb), item); } gtk_widget_show(menu); -- 2.25.1