nautilus r13804 - in trunk: . libnautilus-private
- From: cneumair svn gnome org
- To: svn-commits-list gnome org
- Subject: nautilus r13804 - in trunk: . libnautilus-private
- Date: Fri, 22 Feb 2008 11:02:56 +0000 (GMT)
Author: cneumair
Date: Fri Feb 22 11:02:56 2008
New Revision: 13804
URL: http://svn.gnome.org/viewvc/nautilus?rev=13804&view=rev
Log:
2008-02-22 Chrustian Neumair <cneumair gnome org>
* libnautilus-private/nautilus-icon-container.c:
(nautilus_icon_container_get_selected_icons),
(nautilus_icon_container_get_selected_icon_locations),
(stop_rubberbanding): Add
nautilus_icon_container_get_selected_icons(). Use icon as range
selection base if it has been rubberbanded. Fixes #512894.
Modified:
trunk/ChangeLog
trunk/libnautilus-private/nautilus-icon-container.c
Modified: trunk/libnautilus-private/nautilus-icon-container.c
==============================================================================
--- trunk/libnautilus-private/nautilus-icon-container.c (original)
+++ trunk/libnautilus-private/nautilus-icon-container.c Fri Feb 22 11:02:56 2008
@@ -203,6 +203,7 @@
gboolean large_text);
static void handle_vadjustment_changed (GtkAdjustment *adjustment,
NautilusIconContainer *container);
+static GList * nautilus_icon_container_get_selected_icons (NautilusIconContainer *container);
static void nautilus_icon_container_update_visible_icons (NautilusIconContainer *container);
static void reveal_icon (NautilusIconContainer *container,
NautilusIcon *icon);
@@ -2208,6 +2209,7 @@
guint32 time)
{
NautilusIconRubberbandInfo *band_info;
+ GList *icons;
band_info = &container->details->rubberband_info;
@@ -2222,6 +2224,14 @@
gtk_object_destroy (GTK_OBJECT (band_info->selection_rectangle));
band_info->selection_rectangle = NULL;
+ /* if only one item has been selected, use it as range
+ * selection base (cf. handle_icon_button_press) */
+ icons = nautilus_icon_container_get_selected_icons (container);
+ if (g_list_length (icons) == 1) {
+ container->details->range_selection_base_icon = icons->data;
+ }
+ g_list_free (icons);
+
g_signal_emit (container,
signals[BAND_SELECT_ENDED], 0);
}
@@ -6190,6 +6200,26 @@
return g_list_reverse (list);
}
+static GList *
+nautilus_icon_container_get_selected_icons (NautilusIconContainer *container)
+{
+ GList *list, *p;
+
+ g_return_val_if_fail (NAUTILUS_IS_ICON_CONTAINER (container), NULL);
+
+ list = NULL;
+ for (p = container->details->icons; p != NULL; p = p->next) {
+ NautilusIcon *icon;
+
+ icon = p->data;
+ if (icon->is_selected) {
+ list = g_list_prepend (list, icon);
+ }
+ }
+
+ return g_list_reverse (list);
+}
+
/* Returns an array of GdkPoints of locations of the icons. */
static GArray *
nautilus_icon_container_get_icon_locations (NautilusIconContainer *container,
@@ -6222,20 +6252,11 @@
nautilus_icon_container_get_selected_icon_locations (NautilusIconContainer *container)
{
GArray *result;
- GList *icons, *node;
+ GList *icons;
g_return_val_if_fail (NAUTILUS_IS_ICON_CONTAINER (container), NULL);
- icons = NULL;
- for (node = container->details->icons; node != NULL; node = node->next) {
- NautilusIcon *icon;
-
- icon = node->data;
- if (icon->is_selected) {
- icons = g_list_prepend (icons, icon);
- }
- }
-
+ icons = nautilus_icon_container_get_selected_icons (container);
result = nautilus_icon_container_get_icon_locations (container, icons);
g_list_free (icons);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]