diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/tab-chrome.c | 60 | ||||
-rw-r--r-- | src/tab-chrome.h | 1 |
2 files changed, 61 insertions, 0 deletions
diff --git a/src/tab-chrome.c b/src/tab-chrome.c index bb360d3..e724809 100644 --- a/src/tab-chrome.c +++ b/src/tab-chrome.c @@ -243,6 +243,56 @@ uri_activate_cb(GtkEntry *entry, MqTabChrome *chrome) gtk_entry_get_text(GTK_ENTRY(entry))); } +#define BUTTON_ROWS 5 +#define BUTTON_COLS 3 +#define NEW_BUTTON(Y, X, ICON, TOOLTIP) \ + do { \ + buttons[Y * BUTTON_COLS + X] = gtk_button_new_from_icon_name(\ + ICON, GTK_ICON_SIZE_BUTTON); \ + gtk_widget_set_tooltip_text(buttons[Y * BUTTON_COLS + X], \ + TOOLTIP); \ + gtk_grid_attach(GTK_GRID(grid), buttons[Y * BUTTON_COLS + X], \ + X, Y, 1, 1); \ + } while (0) + +static void +menu_button_clicked_cb(GtkToolButton *tool_button, + MqTabChrome __attribute__((unused)) *chrome) +{ + GtkWidget *grid; + GtkWidget *buttons[BUTTON_ROWS * BUTTON_COLS]; + GtkWidget *popover; + + /* Set up the grid. */ + grid = gtk_grid_new(); + + NEW_BUTTON(0, 0, "document-open", "Open file"); + NEW_BUTTON(0, 1, "document-save-as", "Save page"); + NEW_BUTTON(0, 2, "mail-message-new", "E-mail link"); + NEW_BUTTON(1, 0, "edit-find", "Find"); + NEW_BUTTON(1, 1, "document-print-preview", "Print preview"); + NEW_BUTTON(1, 2, "document-print", "Print"); + NEW_BUTTON(2, 0, "bookmark-new", "Bookmarks"); + NEW_BUTTON(2, 1, "document-open-recent", "History"); + NEW_BUTTON(2, 2, "document-save", "Downloads"); + NEW_BUTTON(3, 0, "view-fullscreen", "Full screen"); + NEW_BUTTON(3, 1, "document-properties", "Developer tools"); + NEW_BUTTON(3, 2, "system-run", "Preferences"); + NEW_BUTTON(4, 0, "help-about", "About Marquee"); + NEW_BUTTON(4, 2, "application-exit", "Quit"); + + /* Set up the popover. */ + popover = gtk_popover_new(GTK_WIDGET(tool_button)); + gtk_container_add(GTK_CONTAINER(popover), grid); + + /* NB: gtk_popover_popup() is new in GTK+ 3.22. */ + gtk_widget_show_all(popover); +} + +#undef BUTTON_ROWS +#undef BUTTON_COLS +#undef NEW_BUTTON + static GtkWidget * navigation_toolbar_new(MqTabChrome *chrome, gchar *uri) { @@ -324,6 +374,16 @@ navigation_toolbar_new(MqTabChrome *chrome, gchar *uri) pango_attr_list_insert(chrome->hovered_link_style, pango_attr_style_new(PANGO_STYLE_ITALIC)); + /* Menu button */ + chrome->menu_button = gtk_tool_button_new( + gtk_image_new_from_icon_name("open-menu-symbolic", + GTK_ICON_SIZE_SMALL_TOOLBAR), "Menu"); + gtk_widget_set_tooltip_text(GTK_WIDGET(chrome->menu_button), + "Open menu"); + g_signal_connect(chrome->menu_button, "clicked", + G_CALLBACK(menu_button_clicked_cb), chrome); + gtk_toolbar_insert(navigation_toolbar, chrome->menu_button, -1); + gtk_widget_set_hexpand(GTK_WIDGET(navigation_toolbar), TRUE); chrome->load_failed = FALSE; diff --git a/src/tab-chrome.h b/src/tab-chrome.h index baf0e3a..4940fc8 100644 --- a/src/tab-chrome.h +++ b/src/tab-chrome.h @@ -42,6 +42,7 @@ typedef struct { gboolean load_failed; GtkWidget *back_forward_popover; gint back_items; + GtkToolItem *menu_button; } MqTabChrome; MqTabChrome * |