diff --git a/schemas/linux/application.gschema.xml.in b/schemas/linux/application.gschema.xml.in index b3d1ec4..e3cb7ad 100644 --- a/schemas/linux/application.gschema.xml.in +++ b/schemas/linux/application.gschema.xml.in @@ -44,6 +44,18 @@ Allow changing of host session properties + + true + Enable new tab actions + Enable new tab actions + + + + true + Enable new window actions + Enable new window actions + + diff --git a/src/objects/application/application.c b/src/objects/application/application.c index c9bf265..461411b 100644 --- a/src/objects/application/application.c +++ b/src/objects/application/application.c @@ -352,14 +352,15 @@ G_APPLICATION_CLASS(pw3270Application_parent_class)->startup(application); + g_autoptr(GSettings) settings = pw3270_application_get_settings(application); + + // + // Common actions + // GAction * actions[] = { pw3270_about_action_new(), pw3270_preferences_action_new(), - pw3270_new_tab_action_new(), - pw3270_new_window_action_new(), - pw3270_quit_action_new(), - pw3270_open_window_action_new(), - pw3270_open_tab_action_new() + pw3270_quit_action_new() }; for(ix = 0; ix < G_N_ELEMENTS(actions); ix++) { @@ -367,6 +368,38 @@ } // + // New tab actions + // + if(g_settings_get_boolean(settings,"allow-new-tab-actions")) { + + GAction * new_tab_actions[] = { + pw3270_open_tab_action_new(), + pw3270_new_tab_action_new() + }; + + for(ix = 0; ix < G_N_ELEMENTS(new_tab_actions); ix++) { + g_action_map_add_action(G_ACTION_MAP(application),new_tab_actions[ix]); + } + + } + + // + // New window actions + // + if(g_settings_get_boolean(settings,"allow-new-window-actions")) { + + GAction * new_window_actions[] = { + pw3270_open_window_action_new(), + pw3270_new_window_action_new() + }; + + for(ix = 0; ix < G_N_ELEMENTS(new_window_actions); ix++) { + g_action_map_add_action(G_ACTION_MAP(application),new_window_actions[ix]); + } + + } + + // // Setup application menus // GtkBuilder * builder; -- libgit2 0.21.2