コード例 #1
0
ファイル: fm-list-view.c プロジェクト: ammonkey/marlin
static void
fm_list_view_start_renaming_file (FMDirectoryView *view,
                                  GOFFile *file,
                                  gboolean select_all)
{
	FMListView *list_view;
	GtkTreeIter iter;
	GtkTreePath *path;
	gint start_offset, end_offset;

	list_view = FM_LIST_VIEW (view);
	
	/* Select all if we are in renaming mode already */
	if (list_view->details->file_name_column && list_view->details->editable_widget) {
		gtk_editable_select_region (GTK_EDITABLE (list_view->details->editable_widget),
                                    0, -1);
		return;
	}

	if (!fm_list_model_get_first_iter_for_file (list_view->model, file, &iter)) {
        g_debug ("%s FAILED", G_STRFUNC);
		return;
	}

	/* Freeze updates to the view to prevent losing rename focus when the tree view updates */
	fm_list_view_freeze_updates (FM_LIST_VIEW (view));

	path = gtk_tree_model_get_path (GTK_TREE_MODEL (list_view->model), &iter);

	/* Make filename-cells editable. */
	g_object_set (G_OBJECT (list_view->details->file_name_cell),
                  "editable", TRUE, NULL);

	gtk_tree_view_scroll_to_cell (list_view->tree, NULL,
                                  list_view->details->file_name_column,
                                  TRUE, 0.0, 0.0);
	/* set cursor also triggers editing-started, where we save the editable widget */
	/*gtk_tree_view_set_cursor (list_view->tree, path,
                              list_view->details->file_name_column, TRUE);*/
    /* sound like set_cursor is not enought to trigger editing-started, we use cursor_on_cell instead */
    gtk_tree_view_set_cursor_on_cell (list_view->tree, path,
                                      list_view->details->file_name_column,
                                      (GtkCellRenderer *) list_view->details->file_name_cell,
                                      TRUE);

	if (list_view->details->editable_widget != NULL) {
		eel_filename_get_rename_region (list_view->details->original_name,
                                        &start_offset, &end_offset);

		gtk_editable_select_region (GTK_EDITABLE (list_view->details->editable_widget),
                                    start_offset, end_offset);
	}

	gtk_tree_path_free (path);
}
static void
reset_button_clicked_cb (GtkButton *w,
                         CajaFileConflictDialog *dialog)
{
    CajaFileConflictDialogDetails *details;
    int start_pos, end_pos;

    details = dialog->details;

    gtk_entry_set_text (GTK_ENTRY (details->entry),
                        details->conflict_name);
    gtk_widget_grab_focus (details->entry);
    eel_filename_get_rename_region (details->conflict_name,
                                    &start_pos, &end_pos);
    gtk_editable_select_region (GTK_EDITABLE (details->entry),
                                start_pos, end_pos);

}
コード例 #3
0
static void
expander_activated_cb (GtkExpander *w,
                       NautilusFileConflictDialog *dialog)
{
    NautilusFileConflictDialogDetails *details;
    int start_pos, end_pos;

    details = dialog->details;

    if (!gtk_expander_get_expanded (w)) {
        if (g_strcmp0 (gtk_entry_get_text (GTK_ENTRY (details->entry)),
                       details->conflict_name) == 0) {
            gtk_widget_grab_focus (details->entry);

            eel_filename_get_rename_region (details->conflict_name,
                                            &start_pos, &end_pos);
            gtk_editable_select_region (GTK_EDITABLE (details->entry),
                                        start_pos, end_pos);
        }
    }
}