diff --git a/mcs-plugin/xfwm4_shortcuteditor.c b/mcs-plugin/xfwm4_shortcuteditor.c index 2227c91e13dc7282863ae41d1bca6d17490738db..6d36d929e0410dc618e9cb2b30687b9862c50009 100644 --- a/mcs-plugin/xfwm4_shortcuteditor.c +++ b/mcs-plugin/xfwm4_shortcuteditor.c @@ -112,17 +112,26 @@ cb_popup_del_menu (GtkWidget * widget, gpointer data) void cb_popup_add_menu (GtkWidget * widget, gpointer data) { - Itf *itf; + gchar buf[80]; GtkWidget *dialog; GtkWidget *hbox; GtkWidget *label; GtkWidget *entry; GtkWidget *header_image; GtkWidget *header; + GtkTreeSelection *selection; + GtkTreeModel *model; + GtkTreeIter iter; + Itf *itf; + ThemeInfo *ti; - gchar *default_theme_file = NULL; gchar *new_theme_path = NULL; gchar *new_theme_file = NULL; + gchar *theme_name = NULL; + gchar *theme_file = NULL; + + FILE *new_theme; + FILE *default_theme; itf = (Itf *) data; @@ -144,6 +153,21 @@ cb_popup_add_menu (GtkWidget * widget, gpointer data) gtk_container_set_border_width (GTK_CONTAINER (hbox), 10); gtk_widget_show_all (dialog); + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(itf->treeview2)); + gtk_tree_selection_get_selected (selection, &model, &iter); + gtk_tree_model_get (model, &iter, THEME_NAME_COLUMN, &theme_name, -1); + ti = xfwm4_plugin_find_theme_info_by_name (theme_name, keybinding_theme_list); + g_free (theme_name); + + if (ti) + { + theme_file = g_build_filename (ti->path, G_DIR_SEPARATOR_S, KEY_SUFFIX, G_DIR_SEPARATOR_S, KEYTHEMERC, NULL); + } + else + { + theme_file = g_build_filename (DATADIR, "themes", "Default", KEY_SUFFIX, KEYTHEMERC, NULL); + } + while (TRUE) { gint response = GTK_RESPONSE_CANCEL; @@ -152,10 +176,6 @@ cb_popup_add_menu (GtkWidget * widget, gpointer data) if (response == GTK_RESPONSE_OK) { - gchar buf[80]; - FILE *new_theme; - FILE *default_theme; - if (xfwm4_plugin_find_theme_info_by_name (gtk_entry_get_text (GTK_ENTRY (entry)), keybinding_theme_list)) { @@ -174,8 +194,6 @@ cb_popup_add_menu (GtkWidget * widget, gpointer data) g_strdup_printf ("%s/xfwm4/%s", gtk_entry_get_text (GTK_ENTRY (entry)), KEYTHEMERC); new_theme_file = xfce_resource_save_location (XFCE_RESOURCE_THEMES, new_theme_path, TRUE); - default_theme_file = - g_build_filename (DATADIR, "themes", "Default", KEY_SUFFIX, KEYTHEMERC, NULL); new_theme = fopen (new_theme_file, "w+"); if (!new_theme) @@ -184,7 +202,8 @@ cb_popup_add_menu (GtkWidget * widget, gpointer data) break; } - default_theme = fopen (default_theme_file, "r"); + + default_theme = fopen (theme_file, "r"); if (!default_theme) { g_warning ("unable to open the default theme file"); @@ -231,7 +250,7 @@ cb_popup_add_menu (GtkWidget * widget, gpointer data) gtk_widget_destroy (dialog); g_free (new_theme_path); g_free (new_theme_file); - g_free (default_theme_file); + g_free (theme_file); } gboolean