static void close_dialog (GtkWidget *button, gpointer data) { PagerData *pager = data; GtkTreeViewColumn *col; GtkCellArea *area; GtkCellEditable *edit_widget; /* This is a hack. The "editable" signal for GtkCellRenderer is emitted only on button press or focus cycle. Hence when the user changes the name and closes the preferences dialog without a button-press he would lose the name changes. So, we call the gtk_cell_editable_editing_done to stop the editing. Thanks to Paolo for a better crack than the one I had. */ col = gtk_tree_view_get_column (GTK_TREE_VIEW (pager->workspaces_tree), 0); area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (col)); edit_widget = gtk_cell_area_get_edit_widget (area); if (edit_widget) gtk_cell_editable_editing_done (edit_widget); gtk_widget_destroy (pager->properties_dialog); }
static void photos_organize_collection_view_text_editing_canceled (PhotosOrganizeCollectionView *self) { if (self->choice_confirmed) { GtkCellArea *cell_area; GtkCellEditable *entry; GtkTreePath *path; self->choice_confirmed = FALSE; g_object_get (self->view_col, "cell-area", &cell_area, NULL); entry = gtk_cell_area_get_edit_widget (cell_area); g_object_unref (cell_area); path = photos_organize_collection_model_get_placeholder (PHOTOS_ORGANIZE_COLLECTION_MODEL (self->model), FALSE); if (entry != NULL && path != NULL) { const gchar *text; text = gtk_entry_get_text (GTK_ENTRY (entry)); photos_organize_collection_view_text_edited_real (self, GTK_CELL_RENDERER_TEXT (self->renderer_text), path, text); } gtk_tree_path_free (path); } else photos_organize_collection_model_remove_placeholder (PHOTOS_ORGANIZE_COLLECTION_MODEL (self->model)); }
static void preferences_response (MCPrefsDialog *dialog, int id, MCData *mc) { switch (id) { case GTK_RESPONSE_HELP: show_help_section (GTK_WINDOW (dialog), "command-line-prefs-0"); break; case GTK_RESPONSE_CLOSE: default: { GtkTreeViewColumn *col; GtkCellArea *area; GtkCellEditable *edit_widget; dialog = &mc->prefs_dialog; /* A hack to make sure 'edited' on the renderer if we * close the dialog while editing. */ col = gtk_tree_view_get_column (GTK_TREE_VIEW (dialog->macros_tree), 0); area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (col)); edit_widget = gtk_cell_area_get_edit_widget (area); if (edit_widget) gtk_cell_editable_editing_done (edit_widget); col = gtk_tree_view_get_column (GTK_TREE_VIEW (dialog->macros_tree), 1); area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (col)); edit_widget = gtk_cell_area_get_edit_widget (area); if (edit_widget) gtk_cell_editable_editing_done (edit_widget); gtk_widget_hide (dialog->dialog); } break; } }