From 891c6a41de04fe2180fff426b7c74b4ac1eeda80 Mon Sep 17 00:00:00 2001 From: Jacob Duba Date: Sat, 22 Oct 2022 02:05:20 -0500 Subject: [PATCH 1/5] Zoom with Ctrl + Scroll --- src/kgx-terminal.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/kgx-terminal.c b/src/kgx-terminal.c index b9ff115..e3a5724 100644 --- a/src/kgx-terminal.c +++ b/src/kgx-terminal.c @@ -751,6 +751,31 @@ dark_changed (KgxTerminal *self) } } +static gboolean +on_scroll_scrolled_cb (GtkEventControllerScroll *scroll, + double dx, + double dy, + KgxTerminal *self) +{ + GtkApplication *app; + GdkModifierType mods; + GAction *action; + + mods = gtk_event_controller_get_current_event_state (GTK_EVENT_CONTROLLER (scroll)); + app = GTK_APPLICATION (g_application_get_default ()); + action = NULL; + + if ((mods & GDK_CONTROL_MASK) != 0) { + if (dy > 0) { + action = g_action_map_lookup_action (G_ACTION_MAP (app), "zoom-in"); + } else if (dy < 0) { + action = g_action_map_lookup_action (G_ACTION_MAP (app), "zoom-out"); + } + g_action_activate (action, NULL); + return true; + } + return false; +} static void kgx_terminal_init (KgxTerminal *self) @@ -769,6 +794,14 @@ kgx_terminal_init (KgxTerminal *self) g_signal_connect (gesture, "pressed", G_CALLBACK (long_pressed), self); gtk_widget_add_controller (GTK_WIDGET (self), GTK_EVENT_CONTROLLER (gesture)); + controller = gtk_event_controller_scroll_new (GTK_EVENT_CONTROLLER_SCROLL_VERTICAL); + gtk_event_controller_set_propagation_phase (controller, GTK_PHASE_CAPTURE); + g_signal_connect (controller, + "scroll", + G_CALLBACK (on_scroll_scrolled_cb), + self); + gtk_widget_add_controller (GTK_WIDGET (self), controller); + controller = gtk_shortcut_controller_new (); gtk_event_controller_set_propagation_phase (controller, GTK_PHASE_CAPTURE); gtk_widget_add_controller (GTK_WIDGET (self), controller); -- GitLab From f28588021a4b8c2723e9fae3574e431140e8a36a Mon Sep 17 00:00:00 2001 From: Jacob Duba Date: Tue, 25 Oct 2022 13:38:51 -0500 Subject: [PATCH 2/5] Fix for review --- src/kgx-terminal.c | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/src/kgx-terminal.c b/src/kgx-terminal.c index e3a5724..ac51930 100644 --- a/src/kgx-terminal.c +++ b/src/kgx-terminal.c @@ -752,29 +752,25 @@ dark_changed (KgxTerminal *self) } static gboolean -on_scroll_scrolled_cb (GtkEventControllerScroll *scroll, - double dx, - double dy, - KgxTerminal *self) +on_scroll (GtkEventControllerScroll *scroll, + double dx, + double dy, + KgxTerminal *self) { - GtkApplication *app; - GdkModifierType mods; - GAction *action; + GtkApplication *app = GTK_APPLICATION (g_application_get_default ()); + GdkModifierType mods = gtk_event_controller_get_current_event_state (GTK_EVENT_CONTROLLER (scroll)); + GAction *action = NULL; - mods = gtk_event_controller_get_current_event_state (GTK_EVENT_CONTROLLER (scroll)); - app = GTK_APPLICATION (g_application_get_default ()); - action = NULL; + if ((mods & GDK_CONTROL_MASK) == 0) return FALSE; + if (dy == 0) return FALSE; // Do nothing on horizontal scroll - if ((mods & GDK_CONTROL_MASK) != 0) { - if (dy > 0) { - action = g_action_map_lookup_action (G_ACTION_MAP (app), "zoom-in"); - } else if (dy < 0) { - action = g_action_map_lookup_action (G_ACTION_MAP (app), "zoom-out"); - } - g_action_activate (action, NULL); - return true; + if (dy > 0) { + action = g_action_map_lookup_action (G_ACTION_MAP (app), "zoom-in"); + } else { + action = g_action_map_lookup_action (G_ACTION_MAP (app), "zoom-out"); } - return false; + g_action_activate (action, NULL); + return TRUE; } static void @@ -798,7 +794,7 @@ kgx_terminal_init (KgxTerminal *self) gtk_event_controller_set_propagation_phase (controller, GTK_PHASE_CAPTURE); g_signal_connect (controller, "scroll", - G_CALLBACK (on_scroll_scrolled_cb), + G_CALLBACK (on_scroll), self); gtk_widget_add_controller (GTK_WIDGET (self), controller); -- GitLab From db55653b19cf85f60c34460aa0d53c279beb15cd Mon Sep 17 00:00:00 2001 From: Zander Brown Date: Tue, 25 Oct 2022 20:38:08 +0000 Subject: [PATCH 3/5] Apply 1 suggestion(s) to 1 file(s) --- src/kgx-terminal.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/kgx-terminal.c b/src/kgx-terminal.c index ac51930..38ca3cb 100644 --- a/src/kgx-terminal.c +++ b/src/kgx-terminal.c @@ -761,8 +761,9 @@ on_scroll (GtkEventControllerScroll *scroll, GdkModifierType mods = gtk_event_controller_get_current_event_state (GTK_EVENT_CONTROLLER (scroll)); GAction *action = NULL; - if ((mods & GDK_CONTROL_MASK) == 0) return FALSE; - if (dy == 0) return FALSE; // Do nothing on horizontal scroll + if ((mods & GDK_CONTROL_MASK) == 0 || dy == 0) { + return FALSE; / * Do nothing on horizontal scroll */ + } if (dy > 0) { action = g_action_map_lookup_action (G_ACTION_MAP (app), "zoom-in"); -- GitLab From 4c339d8dfddf584f247bc691a02bb687df6cf100 Mon Sep 17 00:00:00 2001 From: Jacob Duba Date: Tue, 25 Oct 2022 15:49:30 -0500 Subject: [PATCH 4/5] Remove cast, fix null edge case --- src/kgx-terminal.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/kgx-terminal.c b/src/kgx-terminal.c index 38ca3cb..0d628d7 100644 --- a/src/kgx-terminal.c +++ b/src/kgx-terminal.c @@ -757,12 +757,12 @@ on_scroll (GtkEventControllerScroll *scroll, double dy, KgxTerminal *self) { - GtkApplication *app = GTK_APPLICATION (g_application_get_default ()); + GApplication *app = g_application_get_default (); GdkModifierType mods = gtk_event_controller_get_current_event_state (GTK_EVENT_CONTROLLER (scroll)); - GAction *action = NULL; + GAction *action; if ((mods & GDK_CONTROL_MASK) == 0 || dy == 0) { - return FALSE; / * Do nothing on horizontal scroll */ + return FALSE; } if (dy > 0) { @@ -770,6 +770,7 @@ on_scroll (GtkEventControllerScroll *scroll, } else { action = g_action_map_lookup_action (G_ACTION_MAP (app), "zoom-out"); } + g_action_activate (action, NULL); return TRUE; } -- GitLab From 98f4da5d17a445def96dedee2ce1fa16602fefbf Mon Sep 17 00:00:00 2001 From: Jacob Duba Date: Fri, 4 Nov 2022 13:42:25 -0500 Subject: [PATCH 5/5] Define action as null initially --- src/kgx-terminal.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/kgx-terminal.c b/src/kgx-terminal.c index 0d628d7..fb2a063 100644 --- a/src/kgx-terminal.c +++ b/src/kgx-terminal.c @@ -759,7 +759,7 @@ on_scroll (GtkEventControllerScroll *scroll, { GApplication *app = g_application_get_default (); GdkModifierType mods = gtk_event_controller_get_current_event_state (GTK_EVENT_CONTROLLER (scroll)); - GAction *action; + GAction *action = NULL; if ((mods & GDK_CONTROL_MASK) == 0 || dy == 0) { return FALSE; -- GitLab