aboutsummaryrefslogtreecommitdiffstats
path: root/e-util
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2013-07-03 00:30:41 +0800
committerMatthew Barnes <mbarnes@redhat.com>2013-07-06 04:40:49 +0800
commit369daca6146c0e97db0308adb9c64c10ad1cb096 (patch)
treee0233224891a46527a4933e268dd63db290ad801 /e-util
parenta2818bc4eaed3c304a9067b8cf25b4aee345d9b4 (diff)
downloadgsoc2013-evolution-369daca6146c0e97db0308adb9c64c10ad1cb096.tar
gsoc2013-evolution-369daca6146c0e97db0308adb9c64c10ad1cb096.tar.gz
gsoc2013-evolution-369daca6146c0e97db0308adb9c64c10ad1cb096.tar.bz2
gsoc2013-evolution-369daca6146c0e97db0308adb9c64c10ad1cb096.tar.lz
gsoc2013-evolution-369daca6146c0e97db0308adb9c64c10ad1cb096.tar.xz
gsoc2013-evolution-369daca6146c0e97db0308adb9c64c10ad1cb096.tar.zst
gsoc2013-evolution-369daca6146c0e97db0308adb9c64c10ad1cb096.zip
GalView: Store the title string internally.
This replaces the get_title() and set_title() class methods, since it's silly to defer to subclasses to track a simple string property.
Diffstat (limited to 'e-util')
-rw-r--r--e-util/gal-view-etable.c30
-rw-r--r--e-util/gal-view-etable.h4
-rw-r--r--e-util/gal-view-instance.c2
-rw-r--r--e-util/gal-view.c40
-rw-r--r--e-util/gal-view.h3
5 files changed, 32 insertions, 47 deletions
diff --git a/e-util/gal-view-etable.c b/e-util/gal-view-etable.c
index 53782eefca..747c169d0c 100644
--- a/e-util/gal-view-etable.c
+++ b/e-util/gal-view-etable.c
@@ -61,20 +61,6 @@ gal_view_etable_save (GalView *view,
}
static const gchar *
-gal_view_etable_get_title (GalView *view)
-{
- return GAL_VIEW_ETABLE (view)->title;
-}
-
-static void
-gal_view_etable_set_title (GalView *view,
- const gchar *title)
-{
- g_free (GAL_VIEW_ETABLE (view)->title);
- GAL_VIEW_ETABLE (view)->title = g_strdup (title);
-}
-
-static const gchar *
gal_view_etable_get_type_code (GalView *view)
{
return "etable";
@@ -92,7 +78,6 @@ gal_view_etable_clone (GalView *view)
gve = GAL_VIEW_ETABLE (view);
GAL_VIEW_ETABLE (clone)->spec = g_object_ref (gve->spec);
GAL_VIEW_ETABLE (clone)->state = e_table_state_duplicate (gve->state);
- GAL_VIEW_ETABLE (clone)->title = g_strdup (gve->title);
return clone;
}
@@ -104,9 +89,6 @@ gal_view_etable_dispose (GObject *object)
gal_view_etable_detach (view);
- g_free (view->title);
- view->title = NULL;
-
g_clear_object (&view->spec);
g_clear_object (&view->state);
@@ -126,8 +108,6 @@ gal_view_etable_class_init (GalViewEtableClass *class)
gal_view_class = GAL_VIEW_CLASS (class);
gal_view_class->load = gal_view_etable_load;
gal_view_class->save = gal_view_etable_save;
- gal_view_class->get_title = gal_view_etable_get_title;
- gal_view_class->set_title = gal_view_etable_set_title;
gal_view_class->get_type_code = gal_view_etable_get_type_code;
gal_view_class->clone = gal_view_etable_clone;
}
@@ -155,16 +135,15 @@ gal_view_etable_new (ETableSpecification *spec,
g_return_val_if_fail (E_IS_TABLE_SPECIFICATION (spec), NULL);
- view = g_object_new (GAL_TYPE_VIEW_ETABLE, NULL);
+ view = g_object_new (GAL_TYPE_VIEW_ETABLE, "title", title, NULL);
- return gal_view_etable_construct (view, spec, title);
+ return gal_view_etable_construct (view, spec);
}
/**
* gal_view_etable_construct
* @view: The view to construct.
* @spec: The ETableSpecification that this view will be based upon.
- * @title: The name of the new view.
*
* constructs the GalViewEtable. To be used by subclasses and
* language bindings.
@@ -173,8 +152,7 @@ gal_view_etable_new (ETableSpecification *spec,
*/
GalView *
gal_view_etable_construct (GalViewEtable *view,
- ETableSpecification *spec,
- const gchar *title)
+ ETableSpecification *spec)
{
g_return_val_if_fail (GAL_IS_VIEW_ETABLE (view), NULL);
g_return_val_if_fail (E_IS_TABLE_SPECIFICATION (spec), NULL);
@@ -184,8 +162,6 @@ gal_view_etable_construct (GalViewEtable *view,
g_clear_object (&view->state);
view->state = e_table_state_duplicate (spec->state);
- view->title = g_strdup (title);
-
return GAL_VIEW (view);
}
diff --git a/e-util/gal-view-etable.h b/e-util/gal-view-etable.h
index e304ec00f0..b0e93a2ec3 100644
--- a/e-util/gal-view-etable.h
+++ b/e-util/gal-view-etable.h
@@ -59,7 +59,6 @@ struct _GalViewEtable {
ETableSpecification *spec;
ETableState *state;
- gchar *title;
ETable *table;
guint table_state_changed_id;
@@ -76,8 +75,7 @@ GType gal_view_etable_get_type (void);
GalView * gal_view_etable_new (ETableSpecification *spec,
const gchar *title);
GalView * gal_view_etable_construct (GalViewEtable *view,
- ETableSpecification *spec,
- const gchar *title);
+ ETableSpecification *spec);
void gal_view_etable_set_state (GalViewEtable *view,
ETableState *state);
void gal_view_etable_attach_table (GalViewEtable *view,
diff --git a/e-util/gal-view-instance.c b/e-util/gal-view-instance.c
index ad66773756..32f8a5fd26 100644
--- a/e-util/gal-view-instance.c
+++ b/e-util/gal-view-instance.c
@@ -141,7 +141,7 @@ connect_view (GalViewInstance *instance,
{
if (instance->current_view)
disconnect_view (instance);
- instance->current_view = view;
+ instance->current_view = g_object_ref (view);
instance->current_title = g_strdup (gal_view_get_title (view));
instance->current_type = g_strdup (gal_view_get_type_code (view));
diff --git a/e-util/gal-view.c b/e-util/gal-view.c
index 4fd777182f..7b3743af72 100644
--- a/e-util/gal-view.c
+++ b/e-util/gal-view.c
@@ -23,7 +23,7 @@
((obj), GAL_TYPE_VIEW, GalViewPrivate))
struct _GalViewPrivate {
- gint placeholder;
+ gchar *title;
};
enum {
@@ -82,6 +82,19 @@ view_get_property (GObject *object,
}
static void
+view_finalize (GObject *object)
+{
+ GalViewPrivate *priv;
+
+ priv = GAL_VIEW_GET_PRIVATE (object);
+
+ g_free (priv->title);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (gal_view_parent_class)->finalize (object);
+}
+
+static void
view_load (GalView *view,
const gchar *filename)
{
@@ -96,7 +109,13 @@ view_save (GalView *view,
static GalView *
view_clone (GalView *view)
{
- return g_object_new (G_OBJECT_TYPE (view), NULL);
+ const gchar *title;
+
+ title = gal_view_get_title (view);
+
+ return g_object_new (
+ G_OBJECT_TYPE (view),
+ "title", title, NULL);
}
static void
@@ -109,6 +128,7 @@ gal_view_class_init (GalViewClass *class)
object_class = G_OBJECT_CLASS (class);
object_class->set_property = view_set_property;
object_class->get_property = view_get_property;
+ object_class->finalize = view_finalize;
class->load = view_load;
class->save = view_save;
@@ -201,14 +221,9 @@ gal_view_save (GalView *view,
const gchar *
gal_view_get_title (GalView *view)
{
- GalViewClass *class;
-
g_return_val_if_fail (GAL_IS_VIEW (view), NULL);
- class = GAL_VIEW_GET_CLASS (view);
- g_return_val_if_fail (class->get_title != NULL, NULL);
-
- return class->get_title (view);
+ return view->priv->title;
}
/**
@@ -220,14 +235,13 @@ void
gal_view_set_title (GalView *view,
const gchar *title)
{
- GalViewClass *class;
-
g_return_if_fail (GAL_IS_VIEW (view));
- class = GAL_VIEW_GET_CLASS (view);
- g_return_if_fail (class->set_title != NULL);
+ if (g_strcmp0 (title, view->priv->title) == 0)
+ return;
- class->set_title (view, title);
+ g_free (view->priv->title);
+ view->priv->title = g_strdup (title);
g_object_notify (G_OBJECT (view), "title");
}
diff --git a/e-util/gal-view.h b/e-util/gal-view.h
index 18de6d1ad5..94f89b989e 100644
--- a/e-util/gal-view.h
+++ b/e-util/gal-view.h
@@ -63,9 +63,6 @@ struct _GalViewClass {
const gchar *filename);
void (*save) (GalView *view,
const gchar *filename);
- const gchar * (*get_title) (GalView *view);
- void (*set_title) (GalView *view,
- const gchar *title);
const gchar * (*get_type_code) (GalView *view);
GalView * (*clone) (GalView *view);