Implement 'Customize...' on toolbar right-click
The new MidoriBrowser::populate-toolbar-menu allows extensions to add menu items. Fixes: https://bugs.launchpad.net/midori/+bug/699933
This commit is contained in:
parent
201808f9df
commit
7691130cc3
2 changed files with 45 additions and 2 deletions
|
@ -48,6 +48,9 @@ static const gint tb_editor_dnd_targets_len = G_N_ELEMENTS(tb_editor_dnd_targets
|
||||||
|
|
||||||
static void tb_editor_browser_populate_tool_menu_cb(MidoriBrowser *browser, GtkWidget *menu, MidoriExtension *ext);
|
static void tb_editor_browser_populate_tool_menu_cb(MidoriBrowser *browser, GtkWidget *menu, MidoriExtension *ext);
|
||||||
|
|
||||||
|
static void tb_editor_browser_populate_toolbar_menu_cb(MidoriBrowser *browser, GtkWidget *menu,
|
||||||
|
MidoriExtension *ext);
|
||||||
|
|
||||||
static void tb_editor_app_add_browser_cb(MidoriApp *app, MidoriBrowser *browser, MidoriExtension *ext);
|
static void tb_editor_app_add_browser_cb(MidoriApp *app, MidoriBrowser *browser, MidoriExtension *ext);
|
||||||
|
|
||||||
|
|
||||||
|
@ -56,6 +59,7 @@ static void tb_editor_deactivate_cb(MidoriExtension *extension, MidoriBrowser *b
|
||||||
MidoriApp *app = midori_extension_get_app(extension);
|
MidoriApp *app = midori_extension_get_app(extension);
|
||||||
|
|
||||||
g_signal_handlers_disconnect_by_func(browser, tb_editor_browser_populate_tool_menu_cb, extension);
|
g_signal_handlers_disconnect_by_func(browser, tb_editor_browser_populate_tool_menu_cb, extension);
|
||||||
|
g_signal_handlers_disconnect_by_func(browser, tb_editor_browser_populate_toolbar_menu_cb, extension);
|
||||||
g_signal_handlers_disconnect_by_func(extension, tb_editor_deactivate_cb, browser);
|
g_signal_handlers_disconnect_by_func(extension, tb_editor_deactivate_cb, browser);
|
||||||
g_signal_handlers_disconnect_by_func(app, tb_editor_app_add_browser_cb, extension);
|
g_signal_handlers_disconnect_by_func(app, tb_editor_app_add_browser_cb, extension);
|
||||||
}
|
}
|
||||||
|
@ -579,10 +583,27 @@ static void tb_editor_browser_populate_tool_menu_cb(MidoriBrowser *browser, GtkW
|
||||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
|
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void tb_editor_browser_populate_toolbar_menu_cb(MidoriBrowser *browser, GtkWidget *menu,
|
||||||
|
MidoriExtension *ext)
|
||||||
|
{
|
||||||
|
GtkWidget* separator;
|
||||||
|
GtkWidget* menuitem;
|
||||||
|
|
||||||
|
separator = gtk_separator_menu_item_new ();
|
||||||
|
gtk_widget_show (separator);
|
||||||
|
gtk_menu_shell_append (GTK_MENU_SHELL (menu), separator);
|
||||||
|
menuitem = gtk_menu_item_new_with_mnemonic (_("_Customize..."));
|
||||||
|
g_signal_connect (menuitem, "activate",
|
||||||
|
G_CALLBACK (tb_editor_menu_configure_toolbar_activate_cb), browser);
|
||||||
|
gtk_widget_show (menuitem);
|
||||||
|
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
|
||||||
|
}
|
||||||
|
|
||||||
static void tb_editor_app_add_browser_cb(MidoriApp *app, MidoriBrowser *browser, MidoriExtension *ext)
|
static void tb_editor_app_add_browser_cb(MidoriApp *app, MidoriBrowser *browser, MidoriExtension *ext)
|
||||||
{
|
{
|
||||||
g_signal_connect(browser, "populate-tool-menu", G_CALLBACK(tb_editor_browser_populate_tool_menu_cb), ext);
|
g_signal_connect(browser, "populate-tool-menu", G_CALLBACK(tb_editor_browser_populate_tool_menu_cb), ext);
|
||||||
g_signal_connect(ext, "deactivate", G_CALLBACK(tb_editor_deactivate_cb), browser);
|
g_signal_connect(browser, "populate-toolbar-menu", G_CALLBACK(tb_editor_browser_populate_toolbar_menu_cb), ext);
|
||||||
|
g_signal_connect(ext, "deactivate", G_CALLBACK(tb_editor_deactivate_cb), browser);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -143,6 +143,7 @@ enum
|
||||||
ADD_DOWNLOAD,
|
ADD_DOWNLOAD,
|
||||||
SEND_NOTIFICATION,
|
SEND_NOTIFICATION,
|
||||||
POPULATE_TOOL_MENU,
|
POPULATE_TOOL_MENU,
|
||||||
|
POPULATE_TOOLBAR_MENU,
|
||||||
QUIT,
|
QUIT,
|
||||||
SHOW_PREFERENCES,
|
SHOW_PREFERENCES,
|
||||||
|
|
||||||
|
@ -1852,6 +1853,25 @@ midori_browser_class_init (MidoriBrowserClass* class)
|
||||||
g_cclosure_marshal_VOID__OBJECT,
|
g_cclosure_marshal_VOID__OBJECT,
|
||||||
G_TYPE_NONE, 1,
|
G_TYPE_NONE, 1,
|
||||||
GTK_TYPE_MENU);
|
GTK_TYPE_MENU);
|
||||||
|
/**
|
||||||
|
* MidoriBrowser::populate-toolbar-menu:
|
||||||
|
* @browser: the object on which the signal is emitted
|
||||||
|
* @menu: the #GtkMenu to populate
|
||||||
|
*
|
||||||
|
* Emitted when a toolbar menu is displayed on right-click.
|
||||||
|
*
|
||||||
|
* Since: 0.3.4
|
||||||
|
*/
|
||||||
|
signals[POPULATE_TOOLBAR_MENU] = g_signal_new (
|
||||||
|
"populate-toolbar-menu",
|
||||||
|
G_TYPE_FROM_CLASS (class),
|
||||||
|
(GSignalFlags)(G_SIGNAL_RUN_LAST),
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
NULL,
|
||||||
|
g_cclosure_marshal_VOID__OBJECT,
|
||||||
|
G_TYPE_NONE, 1,
|
||||||
|
GTK_TYPE_MENU);
|
||||||
|
|
||||||
signals[QUIT] = g_signal_new (
|
signals[QUIT] = g_signal_new (
|
||||||
"quit",
|
"quit",
|
||||||
|
@ -2676,6 +2696,8 @@ midori_browser_toolbar_popup_context_menu_cb (GtkWidget* widget,
|
||||||
_action_by_name (browser, "Statusbar"));
|
_action_by_name (browser, "Statusbar"));
|
||||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
|
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
|
||||||
|
|
||||||
|
g_signal_emit (browser, signals[POPULATE_TOOLBAR_MENU], 0, menu);
|
||||||
|
|
||||||
katze_widget_popup (widget, GTK_MENU (menu), NULL,
|
katze_widget_popup (widget, GTK_MENU (menu), NULL,
|
||||||
button == -1 ? KATZE_MENU_POSITION_LEFT : KATZE_MENU_POSITION_CURSOR);
|
button == -1 ? KATZE_MENU_POSITION_LEFT : KATZE_MENU_POSITION_CURSOR);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
Loading…
Reference in a new issue