[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