[Xfce4-commits] <midori:master> Abstract checking valid actions and use for sending commands
Christian Dywan
noreply at xfce.org
Tue Mar 26 08:56:01 CET 2013
Updating branch refs/heads/master
to 8918d50f27d4e53ed9915ba086b322a0e0af28ee (commit)
from 82eac2fc760fb42b2f91e645abc27010470ecb1d (commit)
commit 8918d50f27d4e53ed9915ba086b322a0e0af28ee
Author: Christian Dywan <christian at twotoasts.de>
Date: Tue Mar 26 08:52:59 2013 +0100
Abstract checking valid actions and use for sending commands
Fixes: https://bugs.launchpad.net/midori/+bug/1159630
midori/midori-app.c | 5 ++---
midori/midori-browser.c | 26 +++++++++++++++++++++++---
midori/midori-browser.h | 4 ++++
3 files changed, 29 insertions(+), 6 deletions(-)
diff --git a/midori/midori-app.c b/midori/midori-app.c
index 955f6fd..6677ddf 100644
--- a/midori/midori-app.c
+++ b/midori/midori-app.c
@@ -1123,9 +1123,8 @@ midori_app_send_command (MidoriApp* app,
int i;
for (i=0; command && command[i]; i++)
{
- gboolean action_known = (gtk_action_group_get_action (midori_browser_get_action_group (browser), command[i]) != NULL);
- if (!action_known)
- g_warning (_("Unexpected action '%s'."), command[i]);
+ if (!midori_browser_is_action (browser, command[i]))
+ midori_error (_("Unexpected action '%s'."), command[i]);
}
gtk_widget_destroy (GTK_WIDGET (browser));
}
diff --git a/midori/midori-browser.c b/midori/midori-browser.c
index 96baceb..48e74dc 100644
--- a/midori/midori-browser.c
+++ b/midori/midori-browser.c
@@ -529,6 +529,26 @@ midori_browser_update_history_title (MidoriBrowser* browser,
midori_browser_update_history (item, "website", "access");
}
+gboolean
+midori_browser_is_action (MidoriBrowser* browser,
+ const gchar* name)
+{
+ g_return_val_if_fail (MIDORI_IS_BROWSER (browser), FALSE);
+
+ GtkAction* action = _action_by_name (browser, name);
+ if (action)
+ return TRUE;
+ else if (strchr (name, '='))
+ {
+ gchar** parts = g_strsplit (name, "=", 0);
+ GObjectClass* class = G_OBJECT_GET_CLASS (browser->settings);
+ GParamSpec* pspec = g_object_class_find_property (class, parts[0]);
+ g_strfreev (parts);
+ return pspec != NULL;
+ }
+ return FALSE;
+}
+
static void
_midori_browser_activate_action (MidoriBrowser* browser,
const gchar* name)
@@ -559,14 +579,14 @@ _midori_browser_activate_action (MidoriBrowser* browser,
if (enum_value != NULL)
g_object_set (browser->settings, parts[0], enum_value->value, NULL);
else
- midori_error (_("Value '%s' is invalid for %s"), parts[1], parts[0]);
+ g_warning (_("Value '%s' is invalid for %s"), parts[1], parts[0]);
}
else
- midori_error (_("Value '%s' is invalid for %s"), parts[1], parts[0]);
+ g_warning (_("Value '%s' is invalid for %s"), parts[1], parts[0]);
g_strfreev (parts);
}
else
- midori_error (_("Unexpected action '%s'."), name);
+ g_warning (_("Unexpected action '%s'."), name);
}
static void
diff --git a/midori/midori-browser.h b/midori/midori-browser.h
index f054e5a..8036678 100644
--- a/midori/midori-browser.h
+++ b/midori/midori-browser.h
@@ -96,6 +96,10 @@ void
midori_browser_activate_action (MidoriBrowser* browser,
const gchar* name);
+gboolean
+midori_browser_is_action (MidoriBrowser* browser,
+ const gchar* name);
+
void
midori_browser_block_action (MidoriBrowser* browser,
GtkAction* action);
More information about the Xfce4-commits
mailing list