Revision 2594 src/folderview.c

folderview.c (revision 2594)
1861 1861
static gboolean folderview_key_pressed(GtkWidget *widget, GdkEventKey *event,
1862 1862
				       FolderView *folderview)
1863 1863
{
1864
	GtkTreeView *treeview = GTK_TREE_VIEW(widget);
1864 1865
	GtkTreePath *opened = NULL, *selected = NULL;
1865 1866
	GtkAdjustment *adj;
1866 1867
	gboolean moved;
......
1907 1908
			return FALSE;
1908 1909
		adj = gtk_scrolled_window_get_hadjustment
1909 1910
			(GTK_SCROLLED_WINDOW(folderview->scrolledwin));
1910
		if (adj->lower != adj->value)
1911
		if (adj->lower < adj->value)
1911 1912
			return FALSE;
1912 1913
		if (folderview->selected) {
1913 1914
			selected = gtk_tree_row_reference_get_path
1914 1915
				(folderview->selected);
1915 1916
			if (selected) {
1916
				if (gtk_tree_view_row_expanded(GTK_TREE_VIEW(folderview->treeview), selected)) {
1917
					gtk_tree_view_collapse_row(GTK_TREE_VIEW(folderview->treeview), selected);
1917
				if (gtk_tree_view_row_expanded(treeview, selected)) {
1918
					gtk_tree_view_collapse_row(treeview, selected);
1918 1919
					gtk_tree_path_free(selected);
1919 1920
					return TRUE;
1920 1921
				}
1921 1922
				gtk_tree_path_free(selected);
1922 1923
			}
1923 1924
		}
1924
		g_signal_emit_by_name(G_OBJECT(folderview->treeview),
1925
		g_signal_emit_by_name(G_OBJECT(treeview),
1925 1926
				      "select-cursor-parent", &moved);
1926 1927
		return TRUE;
1927 1928
	case GDK_Right:
......
1931 1932
			return FALSE;
1932 1933
		adj = gtk_scrolled_window_get_hadjustment
1933 1934
			(GTK_SCROLLED_WINDOW(folderview->scrolledwin));
1934
		if (adj->upper - adj->page_size != adj->value)
1935
		if (adj->upper - adj->page_size > adj->value)
1935 1936
			return FALSE;
1936 1937
		if (folderview->selected) {
1937 1938
			selected = gtk_tree_row_reference_get_path
1938 1939
				(folderview->selected);
1939 1940
			if (selected) {
1940
				if (!gtk_tree_view_row_expanded(GTK_TREE_VIEW(folderview->treeview), selected)) {
1941
					gtk_tree_view_expand_row(GTK_TREE_VIEW(folderview->treeview), selected, FALSE);
1941
				if (!gtk_tree_view_row_expanded(treeview, selected)) {
1942
					gtk_tree_view_expand_row(treeview, selected, FALSE);
1942 1943
					gtk_tree_path_free(selected);
1943 1944
					return TRUE;
1944 1945
				}

Also available in: Unified diff