diff options
-rw-r--r-- | src/tab.c | 28 |
1 files changed, 20 insertions, 8 deletions
@@ -167,8 +167,14 @@ tab_list_button_toggled_cb(GtkToggleButton *toggle_button, GtkWidget *tab_list) #define CLICKED_CB(Y, X, CB) \ g_signal_connect(buttons[Y * BUTTON_COLS + X], "clicked", CB, tab) -static gboolean -tab_label_button_press_cb(GtkWidget *widget, GdkEvent *event, MqTab *tab) +static GtkWidget * +create_tab_list(void) +{ + return gtk_label_new("Tab list"); +} + +static void +create_tab_popover(GtkWidget *widget, MqTab *tab) { GtkWidget *button_grid; GtkWidget *buttons[BUTTON_ROWS * BUTTON_COLS]; @@ -176,11 +182,6 @@ tab_label_button_press_cb(GtkWidget *widget, GdkEvent *event, MqTab *tab) GtkWidget *tab_list_scrolled_window; GtkWidget *box; - /* Make sure this is a right mouse button press event. */ - if (event->type != GDK_BUTTON_PRESS || event->button.button != 3) { - return FALSE; - } - /* Set up button grid. */ button_grid = gtk_grid_new(); gtk_widget_set_halign(button_grid, GTK_ALIGN_CENTER); @@ -200,7 +201,7 @@ tab_label_button_press_cb(GtkWidget *widget, GdkEvent *event, MqTab *tab) CLICKED_CB(1, 1, G_CALLBACK(new_window_clicked_cb)); /* Set up the tab list. */ - tab_list = gtk_label_new("Tab list"); + tab_list = create_tab_list(); /* Set up the tab list scrolled window. * @@ -235,6 +236,17 @@ tab_label_button_press_cb(GtkWidget *widget, GdkEvent *event, MqTab *tab) /* NB: gtk_popover_popup() is new in GTK+ 3.22. */ gtk_widget_show_all(tab->popover); gtk_widget_hide(tab_list_scrolled_window); +} + +static gboolean +tab_label_button_press_cb(GtkWidget *widget, GdkEvent *event, MqTab *tab) +{ + /* Make sure this is a right mouse button press event. */ + if (event->type != GDK_BUTTON_PRESS || event->button.button != 3) { + return FALSE; + } + + create_tab_popover(widget, tab); return FALSE; } |