[evolution] Bug #604971 - Evolution allows deletion of default views
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution] Bug #604971 - Evolution allows deletion of default views
- Date: Thu, 13 May 2010 19:34:55 +0000 (UTC)
commit b936a2301feb69f420d930f8f74436dde35b9f04
Author: Milan Crha <mcrha redhat com>
Date: Thu May 13 21:34:28 2010 +0200
Bug #604971 - Evolution allows deletion of default views
widgets/menus/gal-define-views-dialog.c | 40 ++++++++++++++++++------------
1 files changed, 24 insertions(+), 16 deletions(-)
---
diff --git a/widgets/menus/gal-define-views-dialog.c b/widgets/menus/gal-define-views-dialog.c
index 54d0677..ed0902c 100644
--- a/widgets/menus/gal-define-views-dialog.c
+++ b/widgets/menus/gal-define-views-dialog.c
@@ -108,7 +108,9 @@ gdvd_button_new_dialog_callback (GtkWidget *widget, gint id, GalDefineViewsDialo
COL_GALVIEW_DATA, item,
-1);
- gal_view_edit (view, GTK_WINDOW (dialog));
+
+ if (view && GAL_VIEW_GET_CLASS (view)->edit)
+ gal_view_edit (view, GTK_WINDOW (dialog));
g_object_unref (view);
}
}
@@ -139,6 +141,9 @@ gdvd_button_modify_callback(GtkWidget *widget, GalDefineViewsDialog *dialog)
&dialog->model,
&iter)) {
gtk_tree_model_get (dialog->model, &iter, COL_GALVIEW_DATA, &item, -1);
+
+ g_return_if_fail (item && !item->built_in);
+
gal_view_edit (item->view, GTK_WINDOW (dialog));
}
}
@@ -159,6 +164,8 @@ gdvd_button_delete_callback(GtkWidget *widget, GalDefineViewsDialog *dialog)
&iter)) {
gtk_tree_model_get (dialog->model, &iter, COL_GALVIEW_DATA, &item, -1);
+ g_return_if_fail (item && !item->built_in);
+
for (row=0; row<dialog->collection->view_count; row++) {
if (item == dialog->collection->view_data[row]) {
gal_view_collection_delete_view (dialog->collection, row);
@@ -179,28 +186,25 @@ gdvd_button_delete_callback(GtkWidget *widget, GalDefineViewsDialog *dialog)
}
static void
-gdvd_cursor_changed_callback (GtkWidget *widget, GalDefineViewsDialog *dialog)
+gdvd_selection_changed_callback (GtkTreeSelection *selection, GalDefineViewsDialog *dialog)
{
GtkWidget *button;
GtkTreeIter iter;
- GalViewCollectionItem *item;
-
- if (gtk_tree_selection_get_selected (gtk_tree_view_get_selection (dialog->treeview),
- &dialog->model,
- &iter)) {
- GalViewClass *gvclass = NULL;
+ GalViewCollectionItem *item = NULL;
+ GalViewClass *gvclass = NULL;
+ if (gtk_tree_selection_get_selected (selection, &dialog->model, &iter)) {
gtk_tree_model_get (dialog->model, &iter, COL_GALVIEW_DATA, &item, -1);
- button = e_builder_get_widget (dialog->builder, "button-delete");
- gtk_widget_set_sensitive (GTK_WIDGET (button), !item->built_in);
-
- if (item->view)
+ if (item && item->view)
gvclass = GAL_VIEW_GET_CLASS (item->view);
-
- button = e_builder_get_widget (dialog->builder, "button-modify");
- gtk_widget_set_sensitive (GTK_WIDGET (button), !item->built_in && gvclass && gvclass->edit != NULL);
}
+
+ button = e_builder_get_widget (dialog->builder, "button-delete");
+ gtk_widget_set_sensitive (GTK_WIDGET (button), item && !item->built_in);
+
+ button = e_builder_get_widget (dialog->builder, "button-modify");
+ gtk_widget_set_sensitive (GTK_WIDGET (button), item && !item->built_in && gvclass && gvclass->edit != NULL);
}
static void
@@ -226,6 +230,7 @@ gal_define_views_dialog_init (GalDefineViewsDialog *dialog)
GtkWidget *content_area;
GtkWidget *parent;
GtkWidget *widget;
+ GtkTreeSelection *selection;
dialog->collection = NULL;
@@ -263,9 +268,12 @@ gal_define_views_dialog_init (GalDefineViewsDialog *dialog)
gdvd_connect_signal (dialog, "button-new", "clicked", G_CALLBACK (gdvd_button_new_callback));
gdvd_connect_signal (dialog, "button-modify", "clicked", G_CALLBACK (gdvd_button_modify_callback));
gdvd_connect_signal (dialog, "button-delete", "clicked", G_CALLBACK (gdvd_button_delete_callback));
- gdvd_connect_signal (dialog, "treeview1", "cursor-changed", G_CALLBACK (gdvd_cursor_changed_callback));
g_signal_connect (dialog, "response", G_CALLBACK (dialog_response), NULL);
+ selection = gtk_tree_view_get_selection (dialog->treeview);
+ g_signal_connect (selection, "changed", G_CALLBACK (gdvd_selection_changed_callback), dialog);
+ gdvd_selection_changed_callback (selection, dialog);
+
gtk_widget_show (GTK_WIDGET (dialog));
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]