aboutsummaryrefslogtreecommitdiffstats
path: root/shell/e-shell-settings-dialog.c
diff options
context:
space:
mode:
authorDan Winship <danw@src.gnome.org>2002-09-26 05:40:17 +0800
committerDan Winship <danw@src.gnome.org>2002-09-26 05:40:17 +0800
commit82f2740249a309e51d19a7e5d539f41b74fa6a36 (patch)
tree4b51d1831363c8a805497be7e9afd6ad5fb07ac4 /shell/e-shell-settings-dialog.c
parentcec75c7f59272daf6a6e38960a31e4957102fb83 (diff)
downloadgsoc2013-evolution-82f2740249a309e51d19a7e5d539f41b74fa6a36.tar.gz
gsoc2013-evolution-82f2740249a309e51d19a7e5d539f41b74fa6a36.tar.zst
gsoc2013-evolution-82f2740249a309e51d19a7e5d539f41b74fa6a36.zip
If one of the allowed types is "type/*", allow anything starting with
* e-shell-folder-selection-dialog.c (check_folder_type_valid): If one of the allowed types is "type/*", allow anything starting with "type/". (impl_clicked): If the first allowed type is "type/*", pass "type" to e_shell_show_folder_creation_dialog. * evolution-folder-selector-button.c (evolution_folder_selector_button_set_uri): Handle "type/*" as an allowed type. * e-shell-settings-dialog.c (e_shell_settings_dialog_show_type): If there are no pages for the current folder type, try the parent type (eg, "mail" for "mail/public"). * e-shell-config-autocompletion.c (e_shell_config_autocompletion_create_widget): Use "contacts/*" as the allowed folder type. svn path=/trunk/; revision=18220
Diffstat (limited to 'shell/e-shell-settings-dialog.c')
-rw-r--r--shell/e-shell-settings-dialog.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/shell/e-shell-settings-dialog.c b/shell/e-shell-settings-dialog.c
index f0f5101d65..a00f55bfc6 100644
--- a/shell/e-shell-settings-dialog.c
+++ b/shell/e-shell-settings-dialog.c
@@ -341,7 +341,7 @@ void
e_shell_settings_dialog_show_type (EShellSettingsDialog *dialog, const char *type)
{
EShellSettingsDialogPrivate *priv;
- gpointer value;
+ gpointer key, value;
int page;
g_return_if_fail (dialog != NULL);
@@ -350,7 +350,17 @@ e_shell_settings_dialog_show_type (EShellSettingsDialog *dialog, const char *typ
priv = dialog->priv;
- value = g_hash_table_lookup (priv->types, type);
+ if (!g_hash_table_lookup_extended (priv->types, type, &key, &value)) {
+ char *slash, *supertype;
+
+ slash = strchr (type, '/');
+ if (slash) {
+ supertype = g_strndup (type, slash - type);
+ value = g_hash_table_lookup (priv->types, type);
+ g_free (supertype);
+ } else
+ value = NULL;
+ }
page = GPOINTER_TO_INT (value);
e_multi_config_dialog_show_page (E_MULTI_CONFIG_DIALOG (dialog), page);