1
1
mirror of https://gitlab.gnome.org/GNOME/gimp.git synced 2025-10-06 09:32:41 +02:00

Compare commits

...

1 Commits

Author SHA1 Message Date
Alx Sa
5e307f4481 app/display: Restore GTK2 scroll behavior on image tabs
This is the same as 3beb2e88, but applied to image tabs in
GimpImageWindow.
2025-05-14 09:18:07 -03:00

View File

@@ -248,6 +248,9 @@ static void gimp_image_window_page_reordered (GtkNotebook *not
GtkWidget *widget,
gint page_num,
GimpImageWindow *window);
static gboolean gimp_image_window_page_scrolled (GtkWidget *widget,
GdkEventScroll *event,
GimpImageWindow *window);
static void gimp_image_window_disconnect_from_active_shell
(GimpImageWindow *window);
@@ -530,6 +533,11 @@ gimp_image_window_constructed (GObject *object)
g_signal_connect (private->notebook, "page-reordered",
G_CALLBACK (gimp_image_window_page_reordered),
window);
gtk_widget_add_events (GTK_WIDGET (private->notebook),
GDK_SCROLL_MASK);
g_signal_connect (private->notebook, "scroll-event",
G_CALLBACK (gimp_image_window_page_scrolled),
window);
gtk_widget_show (private->notebook);
/* Create the right dock columns widget */
@@ -2190,6 +2198,45 @@ gimp_image_window_page_reordered (GtkNotebook *notebook,
gtk_notebook_reorder_child (notebook, widget, page_num);
}
/* Restore GTK2 behavior of mouse-scrolling to switch between
* notebook tabs. References Geany's notebook_tab_bar_click_cb ()
* at https://github.com/geany/geany/blob/master/src/notebook.c
*/
static gboolean
gimp_image_window_page_scrolled (GtkWidget *widget,
GdkEventScroll *event,
GimpImageWindow *window)
{
GtkNotebook *notebook = NULL;
GimpImageWindowPrivate *private = GIMP_IMAGE_WINDOW_GET_PRIVATE (window);
GtkWidget *page = NULL;
notebook = GTK_NOTEBOOK (private->notebook);
page = gtk_notebook_get_nth_page (notebook,
gtk_notebook_get_current_page (notebook));
if (! page)
return FALSE;
switch (event->direction)
{
case GDK_SCROLL_RIGHT:
case GDK_SCROLL_DOWN:
gtk_notebook_next_page (notebook);
break;
case GDK_SCROLL_LEFT:
case GDK_SCROLL_UP:
gtk_notebook_prev_page (notebook);
break;
default:
break;
}
return TRUE;
}
static void
gimp_image_window_disconnect_from_active_shell (GimpImageWindow *window)
{
@@ -2470,6 +2517,11 @@ gimp_image_window_create_tab_label (GimpImageWindow *window,
G_CALLBACK (gimp_image_window_shell_close_button_callback),
shell);
/* Enable mouse wheel scolling on image tabs */
gtk_widget_add_events (GTK_WIDGET (hbox), GDK_SCROLL_MASK);
gtk_widget_add_events (GTK_WIDGET (view), GDK_SCROLL_MASK);
gtk_widget_add_events (GTK_WIDGET (button), GDK_SCROLL_MASK);
g_object_set_data (G_OBJECT (hbox), "close-button", button);
return hbox;