|
59 | 59 | #define KEY_XKB_OPTIONS "xkb-options" |
60 | 60 |
|
61 | 61 | #define KEY_MOUSEWHEEL_ZOOM_ENABLED "screen-magnifier-enabled" |
| 62 | +#define KEY_BRING_ACTIVATED_WINDOWS_TO_CURRENT_WORKSPACE "bring-windows-to-current-workspace" |
62 | 63 |
|
63 | 64 | #define KEY_OVERLAY_KEY "overlay-key" |
64 | 65 | #define KEY_WORKSPACES_ONLY_ON_PRIMARY "workspaces-only-on-primary" |
|
74 | 75 | #define SCHEMA_INPUT_SOURCES "org.cinnamon.desktop.input-sources" |
75 | 76 | #define SCHEMA_MOUSE "org.cinnamon.desktop.peripherals.mouse" |
76 | 77 | #define SCHEMA_A11Y_APPLICATIONS "org.cinnamon.desktop.a11y.applications" |
| 78 | +#define SCHEMA_CINNAMON "org.cinnamon" |
77 | 79 |
|
78 | 80 | #define SETTINGS(s) g_hash_table_lookup (settings_schemas, (s)) |
79 | 81 |
|
@@ -141,6 +143,7 @@ static gboolean unredirect_fullscreen_windows = FALSE; |
141 | 143 | static gboolean tile_maximize = FALSE; |
142 | 144 | static char *gtk_theme = NULL; |
143 | 145 | static char *bell_sound = NULL; |
| 146 | +static gboolean bring_user_activated_windows_to_current_workspace = FALSE; |
144 | 147 |
|
145 | 148 | static void handle_preference_update_enum (GSettings *settings, |
146 | 149 | gchar *key); |
@@ -461,6 +464,13 @@ static MetaBoolPreference preferences_bool[] = |
461 | 464 | }, |
462 | 465 | &tile_maximize, |
463 | 466 | }, |
| 467 | + { |
| 468 | + { "bring-windows-to-current-workspace", |
| 469 | + SCHEMA_CINNAMON, |
| 470 | + META_PREF_BRING_WINDOWS_TO_CURRENT_WORKSPACE, |
| 471 | + }, |
| 472 | + &bring_user_activated_windows_to_current_workspace, |
| 473 | + }, |
464 | 474 | { { NULL, 0, 0 }, NULL }, |
465 | 475 | }; |
466 | 476 |
|
@@ -1103,9 +1113,13 @@ meta_prefs_init (void) |
1103 | 1113 | settings = g_settings_new (SCHEMA_A11Y_APPLICATIONS); |
1104 | 1114 | g_signal_connect (settings, "changed::" KEY_MOUSEWHEEL_ZOOM_ENABLED, |
1105 | 1115 | G_CALLBACK (settings_changed), NULL); |
1106 | | - |
1107 | 1116 | g_hash_table_insert (settings_schemas, g_strdup (SCHEMA_A11Y_APPLICATIONS), settings); |
1108 | 1117 |
|
| 1118 | + settings = g_settings_new (SCHEMA_CINNAMON); |
| 1119 | + g_signal_connect (settings, "changed::" KEY_BRING_ACTIVATED_WINDOWS_TO_CURRENT_WORKSPACE, |
| 1120 | + G_CALLBACK (settings_changed), NULL); |
| 1121 | + g_hash_table_insert (settings_schemas, g_strdup (SCHEMA_CINNAMON), settings); |
| 1122 | + |
1109 | 1123 | /* Individual keys we watch outside of our schemas */ |
1110 | 1124 | settings = g_settings_new (SCHEMA_INTERFACE); |
1111 | 1125 | g_signal_connect (settings, "changed::" KEY_GNOME_ACCESSIBILITY, |
@@ -1313,6 +1327,15 @@ meta_prefs_get_raise_on_click (void) |
1313 | 1327 | return raise_on_click; |
1314 | 1328 | } |
1315 | 1329 |
|
| 1330 | +gboolean |
| 1331 | +meta_prefs_get_bring_windows_to_current_workspace (void) |
| 1332 | +{ |
| 1333 | + /* Windows that the user activates (with a current timestamp) will |
| 1334 | + * be brought to the currently active workspace if necessary. Normally |
| 1335 | + * the user is brought to the window's workspace instead. */ |
| 1336 | + return bring_user_activated_windows_to_current_workspace; |
| 1337 | +} |
| 1338 | + |
1316 | 1339 | gboolean |
1317 | 1340 | meta_prefs_get_show_fallback_app_menu (void) |
1318 | 1341 | { |
@@ -1929,6 +1952,9 @@ meta_preference_to_string (MetaPreference pref) |
1929 | 1952 |
|
1930 | 1953 | case META_PREF_BELL_SOUND: |
1931 | 1954 | return "BELL_SOUND"; |
| 1955 | + |
| 1956 | + case META_PREF_BRING_WINDOWS_TO_CURRENT_WORKSPACE: |
| 1957 | + return "BRING_WINDOWS_TO_CURRENT_WORKSPACE"; |
1932 | 1958 | } |
1933 | 1959 |
|
1934 | 1960 | return "(unknown)"; |
|
0 commit comments