summaryrefslogtreecommitdiff
path: root/gtk/gtkiconview.c
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@src.gnome.org>2004-07-03 20:36:01 +0000
committerAnders Carlsson <andersca@src.gnome.org>2004-07-03 20:36:01 +0000
commit08d94851a0614c918c46d5fe5dbed13b153f2388 (patch)
tree251396f50962e768ee60bd15061070ae27f9ae13 /gtk/gtkiconview.c
parent5cb796a44f842e1dbc75de315294a47087913507 (diff)
downloadgtk+-08d94851a0614c918c46d5fe5dbed13b153f2388.tar.gz
Fix a few things
Diffstat (limited to 'gtk/gtkiconview.c')
-rw-r--r--gtk/gtkiconview.c42
1 files changed, 32 insertions, 10 deletions
diff --git a/gtk/gtkiconview.c b/gtk/gtkiconview.c
index 217bf83eef..b4b9e6b45d 100644
--- a/gtk/gtkiconview.c
+++ b/gtk/gtkiconview.c
@@ -95,12 +95,14 @@ struct _EggIconListPrivate
guint shift_pressed : 1;
EggIconListItem *last_single_clicked;
-
+
+#ifdef DND_WORKS
/* Drag-and-drop. */
gint pressed_button;
gint press_start_x;
gint press_start_y;
-
+#endif
+
/* Layout used to draw icon text */
PangoLayout *layout;
};
@@ -201,8 +203,10 @@ static gboolean egg_icon_list_item_hit_test (EggIconListItem *it
gint y,
gint width,
gint height);
+#ifdef DND_WORKS
static gboolean egg_icon_list_maybe_begin_dragging_items (EggIconList *icon_list,
GdkEventMotion *event);
+#endif
static gboolean egg_icon_list_unselect_all_internal (EggIconList *icon_list,
gboolean emit);
static void egg_icon_list_calculate_item_size (EggIconList *icon_list,
@@ -559,9 +563,11 @@ egg_icon_list_init (EggIconList *icon_list)
icon_list->priv->width = 0;
icon_list->priv->height = 0;
icon_list->priv->selection_mode = GTK_SELECTION_SINGLE;
+#ifdef DND_WORKS
icon_list->priv->pressed_button = -1;
icon_list->priv->press_start_x = -1;
icon_list->priv->press_start_y = -1;
+#endif
icon_list->priv->text_column = -1;
icon_list->priv->markup_column = -1;
icon_list->priv->pixbuf_column = -1;
@@ -880,9 +886,9 @@ egg_icon_list_motion (GtkWidget *widget,
gint abs_y;
icon_list = EGG_ICON_LIST (widget);
-
+#ifdef DND_WORKS
egg_icon_list_maybe_begin_dragging_items (icon_list, event);
-
+#endif
if (icon_list->priv->rubberbanding)
{
rubberbanding (widget);
@@ -983,7 +989,7 @@ egg_icon_list_button_press (GtkWidget *widget,
egg_icon_list_set_cursor_item (icon_list, item);
icon_list->priv->anchor_item = item;
}
-
+#ifdef DND_WORKS
/* Save press to possibly begin a drag */
if (icon_list->priv->pressed_button < 0)
{
@@ -991,7 +997,7 @@ egg_icon_list_button_press (GtkWidget *widget,
icon_list->priv->press_start_x = event->x;
icon_list->priv->press_start_y = event->y;
}
-
+#endif
if (!icon_list->priv->last_single_clicked)
icon_list->priv->last_single_clicked = item;
}
@@ -1039,10 +1045,11 @@ egg_icon_list_button_release (GtkWidget *widget,
EggIconList *icon_list;
icon_list = EGG_ICON_LIST (widget);
-
+
+#ifdef DND_WORKS
if (icon_list->priv->pressed_button == event->button)
icon_list->priv->pressed_button = -1;
-
+#endif
egg_icon_list_stop_rubberbanding (icon_list);
if (icon_list->priv->scroll_timeout_id != 0)
@@ -1213,6 +1220,7 @@ egg_icon_list_item_hit_test (EggIconListItem *item,
return FALSE;
}
+#ifdef DND_WORKS
static gboolean
egg_icon_list_maybe_begin_dragging_items (EggIconList *icon_list,
GdkEventMotion *event)
@@ -1259,7 +1267,7 @@ egg_icon_list_maybe_begin_dragging_items (EggIconList *icon_list,
return retval;
}
-
+#endif
static gboolean
egg_icon_list_unselect_all_internal (EggIconList *icon_list,
@@ -2134,6 +2142,7 @@ egg_icon_list_row_deleted (GtkTreeModel *model,
EggIconList *icon_list;
EggIconListItem *item;
GList *list;
+ gboolean emit = FALSE;
icon_list = EGG_ICON_LIST (data);
@@ -2141,10 +2150,23 @@ egg_icon_list_row_deleted (GtkTreeModel *model,
list = g_list_nth (icon_list->priv->items, index);
item = list->data;
+
+ if (item == icon_list->priv->anchor_item)
+ icon_list->priv->anchor_item = NULL;
+
+ if (item == icon_list->priv->cursor_item)
+ icon_list->priv->cursor_item = NULL;
+
+ if (item->selected)
+ emit = TRUE;
+
item->index = -1;
- egg_icon_list_item_unref (item);
+ egg_icon_list_item_unref (item);
+
icon_list->priv->items = g_list_delete_link (icon_list->priv->items, list);
+ if (emit)
+ g_signal_emit (icon_list, icon_list_signals[SELECTION_CHANGED], 0);
}
static void