summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKhalid Abu Shawarib <khalid.shawarib@gmail.com>2023-04-26 17:19:04 +0300
committerCorey Berla <corey@berla.me>2023-05-09 21:24:30 +0000
commite76b84b8ba03f47d02f4ea56582e2e267ef73a92 (patch)
tree44c0f79aca26ed8850d4c835a51d18c8a0f72a52
parent52ee9f8cd7fc05114424dc64accc405a2f809095 (diff)
downloadnautilus-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.c19
-rw-r--r--src/resources/ui/nautilus-window.ui1
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">