diff --git a/capplets/file-types/ChangeLog b/capplets/file-types/ChangeLog index 78c793664..e44d5e327 100644 --- a/capplets/file-types/ChangeLog +++ b/capplets/file-types/ChangeLog @@ -1,3 +1,8 @@ +2002-07-17 Jody Goldberg + + * mime-edit-dialog.c (mime_edit_dialog_init) : only enable the remove + button when there is a selection. + 2002-07-16 Jody Goldberg * file-types-properties.glade ( True 2 - 2 + 3 False 0 - 0 + 4 + + + + Add: + GTK_JUSTIFY_CENTER + no + 0.5 + 0.5 + 4 + 0 + yes + + + 0 + 1 + 0 + 1 + fill + + + @@ -486,7 +507,7 @@ True - 0 + 1 0.5 0 1 @@ -544,8 +565,8 @@ - 0 - 1 + 2 + 3 0 2 diff --git a/capplets/file-types/mime-edit-dialog.c b/capplets/file-types/mime-edit-dialog.c index b2e2bbcf2..1f48b7b63 100644 --- a/capplets/file-types/mime-edit-dialog.c +++ b/capplets/file-types/mime-edit-dialog.c @@ -159,12 +159,29 @@ mime_edit_editable_enters (MimeEditDialog *dialog, GtkEditable *editable) GTK_WINDOW (dialog->p->dialog_win)); } +static void +check_for_content (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, + gpointer data) +{ + *((gboolean *)data) = TRUE; +} + +static void +remove_ext_sensitivity_cb (GtkTreeSelection *selection, GtkWidget *button) +{ + gboolean flag = FALSE; + gtk_tree_selection_selected_foreach (selection, check_for_content, &flag); + gtk_widget_set_sensitive (GTK_WIDGET (button), flag); +} + static void mime_edit_dialog_init (MimeEditDialog *dialog, MimeEditDialogClass *class) { GtkSizeGroup *size_group; GtkTreeView *view; GtkCellRenderer *renderer; + GtkWidget *remove_ext; + GtkTreeSelection *selection; dialog->p = g_new0 (MimeEditDialogPrivate, 1); dialog->p->dialog_xml = glade_xml_new @@ -199,12 +216,22 @@ mime_edit_dialog_init (MimeEditDialog *dialog, MimeEditDialogClass *class) gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog->p->dialog_win)->vbox), WID ("edit_widget"), TRUE, TRUE, 0); - g_signal_connect_swapped (G_OBJECT (WID ("new_ext_entry")), "activate", (GCallback) add_ext_cb, dialog); - g_signal_connect_swapped (G_OBJECT (WID ("remove_ext_button")), "clicked", (GCallback) remove_ext_cb, dialog); - g_signal_connect_swapped (G_OBJECT (WID ("choose_button")), "clicked", (GCallback) choose_cat_cb, dialog); - g_signal_connect_swapped (G_OBJECT (WID ("default_action_select")), "changed", (GCallback) default_action_changed_cb, dialog); + remove_ext = WID ("remove_ext_button"); + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (WID ("ext_list"))); + g_signal_connect (G_OBJECT (selection), "changed", + (GCallback) remove_ext_sensitivity_cb, remove_ext); + g_signal_connect_swapped (G_OBJECT (remove_ext), "clicked", + (GCallback) remove_ext_cb, dialog); + g_signal_connect_swapped (G_OBJECT (WID ("new_ext_entry")), "activate", + (GCallback) add_ext_cb, dialog); + g_signal_connect_swapped (G_OBJECT (WID ("choose_button")), "clicked", + (GCallback) choose_cat_cb, dialog); + g_signal_connect_swapped (G_OBJECT (WID ("default_action_select")), "changed", + (GCallback) default_action_changed_cb, dialog); + g_signal_connect_swapped (G_OBJECT (dialog->p->dialog_win), "response", + (GCallback) response_cb, dialog); - g_signal_connect_swapped (G_OBJECT (dialog->p->dialog_win), "response", (GCallback) response_cb, dialog); + remove_ext_sensitivity_cb (selection, (gpointer)remove_ext); mime_edit_editable_enters (dialog, GTK_EDITABLE (WID ("description_entry"))); mime_edit_editable_enters (dialog, GTK_EDITABLE (WID ("mime_type_entry")));