diff options
author | Khalid Abu Shawarib <khalid.shawarib@gmail.com> | 2023-04-26 17:19:04 +0300 |
---|---|---|
committer | Corey Berla <corey@berla.me> | 2023-05-09 21:24:30 +0000 |
commit | e76b84b8ba03f47d02f4ea56582e2e267ef73a92 (patch) | |
tree | 44c0f79aca26ed8850d4c835a51d18c8a0f72a52 | |
parent | 52ee9f8cd7fc05114424dc64accc405a2f809095 (diff) | |
download | nautilus-e76b84b8ba03f47d02f4ea56582e2e267ef73a92.tar.gz |
window: Use proper arrow directions for RTL
Change the direction of forward and backward history
navigation arrow shortcuts based on the text direction of
the application.
-rw-r--r-- | src/nautilus-window.c | 19 | ||||
-rw-r--r-- | src/resources/ui/nautilus-window.ui | 1 |
2 files changed, 16 insertions, 4 deletions
diff --git a/src/nautilus-window.c b/src/nautilus-window.c index fabd70b0b..63cbd5c3a 100644 --- a/src/nautilus-window.c +++ b/src/nautilus-window.c @@ -1557,6 +1557,18 @@ const GActionEntry win_entries[] = }; static void +window_set_back_forward_accelerators (void) +{ + GApplication *app = g_application_get_default (); + gboolean ltr = (gtk_widget_get_default_direction () == GTK_TEXT_DIR_LTR); + +#define ACCELS(...) ((const char *[]) { __VA_ARGS__, NULL }) + + nautilus_application_set_accelerators (app, "win.back", ACCELS (ltr ? "<alt>Left" : "<alt>Right", "Back")); + nautilus_application_set_accelerators (app, "win.forward", ACCELS (ltr ? "<alt>Right" : "<alt>Left", "Forward")); +} + +static void nautilus_window_initialize_actions (NautilusWindow *window) { GApplication *app; @@ -1569,11 +1581,8 @@ nautilus_window_initialize_actions (NautilusWindow *window) win_entries, G_N_ELEMENTS (win_entries), window); -#define ACCELS(...) ((const char *[]) { __VA_ARGS__, NULL }) - app = g_application_get_default (); - nautilus_application_set_accelerators (app, "win.back", ACCELS ("<alt>Left", "Back")); - nautilus_application_set_accelerators (app, "win.forward", ACCELS ("<alt>Right", "Forward")); + window_set_back_forward_accelerators (); nautilus_application_set_accelerators (app, "win.enter-location", ACCELS ("<control>l", "Go", "OpenURL")); nautilus_application_set_accelerator (app, "win.new-tab", "<control>t"); nautilus_application_set_accelerator (app, "win.close-current-view", "<control>w"); @@ -2300,6 +2309,8 @@ nautilus_window_class_init (NautilusWindowClass *class) gtk_widget_class_bind_template_child (wclass, NautilusWindow, tab_view); gtk_widget_class_bind_template_child (wclass, NautilusWindow, tab_bar); + gtk_widget_class_bind_template_callback (wclass, window_set_back_forward_accelerators); + signals[SLOT_ADDED] = g_signal_new ("slot-added", G_TYPE_FROM_CLASS (class), diff --git a/src/resources/ui/nautilus-window.ui b/src/resources/ui/nautilus-window.ui index 31afae73a..2084dbd5a 100644 --- a/src/resources/ui/nautilus-window.ui +++ b/src/resources/ui/nautilus-window.ui @@ -40,6 +40,7 @@ <template class="NautilusWindow" parent="AdwApplicationWindow"> <property name="show-menubar">False</property> <property name="title" translatable="yes">_Files</property> + <signal name="direction-changed" handler="window_set_back_forward_accelerators"/> <child> <object class="AdwToastOverlay" id="toast_overlay"> <property name="child"> |