diff options
Diffstat (limited to 'calendar')
-rw-r--r-- | calendar/gui/apps_evolution_calendar.schemas.in | 8 | ||||
-rw-r--r-- | calendar/modules/e-cal-shell-content.c | 48 |
2 files changed, 52 insertions, 4 deletions
diff --git a/calendar/gui/apps_evolution_calendar.schemas.in b/calendar/gui/apps_evolution_calendar.schemas.in index 51ae955741..96bcf173f1 100644 --- a/calendar/gui/apps_evolution_calendar.schemas.in +++ b/calendar/gui/apps_evolution_calendar.schemas.in @@ -231,11 +231,11 @@ </locale> </schema> <schema> - <key>/schemas/apps/evolution/calendar/display/tag_vpane_position</key> - <applyto>/apps/evolution/calendar/display/tag_vpane_position</applyto> + <key>/schemas/apps/evolution/calendar/display/date_navigator_pane_position</key> + <applyto>/apps/evolution/calendar/display/date_navigator_pane_position</applyto> <owner>evolution-calendar</owner> - <type>float</type> - <default>0.5</default> + <type>int</type> + <default>150</default> <locale name="C"> <short>Month view vertical pane position </short> <long>Position of the vertical pane, between the calendar lists and the date navigator calendar.</long> diff --git a/calendar/modules/e-cal-shell-content.c b/calendar/modules/e-cal-shell-content.c index 865ae7de5a..8356b2e679 100644 --- a/calendar/modules/e-cal-shell-content.c +++ b/calendar/modules/e-cal-shell-content.c @@ -101,6 +101,39 @@ cal_shell_content_display_view_cb (ECalShellContent *cal_shell_content, { } +static void +cal_shell_content_notify_view_id_cb (ECalShellContent *cal_shell_content) +{ + EShellContent *shell_content; + EShellView *shell_view; + GConfBridge *bridge; + GtkWidget *paned; + guint binding_id; + const gchar *key; + const gchar *view_id; + + bridge = gconf_bridge_get (); + paned = cal_shell_content->priv->hpaned; + binding_id = cal_shell_content->priv->paned_binding_id; + + shell_content = E_SHELL_CONTENT (cal_shell_content); + shell_view = e_shell_content_get_shell_view (shell_content); + view_id = e_shell_view_get_view_id (shell_view); + + if (binding_id > 0) + gconf_bridge_unbind (bridge, binding_id); + + if (view_id != NULL && strcmp (view_id, "Month_View") == 0) + key = "/apps/evolution/calendar/display/month_hpane_position"; + else + key = "/apps/evolution/calendar/display/hpane_position"; + + binding_id = gconf_bridge_bind_property_delayed ( + bridge, key, G_OBJECT (paned), "position"); + + cal_shell_content->priv->paned_binding_id = binding_id; +} + static FocusLocation cal_shell_content_get_focus_location (ECalShellContent *cal_shell_content) { @@ -315,9 +348,11 @@ cal_shell_content_constructed (GObject *object) EShellView *foreign_view; GalViewCollection *view_collection; GalViewInstance *view_instance; + GConfBridge *bridge; GtkWidget *container; GtkWidget *widget; const gchar *config_dir; + const gchar *key; gchar *filename; gchar *markup; gint page_num; @@ -534,6 +569,19 @@ cal_shell_content_constructed (GObject *object) gal_view_instance_load (view_instance); priv->view_instance = view_instance; + g_signal_connect_swapped ( + shell_view, "notify::view-id", + G_CALLBACK (cal_shell_content_notify_view_id_cb), + object); + + /* Bind GObject properties to GConf keys. */ + + bridge = gconf_bridge_get (); + + object = G_OBJECT (priv->vpaned); + key = "/apps/evolution/calendar/display/vpane_position"; + gconf_bridge_bind_property_delayed (bridge, key, object, "position"); + g_object_unref (memo_model); g_object_unref (task_model); } |