[Xfce4-commits] <midori:master> Provide midori_browser_(un)block_action for extensions
Christian Dywan
noreply at xfce.org
Sat Apr 30 13:16:05 CEST 2011
Updating branch refs/heads/master
to 34da7c80909ab3195b526c2ecb50f649e41ab01e (commit)
from 7dec02247137744b45ea084a8fd2d8b972d744b7 (commit)
commit 34da7c80909ab3195b526c2ecb50f649e41ab01e
Author: Christian Dywan <christian at twotoasts.de>
Date: Sat Apr 30 12:17:55 2011 +0200
Provide midori_browser_(un)block_action for extensions
So extensions can override individual actions without hacks.
midori/midori-browser.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++
midori/midori-browser.h | 8 ++++++
midori/midori.vapi | 2 +
3 files changed, 73 insertions(+), 0 deletions(-)
diff --git a/midori/midori-browser.c b/midori/midori-browser.c
index 87905cd..98c7c13 100644
--- a/midori/midori-browser.c
+++ b/midori/midori-browser.c
@@ -7058,6 +7058,69 @@ midori_browser_set_action_visible (MidoriBrowser* browser,
}
/**
+ * midori_browser_block_action:
+ * @browser: a #MidoriBrowser
+ * @name: the action to be blocked
+ *
+ * Blocks built-in behavior of the specified action without
+ * disabling it, which gives you a chance to connect your
+ * own signal handling.
+ * Call midori_browser_unblock_action() to undo the effect.
+ *
+ * Since: 0.3.4
+ **/
+void
+midori_browser_block_action (MidoriBrowser* browser,
+ GtkAction* action)
+{
+ const gchar* name;
+ guint i;
+
+ g_return_if_fail (MIDORI_IS_BROWSER (browser));
+ g_return_if_fail (GTK_IS_ACTION (action));
+
+ name = gtk_action_get_name (action);
+ for (i = 0; i < entries_n; i++)
+ if (g_str_equal (entries[i].name, name))
+ {
+ g_signal_handlers_block_by_func (action, entries[i].callback, browser);
+ return;
+ }
+ g_critical ("%s: Action \"%s\" can't be blocked.", G_STRFUNC, name);
+}
+
+/**
+ * midori_browser_unblock_action:
+ * @browser: a #MidoriBrowser
+ * @name: the action to be unblocked
+ *
+ * Restores built-in behavior of the specified action after
+ * previously blocking it with midori_browser_block_action().
+ *
+ * Since: 0.3.4
+ **/
+void
+midori_browser_unblock_action (MidoriBrowser* browser,
+ GtkAction* action)
+{
+ const gchar* name;
+ guint i;
+
+ g_return_if_fail (MIDORI_IS_BROWSER (browser));
+ g_return_if_fail (GTK_IS_ACTION (action));
+
+ name = gtk_action_get_name (action);
+ for (i = 0; i < entries_n; i++)
+ if (g_str_equal (entries[i].name, name))
+ {
+ g_signal_handlers_unblock_by_func (action, entries[i].callback, browser);
+ return;
+ }
+ g_critical ("%s: Action \"%s\" can't be unblocked.", G_STRFUNC, name);
+}
+
+
+/**
* midori_browser_get_action_group:
* @browser: a #MidoriBrowser
*
diff --git a/midori/midori-browser.h b/midori/midori-browser.h
index 2b07dd0..a3cc979 100644
--- a/midori/midori-browser.h
+++ b/midori/midori-browser.h
@@ -107,6 +107,14 @@ midori_browser_activate_action (MidoriBrowser* browser,
const gchar* name);
void
+midori_browser_block_action (MidoriBrowser* browser,
+ GtkAction* action);
+
+void
+midori_browser_unblock_action (MidoriBrowser* browser,
+ GtkAction* action);
+
+void
midori_browser_set_action_visible (MidoriBrowser* browser,
const gchar* name,
gboolean visible);
diff --git a/midori/midori.vapi b/midori/midori.vapi
index cadda55..4e2098d 100644
--- a/midori/midori.vapi
+++ b/midori/midori.vapi
@@ -39,6 +39,8 @@ namespace Midori {
public int add_uri (string uri);
public unowned View get_nth_tab (int n);
public GLib.List<weak View> get_tabs ();
+ public void block_action (Gtk.Action action);
+ public void unblock_action (Gtk.Action action);
public unowned Gtk.ActionGroup get_action_group ();
public unowned Browser get_for_widget (Gtk.Widget widget);
public unowned string[] get_toolbar_actions ();
More information about the Xfce4-commits
mailing list