aboutsummaryrefslogtreecommitdiffstats
path: root/src/ephy-window-action.c
diff options
context:
space:
mode:
authorXan Lopez <xan@igalia.com>2012-01-17 03:11:40 +0800
committerXan Lopez <xan@igalia.com>2012-01-17 03:11:40 +0800
commit52cdd6df6cb561a48032358b3eedce16cfa2c9fb (patch)
tree1170c07244b9a2fba83251880900f8894887ae27 /src/ephy-window-action.c
parent1150405cc1bc50d6c258cb723a76ae90d8945f73 (diff)
downloadgsoc2013-epiphany-52cdd6df6cb561a48032358b3eedce16cfa2c9fb.tar
gsoc2013-epiphany-52cdd6df6cb561a48032358b3eedce16cfa2c9fb.tar.gz
gsoc2013-epiphany-52cdd6df6cb561a48032358b3eedce16cfa2c9fb.tar.bz2
gsoc2013-epiphany-52cdd6df6cb561a48032358b3eedce16cfa2c9fb.tar.lz
gsoc2013-epiphany-52cdd6df6cb561a48032358b3eedce16cfa2c9fb.tar.xz
gsoc2013-epiphany-52cdd6df6cb561a48032358b3eedce16cfa2c9fb.tar.zst
gsoc2013-epiphany-52cdd6df6cb561a48032358b3eedce16cfa2c9fb.zip
Refactor GtkActions with attached EphyWindows
Make a GtkAction subclass that only holds an EphyWindow and nothing else, and use it throughout. Allows us to kill some duplicated code.
Diffstat (limited to 'src/ephy-window-action.c')
-rw-r--r--src/ephy-window-action.c102
1 files changed, 102 insertions, 0 deletions
diff --git a/src/ephy-window-action.c b/src/ephy-window-action.c
new file mode 100644
index 000000000..f04d7e5a3
--- /dev/null
+++ b/src/ephy-window-action.c
@@ -0,0 +1,102 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+ * Copyright © 2012 Igalia S.L.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "config.h"
+#include "ephy-window-action.h"
+
+#include <gtk/gtk.h>
+
+#define EPHY_WINDOW_ACTION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), EPHY_TYPE_WINDOW_ACTION, EphyWindowActionPrivate))
+
+struct _EphyWindowActionPrivate {
+ EphyWindow *window;
+};
+
+enum {
+ PROP_0,
+ PROP_WINDOW
+};
+
+G_DEFINE_TYPE (EphyWindowAction, ephy_window_action, GTK_TYPE_ACTION)
+
+static void
+ephy_window_action_init (EphyWindowAction *action)
+{
+ action->priv = EPHY_WINDOW_ACTION_GET_PRIVATE (action);
+}
+
+static void
+ephy_window_action_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ EphyWindowAction *action = EPHY_WINDOW_ACTION (object);
+
+ switch (property_id) {
+ case PROP_WINDOW:
+ action->priv->window = EPHY_WINDOW (g_value_get_object (value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ }
+}
+
+static void
+ephy_window_action_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ EphyWindowAction *action = EPHY_WINDOW_ACTION (object);
+
+ switch (property_id) {
+ case PROP_WINDOW:
+ g_value_set_object (value, action->priv->window);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ }
+}
+
+static void
+ephy_window_action_class_init (EphyWindowActionClass *class)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (class);
+
+ object_class->set_property = ephy_window_action_set_property;
+ object_class->get_property = ephy_window_action_get_property;
+
+ g_object_class_install_property (object_class,
+ PROP_WINDOW,
+ g_param_spec_object ("window", NULL, NULL,
+ G_TYPE_OBJECT,
+ G_PARAM_READWRITE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
+
+ g_type_class_add_private (object_class, sizeof (EphyWindowActionPrivate));
+}
+
+EphyWindow *
+ephy_window_action_get_window (EphyWindowAction *action)
+{
+ g_return_val_if_fail (EPHY_IS_WINDOW_ACTION (action), NULL);
+
+ return action->priv->window;
+}