コード例 #1
0
void SelectBooksDialog::update_gui()
{
    // Get the upper corners of the visible area of both treeviews.
    // If one changed, then the other will be scrolled to the same position,
    // and vice versa.
    GdkRectangle gdk_rectangle;
    gtk_tree_view_get_visible_rect(GTK_TREE_VIEW(treeviewbooks), &gdk_rectangle);
    if (gdk_rectangle.y != treeviewbooks_previous_y) {
        treeviewbooks_previous_y = gdk_rectangle.y;
        gtk_tree_view_scroll_to_point(GTK_TREE_VIEW(treeviewportions), -1, gdk_rectangle.y);
    }
    gtk_tree_view_get_visible_rect(GTK_TREE_VIEW(treeviewportions), &gdk_rectangle);
    if (gdk_rectangle.y != treeviewportions_previous_y) {
        treeviewportions_previous_y = gdk_rectangle.y;
        gtk_tree_view_scroll_to_point(GTK_TREE_VIEW(treeviewbooks), -1, gdk_rectangle.y);
    }
}
コード例 #2
0
ファイル: main.c プロジェクト: lhecker/psp1beleg
void on_edited(GtkCellRendererText *renderer, gchar *path, gchar *new_text, int col) {
	(void)(renderer); // unused

	bool addedPlaceholder = gbase_list_change_record(gbase_list_singleton, new_text, atoi(path), col);

	if (addedPlaceholder) {
		gtk_tree_view_scroll_to_point(GTK_TREE_VIEW(tree_view_singleton), -1, 0);
	}
}
コード例 #3
0
ファイル: chanview-tree.c プロジェクト: Babl0lka/XChat
static void
cv_tree_focus (chan *ch)
{
	GtkTreeView *tree = ((treeview *)ch->cv)->tree;
	GtkTreeModel *model = gtk_tree_view_get_model (tree);
	GtkTreePath *path;
	GtkTreeIter parent;
	GdkRectangle cell_rect;
	GdkRectangle vis_rect;
	gint dest_y;

	/* expand the parent node */
	if (gtk_tree_model_iter_parent (model, &parent, &ch->iter))
	{
		path = gtk_tree_model_get_path (model, &parent);
		if (path)
		{
			/*if (!gtk_tree_view_row_expanded (tree, path))
			{
				gtk_tree_path_free (path);
				return;
			}*/
			gtk_tree_view_expand_row (tree, path, FALSE);
			gtk_tree_path_free (path);
		}
	}

	path = gtk_tree_model_get_path (model, &ch->iter);
	if (path)
	{
		/* This full section does what
		 * gtk_tree_view_scroll_to_cell (tree, path, NULL, TRUE, 0.5, 0.5);
		 * does, except it only scrolls the window if the provided cell is
		 * not visible. Basic algorithm taken from gtktreeview.c */

		/* obtain information to see if the cell is visible */
		gtk_tree_view_get_background_area (tree, path, NULL, &cell_rect);
		gtk_tree_view_get_visible_rect (tree, &vis_rect);

		/* The cordinates aren't offset correctly */
		gtk_tree_view_widget_to_tree_coords( tree, cell_rect.x, cell_rect.y, NULL, &cell_rect.y );

		/* only need to scroll if out of bounds */
		if (cell_rect.y < vis_rect.y ||
				cell_rect.y + cell_rect.height > vis_rect.y + vis_rect.height)
		{
			dest_y = cell_rect.y - ((vis_rect.height - cell_rect.height) * 0.5);
			if (dest_y < 0)
				dest_y = 0;
			gtk_tree_view_scroll_to_point (tree, -1, dest_y);
		}
		/* theft done, now make it focused like */
		gtk_tree_view_set_cursor (tree, path, NULL, FALSE);
		gtk_tree_path_free (path);
	}
}
コード例 #4
0
ファイル: foldersel.c プロジェクト: twolife/claws
FolderItem *foldersel_folder_sel(Folder *cur_folder, FolderSelectionType type,
				 const gchar *default_folder, gboolean can_sel_mailbox)
{
	selected_item = NULL;
	root_selectable = can_sel_mailbox;

	if (!window) {
		foldersel_create();
		foldersel_init();
	}

	foldersel_set_tree(cur_folder, type);

	/* select current */
	if (folder_item) {
		FolderItemSearch fis;

		fis.item = folder_item;
		fis.path = NULL;

		/* find matching model entry */
		gtk_tree_model_foreach
			(GTK_TREE_MODEL(tree_store),
			 (GtkTreeModelForeachFunc)tree_view_folder_item_func,
			 &fis);

		if (fis.path) {
			GtkTreeSelection *selection;

			selection = gtk_tree_view_get_selection
				(GTK_TREE_VIEW(treeview));
			gtk_tree_selection_select_iter(selection, &fis.iter);
			gtk_tree_view_set_cursor(GTK_TREE_VIEW(treeview),
						 fis.path, NULL, FALSE);
			gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(treeview),
						     fis.path,
						     NULL, TRUE, 0.5, 0.0);
			gtk_tree_path_free(fis.path);
		} else
			gtk_tree_view_scroll_to_point
				(GTK_TREE_VIEW(treeview), 0, 0);
	} else
		gtk_tree_view_scroll_to_point(GTK_TREE_VIEW(treeview), 0, 0);

	gtk_widget_grab_focus(ok_button);
	gtk_widget_grab_focus(treeview);

	gtk_window_present(GTK_WINDOW(window));
	manage_window_set_transient(GTK_WINDOW(window));
	gtk_window_set_modal(GTK_WINDOW(window), TRUE);

	cancelled = finished = FALSE;

	while (finished == FALSE)
		gtk_main_iteration();

	gtk_widget_destroy(window);
	window = NULL;

	if (!cancelled &&
	    selected_item && (selected_item->path || root_selectable)) {
		folder_item = selected_item;
		return folder_item;
	} else
		return NULL;
}
コード例 #5
0
ファイル: rbgtktreeview.c プロジェクト: Vasfed/ruby-gnome2
static VALUE
rg_scroll_to_point(VALUE self, VALUE x, VALUE y)
{
    gtk_tree_view_scroll_to_point(_SELF(self), NUM2INT(x), NUM2INT(y));
    return self;
}