summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Sullivan <sullivan@src.gnome.org>2000-10-16 22:53:20 +0000
committerJohn Sullivan <sullivan@src.gnome.org>2000-10-16 22:53:20 +0000
commit3cd7777ce35c2111e9d7035e45fee9b9bce3c3c9 (patch)
treea4d7a704d10e013f1680d00605691821f9741fb3
parentc0226b5618d4c4532fd6fbbca8589704487a9c41 (diff)
downloadnautilus-3cd7777ce35c2111e9d7035e45fee9b9bce3c3c9.tar.gz
Finished up Matt Bissiri's earlier checkin for him. Removed the
* libnautilus-extensions/nautilus-list.c: (nautilus_list_keyboard_navigation_key_press), (nautilus_list_get_first_selected_row), (nautilus_list_get_last_selected_row): * libnautilus-extensions/nautilus-list.h: Finished up Matt Bissiri's earlier checkin for him. Removed the confusingly almost-redundant nautilus_clist_get_first/last_selected_row; made nautilus_list_get_last_selected_row public to match get_first_selected_row. Thanks to Matt for the patch.
-rw-r--r--ChangeLog14
-rw-r--r--libnautilus-extensions/nautilus-list.c47
-rw-r--r--libnautilus-extensions/nautilus-list.h1
-rw-r--r--libnautilus-private/nautilus-list.c47
-rw-r--r--libnautilus-private/nautilus-list.h1
5 files changed, 82 insertions, 28 deletions
diff --git a/ChangeLog b/ChangeLog
index 50bba9b73..9fce57733 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2000-10-16 John Sullivan <sullivan@eazel.com>
+
+ * libnautilus-extensions/nautilus-list.c:
+ (nautilus_list_keyboard_navigation_key_press),
+ (nautilus_list_get_first_selected_row),
+ (nautilus_list_get_last_selected_row):
+ * libnautilus-extensions/nautilus-list.h:
+
+ Finished up Matt Bissiri's earlier checkin for him.
+ Removed the confusingly almost-redundant
+ nautilus_clist_get_first/last_selected_row; made
+ nautilus_list_get_last_selected_row public to match
+ get_first_selected_row. Thanks to Matt for the patch.
+
2000-10-16 Darin Adler <darin@eazel.com>
* libnautilus-extensions/nautilus-global-preferences.c: Changed
diff --git a/libnautilus-extensions/nautilus-list.c b/libnautilus-extensions/nautilus-list.c
index 86d35dfdf..d5e29c609 100644
--- a/libnautilus-extensions/nautilus-list.c
+++ b/libnautilus-extensions/nautilus-list.c
@@ -1194,18 +1194,6 @@ nautilus_list_reveal_row (NautilusList *list, int row_index)
}
}
-static int
-nautilus_clist_get_first_selected_row (NautilusCList *list)
-{
- return nautilus_gtk_clist_get_first_selected_row ((GtkCList *)list);
-}
-
-static int
-nautilus_clist_get_last_selected_row (NautilusCList *list)
-{
- return nautilus_gtk_clist_get_last_selected_row ((GtkCList *)list);
-}
-
static void
nautilus_list_keyboard_navigation_key_press (NautilusList *list, GdkEventKey *event,
GtkScrollType scroll_type, gboolean jump_to_end)
@@ -1234,8 +1222,8 @@ nautilus_list_keyboard_navigation_key_press (NautilusList *list, GdkEventKey *ev
} else {
start_row = (scroll_type == GTK_SCROLL_STEP_FORWARD
|| scroll_type == GTK_SCROLL_PAGE_FORWARD ?
- nautilus_clist_get_last_selected_row (clist) :
- nautilus_clist_get_first_selected_row (clist));
+ nautilus_list_get_last_selected_row (list) :
+ nautilus_list_get_first_selected_row (list));
}
/* If there's no row to start with, select the row farthest toward the end.
@@ -3326,6 +3314,12 @@ nautilus_list_each_selected_row (NautilusList *list, NautilusEachRowFunction fun
}
}
+/**
+ * nautilus_list_get_first_selected_row:
+ *
+ * Get the index of the first selected row, or -1 if no rows are selected.
+ * @list: Any NautilusList
+ **/
int
nautilus_list_get_first_selected_row (NautilusList *list)
{
@@ -3346,6 +3340,31 @@ nautilus_list_get_first_selected_row (NautilusList *list)
return -1;
}
+/**
+ * nautilus_list_get_last_selected_row:
+ *
+ * Get the index of the last selected row, or -1 if no rows are selected.
+ * @list: Any GtkCList
+ **/
+int
+nautilus_list_get_last_selected_row (NautilusList *list)
+{
+ NautilusCListRow *row;
+ GList *p;
+ int row_index;
+
+ g_return_val_if_fail (NAUTILUS_IS_LIST (list), -1);
+
+ for (p = NAUTILUS_CLIST (list)->row_list_end, row_index = NAUTILUS_CLIST (list)->rows - 1; p != NULL; p = p->prev, --row_index) {
+ row = p->data;
+ if (row->state == GTK_STATE_SELECTED) {
+ return row_index;
+ }
+ }
+
+ return -1;
+}
+
/* Workaround for a bug in GtkCList's insert_row.
* It sets the focus row to 0 if there is exactly one row,
* even if there was no focus on entry.
diff --git a/libnautilus-extensions/nautilus-list.h b/libnautilus-extensions/nautilus-list.h
index e8d0568bd..7091eee7a 100644
--- a/libnautilus-extensions/nautilus-list.h
+++ b/libnautilus-extensions/nautilus-list.h
@@ -150,6 +150,7 @@ void nautilus_list_select_row (NautilusList *list,
NautilusCListRow *nautilus_list_row_at (NautilusList *list,
int y);
int nautilus_list_get_first_selected_row (NautilusList *list);
+int nautilus_list_get_last_selected_row (NautilusList *list);
void nautilus_list_each_selected_row (NautilusList *list,
NautilusEachRowFunction function,
gpointer data);
diff --git a/libnautilus-private/nautilus-list.c b/libnautilus-private/nautilus-list.c
index 86d35dfdf..d5e29c609 100644
--- a/libnautilus-private/nautilus-list.c
+++ b/libnautilus-private/nautilus-list.c
@@ -1194,18 +1194,6 @@ nautilus_list_reveal_row (NautilusList *list, int row_index)
}
}
-static int
-nautilus_clist_get_first_selected_row (NautilusCList *list)
-{
- return nautilus_gtk_clist_get_first_selected_row ((GtkCList *)list);
-}
-
-static int
-nautilus_clist_get_last_selected_row (NautilusCList *list)
-{
- return nautilus_gtk_clist_get_last_selected_row ((GtkCList *)list);
-}
-
static void
nautilus_list_keyboard_navigation_key_press (NautilusList *list, GdkEventKey *event,
GtkScrollType scroll_type, gboolean jump_to_end)
@@ -1234,8 +1222,8 @@ nautilus_list_keyboard_navigation_key_press (NautilusList *list, GdkEventKey *ev
} else {
start_row = (scroll_type == GTK_SCROLL_STEP_FORWARD
|| scroll_type == GTK_SCROLL_PAGE_FORWARD ?
- nautilus_clist_get_last_selected_row (clist) :
- nautilus_clist_get_first_selected_row (clist));
+ nautilus_list_get_last_selected_row (list) :
+ nautilus_list_get_first_selected_row (list));
}
/* If there's no row to start with, select the row farthest toward the end.
@@ -3326,6 +3314,12 @@ nautilus_list_each_selected_row (NautilusList *list, NautilusEachRowFunction fun
}
}
+/**
+ * nautilus_list_get_first_selected_row:
+ *
+ * Get the index of the first selected row, or -1 if no rows are selected.
+ * @list: Any NautilusList
+ **/
int
nautilus_list_get_first_selected_row (NautilusList *list)
{
@@ -3346,6 +3340,31 @@ nautilus_list_get_first_selected_row (NautilusList *list)
return -1;
}
+/**
+ * nautilus_list_get_last_selected_row:
+ *
+ * Get the index of the last selected row, or -1 if no rows are selected.
+ * @list: Any GtkCList
+ **/
+int
+nautilus_list_get_last_selected_row (NautilusList *list)
+{
+ NautilusCListRow *row;
+ GList *p;
+ int row_index;
+
+ g_return_val_if_fail (NAUTILUS_IS_LIST (list), -1);
+
+ for (p = NAUTILUS_CLIST (list)->row_list_end, row_index = NAUTILUS_CLIST (list)->rows - 1; p != NULL; p = p->prev, --row_index) {
+ row = p->data;
+ if (row->state == GTK_STATE_SELECTED) {
+ return row_index;
+ }
+ }
+
+ return -1;
+}
+
/* Workaround for a bug in GtkCList's insert_row.
* It sets the focus row to 0 if there is exactly one row,
* even if there was no focus on entry.
diff --git a/libnautilus-private/nautilus-list.h b/libnautilus-private/nautilus-list.h
index e8d0568bd..7091eee7a 100644
--- a/libnautilus-private/nautilus-list.h
+++ b/libnautilus-private/nautilus-list.h
@@ -150,6 +150,7 @@ void nautilus_list_select_row (NautilusList *list,
NautilusCListRow *nautilus_list_row_at (NautilusList *list,
int y);
int nautilus_list_get_first_selected_row (NautilusList *list);
+int nautilus_list_get_last_selected_row (NautilusList *list);
void nautilus_list_each_selected_row (NautilusList *list,
NautilusEachRowFunction function,
gpointer data);