Skip to content

Commit ed34d92

Browse files
likorisdraveit65
authored andcommitted
Make notebook tabs scrollable
1 parent 1d82cc7 commit ed34d92

File tree

3 files changed

+60
-1
lines changed

3 files changed

+60
-1
lines changed

‎pluma/pluma-notebook.c‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -838,6 +838,16 @@ close_button_clicked_cb (PlumaTabLabel *tab_label, PlumaNotebook *notebook)
838838
g_signal_emit (notebook, signals[TAB_CLOSE_REQUEST], 0, tab);
839839
}
840840

841+
static gboolean
842+
tab_label_scroll_cb (PlumaTabLabel *tab_label,
843+
GdkEventScroll *event,
844+
PlumaNotebook *notebook)
845+
{
846+
g_signal_emit_by_name (notebook, "scroll-event", &event);
847+
848+
return FALSE;
849+
}
850+
841851
static GtkWidget *
842852
create_tab_label (PlumaNotebook *nb,
843853
PlumaTab *tab)
@@ -850,6 +860,10 @@ create_tab_label (PlumaNotebook *nb,
850860
"close-clicked",
851861
G_CALLBACK (close_button_clicked_cb),
852862
nb);
863+
g_signal_connect (tab_label,
864+
"scroll-event",
865+
G_CALLBACK (tab_label_scroll_cb),
866+
nb);
853867

854868
g_object_set_data (G_OBJECT (tab), "tab-label", tab_label);
855869

‎pluma/pluma-tab-label.c‎

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,16 @@ close_button_clicked_cb (GtkWidget *widget,
114114
g_signal_emit (tab_label, signals[CLOSE_CLICKED], 0, NULL);
115115
}
116116

117+
static gboolean
118+
scroll_event_cb(GtkWidget *widget,
119+
GdkEventScroll *event,
120+
PlumaTabLabel *tab_label)
121+
{
122+
g_signal_emit_by_name(tab_label, "scroll-event", &event);
123+
124+
return FALSE;
125+
}
126+
117127
static void
118128
sync_tip (PlumaTab *tab, PlumaTabLabel *tab_label)
119129
{
@@ -265,6 +275,7 @@ pluma_tab_label_init (PlumaTabLabel *tab_label)
265275
GTK_ORIENTATION_HORIZONTAL);
266276

267277
ebox = gtk_event_box_new ();
278+
gtk_widget_add_events (ebox, GDK_SCROLL_MASK);
268279
gtk_event_box_set_visible_window (GTK_EVENT_BOX (ebox), FALSE);
269280
gtk_box_pack_start (GTK_BOX (tab_label), ebox, TRUE, TRUE, 0);
270281
tab_label->priv->ebox = ebox;
@@ -273,6 +284,7 @@ pluma_tab_label_init (PlumaTabLabel *tab_label)
273284
gtk_container_add (GTK_CONTAINER (ebox), hbox);
274285

275286
close_button = pluma_close_button_new ();
287+
gtk_widget_add_events (close_button, GDK_SCROLL_MASK);
276288
gtk_widget_set_tooltip_text (close_button, _("Close document"));
277289
gtk_box_pack_start (GTK_BOX (tab_label), close_button, FALSE, FALSE, 0);
278290
tab_label->priv->close_button = close_button;
@@ -281,6 +293,16 @@ pluma_tab_label_init (PlumaTabLabel *tab_label)
281293
"clicked",
282294
G_CALLBACK (close_button_clicked_cb),
283295
tab_label);
296+
297+
g_signal_connect (close_button,
298+
"scroll-event",
299+
G_CALLBACK (scroll_event_cb),
300+
tab_label);
301+
302+
g_signal_connect (ebox,
303+
"scroll-event",
304+
G_CALLBACK (scroll_event_cb),
305+
tab_label);
284306

285307
spinner = gtk_spinner_new ();
286308
gtk_box_pack_start (GTK_BOX (hbox), spinner, FALSE, FALSE, 0);

‎pluma/pluma-window.c‎

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
#include <sys/types.h>
3737
#include <string.h>
3838

39+
#include <gdk/gdk.h>
3940
#include <glib/gi18n.h>
4041
#include <gio/gio.h>
4142
#include <gtk/gtk.h>
@@ -3490,6 +3491,23 @@ notebook_button_press_event (GtkNotebook *notebook,
34903491
return FALSE;
34913492
}
34923493

3494+
static gboolean
3495+
notebook_scroll_event (GtkNotebook *notebook,
3496+
GdkEventScroll *event,
3497+
PlumaWindow *window)
3498+
{
3499+
if (event->direction == GDK_SCROLL_UP || event->direction == GDK_SCROLL_LEFT)
3500+
{
3501+
gtk_notebook_prev_page (notebook);
3502+
}
3503+
else if (event->direction == GDK_SCROLL_DOWN || event->direction == GDK_SCROLL_RIGHT)
3504+
{
3505+
gtk_notebook_next_page (notebook);
3506+
}
3507+
3508+
return FALSE;
3509+
}
3510+
34933511
static gboolean
34943512
notebook_popup_menu (GtkNotebook *notebook,
34953513
PlumaWindow *window)
@@ -3856,6 +3874,10 @@ connect_notebook_signals (PlumaWindow *window,
38563874
"popup-menu",
38573875
G_CALLBACK (notebook_popup_menu),
38583876
window);
3877+
g_signal_connect (notebook,
3878+
"scroll-event",
3879+
G_CALLBACK (notebook_scroll_event),
3880+
window);
38593881
}
38603882

38613883
static void
@@ -3868,7 +3890,8 @@ add_notebook (PlumaWindow *window,
38683890
TRUE);
38693891

38703892
gtk_widget_show (notebook);
3871-
3893+
3894+
gtk_widget_add_events (notebook, GDK_SCROLL_MASK);
38723895
connect_notebook_signals (window, notebook);
38733896
}
38743897

0 commit comments

Comments
 (0)