summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--demos/gtk-demo/clipboard.c24
-rw-r--r--demos/icon-browser/iconbrowserwin.c6
-rw-r--r--gtk/gtkcalendar.c3
-rw-r--r--gtk/gtkcolorbutton.c3
-rw-r--r--gtk/gtkcolorswatch.c3
-rw-r--r--gtk/gtkdragsource.c47
-rw-r--r--gtk/gtkdragsource.h3
-rw-r--r--gtk/gtkentry.c4
-rw-r--r--gtk/gtkiconview.c4
-rw-r--r--gtk/gtklabel.c3
-rw-r--r--gtk/gtklinkbutton.c3
-rw-r--r--gtk/gtknotebook.c4
-rw-r--r--gtk/gtkpathbar.c5
-rw-r--r--gtk/gtkplacessidebar.c4
-rw-r--r--gtk/gtktext.c7
-rw-r--r--gtk/gtktextview.c4
-rw-r--r--gtk/gtktreeview.c4
-rw-r--r--tests/testdnd.c5
-rw-r--r--tests/testdnd2.c7
-rw-r--r--tests/testlist3.c4
-rw-r--r--tests/testtoolbar.c4
21 files changed, 102 insertions, 49 deletions
diff --git a/demos/gtk-demo/clipboard.c b/demos/gtk-demo/clipboard.c
index 51f5507c26..3da096060e 100644
--- a/demos/gtk-demo/clipboard.c
+++ b/demos/gtk-demo/clipboard.c
@@ -144,6 +144,19 @@ get_texture (GValue *value,
}
static void
+prepare_drag (GtkDragSource *source,
+ double x,
+ double y,
+ GtkWidget *image)
+{
+ GdkContentProvider *content;
+
+ content = gdk_content_provider_new_with_callback (GDK_TYPE_TEXTURE, get_texture, image);
+ gtk_drag_source_set_content (source, content);
+ g_object_unref (content);
+}
+
+static void
got_texture (GObject *source,
GAsyncResult *result,
gpointer data)
@@ -265,7 +278,6 @@ do_clipboard (GtkWidget *do_widget)
{ "paste", paste_image, NULL, NULL, NULL },
};
GActionGroup *actions;
- GdkContentProvider *content = NULL;
GtkDragSource *source;
GtkDropTarget *dest;
GdkContentFormats *formats;
@@ -331,10 +343,9 @@ do_clipboard (GtkWidget *do_widget)
gtk_container_add (GTK_CONTAINER (hbox), image);
/* make image a drag source */
- content = gdk_content_provider_new_with_callback (GDK_TYPE_TEXTURE, get_texture, image);
- source = gtk_drag_source_new (content, GDK_ACTION_COPY);
- g_object_unref (content);
+ source = gtk_drag_source_new ();
gtk_drag_source_attach (source, image, GDK_BUTTON1_MASK);
+ g_signal_connect (source, "prepare", G_CALLBACK (prepare_drag), NULL);
g_signal_connect (source, "drag-begin", G_CALLBACK (drag_begin), image);
/* accept drops on image */
@@ -364,9 +375,8 @@ do_clipboard (GtkWidget *do_widget)
gtk_container_add (GTK_CONTAINER (hbox), image);
/* make image a drag source */
- content = gdk_content_provider_new_with_callback (GDK_TYPE_TEXTURE, get_texture, image);
- source = gtk_drag_source_new (content, GDK_ACTION_COPY);
- g_object_unref (content);
+ source = gtk_drag_source_new ();
+ g_signal_connect (source, "prepare", G_CALLBACK (prepare_drag), NULL);
g_signal_connect (source, "drag-begin", G_CALLBACK (drag_begin), image);
gtk_drag_source_attach (source, image, GDK_BUTTON1_MASK);
diff --git a/demos/icon-browser/iconbrowserwin.c b/demos/icon-browser/iconbrowserwin.c
index e560bc612e..84ccb27259 100644
--- a/demos/icon-browser/iconbrowserwin.c
+++ b/demos/icon-browser/iconbrowserwin.c
@@ -423,8 +423,9 @@ setup_image_dnd (GtkWidget *image)
GdkContentProvider *content;
GtkDragSource *source;
+ source = gtk_drag_source_new ();
content = gdk_content_provider_new_with_callback (GDK_TYPE_TEXTURE, get_texture, image);
- source = gtk_drag_source_new (content, GDK_ACTION_COPY);
+ gtk_drag_source_set_content (source, content);
g_object_unref (content);
g_signal_connect (source, "drag-begin", G_CALLBACK (drag_begin), image);
gtk_drag_source_attach (source, image, GDK_BUTTON1_MASK);
@@ -436,8 +437,9 @@ setup_scalable_image_dnd (GtkWidget *image)
GdkContentProvider *content;
GtkDragSource *source;
+ source = gtk_drag_source_new ();
content = gdk_content_provider_new_with_callback (G_TYPE_FILE, get_file, image);
- source = gtk_drag_source_new (content, GDK_ACTION_COPY);
+ gtk_drag_source_set_content (source, content);
g_object_unref (content);
g_signal_connect (source, "drag-begin", G_CALLBACK (drag_begin), image);
diff --git a/gtk/gtkcalendar.c b/gtk/gtkcalendar.c
index 7e3b8b49d8..9892f99e22 100644
--- a/gtk/gtkcalendar.c
+++ b/gtk/gtkcalendar.c
@@ -2709,8 +2709,9 @@ gtk_calendar_drag_update (GtkGestureDrag *gesture,
gtk_gesture_drag_get_start_point (gesture, &start_x, &start_y);
+ source = gtk_drag_source_new ();
content = get_calendar_content (calendar);
- source = gtk_drag_source_new (content, GDK_ACTION_COPY);
+ gtk_drag_source_set_content (source, content);
g_object_unref (content);
device = gtk_gesture_get_device (GTK_GESTURE (gesture));
gtk_drag_source_drag_begin (source, widget, device, start_x, start_y);
diff --git a/gtk/gtkcolorbutton.c b/gtk/gtkcolorbutton.c
index 00fcf02b68..a951958c48 100644
--- a/gtk/gtkcolorbutton.c
+++ b/gtk/gtkcolorbutton.c
@@ -333,8 +333,9 @@ gtk_color_button_init (GtkColorButton *button)
gtk_widget_add_controller (GTK_WIDGET (button), GTK_EVENT_CONTROLLER (dest));
gdk_content_formats_unref (targets);
+ source = gtk_drag_source_new ();
content = gdk_content_provider_new_with_callback (GDK_TYPE_RGBA, get_rgba_value, button);
- source = gtk_drag_source_new (content, GDK_ACTION_COPY);
+ gtk_drag_source_set_content (source, content);
g_object_unref (content);
g_signal_connect (source, "drag-begin", G_CALLBACK (gtk_color_button_drag_begin), button);
diff --git a/gtk/gtkcolorswatch.c b/gtk/gtkcolorswatch.c
index 9bdcca3e83..d693709669 100644
--- a/gtk/gtkcolorswatch.c
+++ b/gtk/gtkcolorswatch.c
@@ -601,8 +601,9 @@ gtk_color_swatch_set_rgba (GtkColorSwatch *swatch,
GdkContentProvider *content;
GtkDragSource *source;
+ source = gtk_drag_source_new ();
content = gdk_content_provider_new_with_callback (GDK_TYPE_RGBA, get_rgba_value, swatch);
- source = gtk_drag_source_new (content, GDK_ACTION_COPY);
+ gtk_drag_source_set_content (source, content);
g_object_unref (content);
g_signal_connect (source, "drag-begin", G_CALLBACK (gtk_color_swatch_drag_begin), swatch);
diff --git a/gtk/gtkdragsource.c b/gtk/gtkdragsource.c
index 6fa40897f4..68a0a344df 100644
--- a/gtk/gtkdragsource.c
+++ b/gtk/gtkdragsource.c
@@ -107,6 +107,7 @@ enum {
static GParamSpec *properties[NUM_PROPERTIES];
enum {
+ PREPARE,
DRAG_BEGIN,
DRAG_END,
DRAG_FAILED,
@@ -115,11 +116,21 @@ enum {
static guint signals[NUM_SIGNALS];
+static void gtk_drag_source_dnd_finished_cb (GdkDrag *drag,
+ GtkDragSource *source);
+static void gtk_drag_source_drop_performed_cb (GdkDrag *drag,
+ GtkDragSource *source);
+static void gtk_drag_source_cancel_cb (GdkDrag *drag,
+ GdkDragCancelReason reason,
+ GtkDragSource *source);
+
+
G_DEFINE_TYPE (GtkDragSource, gtk_drag_source, G_TYPE_OBJECT);
static void
gtk_drag_source_init (GtkDragSource *source)
{
+ source->actions = GDK_ACTION_COPY;
}
static void
@@ -216,11 +227,21 @@ gtk_drag_source_class_init (GtkDragSourceClass *class)
g_param_spec_flags ("actions",
P_("Actions"),
P_("Supported actions"),
- GDK_TYPE_DRAG_ACTION, 0,
+ GDK_TYPE_DRAG_ACTION, GDK_ACTION_COPY,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
g_object_class_install_properties (object_class, NUM_PROPERTIES, properties);
+ signals[PREPARE] =
+ g_signal_new (I_("prepare"),
+ G_TYPE_FROM_CLASS (class),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ NULL,
+ G_TYPE_NONE, 2,
+ G_TYPE_DOUBLE, G_TYPE_DOUBLE);
+
/**
* GtkDragSource::drag-begin:
* @source: the #GtkDragSource
@@ -287,14 +308,6 @@ gtk_drag_source_class_init (GtkDragSourceClass *class)
GDK_TYPE_DRAG_CANCEL_REASON);
}
-static void gtk_drag_source_dnd_finished_cb (GdkDrag *drag,
- GtkDragSource *source);
-static void gtk_drag_source_drop_performed_cb (GdkDrag *drag,
- GtkDragSource *source);
-static void gtk_drag_source_cancel_cb (GdkDrag *drag,
- GdkDragCancelReason reason,
- GtkDragSource *source);
-
static void
drag_end (GtkDragSource *source,
gboolean success)
@@ -390,7 +403,13 @@ gtk_drag_source_drag_begin (GtkDragSource *source,
dx = round (px) - x;
dy = round (py) - y;
+ g_signal_emit (source, signals[PREPARE], 0, x, y);
+
+ if (source->content == NULL || source->actions == 0)
+ return;
+
source->drag = gdk_drag_begin (surface, device, source->content, source->actions, dx, dy);
+
if (source->drag == NULL)
{
g_print ("no drag :(\n");
@@ -439,21 +458,15 @@ gtk_drag_source_drag_begin (GtkDragSource *source,
/**
* gtk_drag_source_new:
- * @content: (nullable): the #GdkContentProvider to use, or %NULL
- * @actions: the actions to offer
*
* Creates a new #GtkDragSource object.
*
* Returns: the new #GtkDragSource
*/
GtkDragSource *
-gtk_drag_source_new (GdkContentProvider *content,
- GdkDragAction actions)
+gtk_drag_source_new (void)
{
- return g_object_new (GTK_TYPE_DRAG_SOURCE,
- "content", content,
- "actions", actions,
- NULL);
+ return g_object_new (GTK_TYPE_DRAG_SOURCE, NULL);
}
/**
diff --git a/gtk/gtkdragsource.h b/gtk/gtkdragsource.h
index 8a7a8d0ec5..bf8785beaa 100644
--- a/gtk/gtkdragsource.h
+++ b/gtk/gtkdragsource.h
@@ -51,8 +51,7 @@ GDK_AVAILABLE_IN_ALL
GType gtk_drag_source_get_type (void) G_GNUC_CONST;
GDK_AVAILABLE_IN_ALL
-GtkDragSource *gtk_drag_source_new (GdkContentProvider *content,
- GdkDragAction actions);
+GtkDragSource *gtk_drag_source_new (void);
GDK_AVAILABLE_IN_ALL
void gtk_drag_source_set_content (GtkDragSource *source,
diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c
index 1b249b2fb6..4ec8a0f375 100644
--- a/gtk/gtkentry.c
+++ b/gtk/gtkentry.c
@@ -1469,7 +1469,9 @@ icon_drag_update_cb (GtkGestureDrag *gesture,
GdkDevice *device;
icon_info->in_drag = TRUE;
- source = gtk_drag_source_new (icon_info->content, icon_info->actions);
+ source = gtk_drag_source_new ();
+ gtk_drag_source_set_content (source, icon_info->content);
+ gtk_drag_source_set_actions (source, icon_info->actions);
paintable = gtk_widget_paintable_new (icon_info->widget);
gtk_drag_source_set_icon (source, paintable, -2, -2);
g_object_unref (paintable);
diff --git a/gtk/gtkiconview.c b/gtk/gtkiconview.c
index caa589b519..49157c1da3 100644
--- a/gtk/gtkiconview.c
+++ b/gtk/gtkiconview.c
@@ -6465,8 +6465,10 @@ gtk_icon_view_enable_model_drag_source (GtkIconView *icon_view,
g_return_val_if_fail (GTK_IS_ICON_VIEW (icon_view), NULL);
+ icon_view->priv->source = gtk_drag_source_new ();
content = gdk_content_provider_new_with_formats (formats, gtk_icon_view_drag_data_get, icon_view);
- icon_view->priv->source = gtk_drag_source_new (content, actions);
+ gtk_drag_source_set_content (icon_view->priv->source, content);
+ gtk_drag_source_set_actions (icon_view->priv->source, actions);
g_object_unref (content);
g_signal_connect (icon_view->priv->source, "drag-begin",
diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c
index e29a164897..6b56dfcfdc 100644
--- a/gtk/gtklabel.c
+++ b/gtk/gtklabel.c
@@ -4720,7 +4720,8 @@ gtk_label_drag_gesture_update (GtkGestureDrag *gesture,
GdkPaintable *paintable;
GdkDevice *device;
- source = gtk_drag_source_new (info->provider, GDK_ACTION_COPY);
+ source = gtk_drag_source_new ();
+ gtk_drag_source_set_content (source, info->provider);
paintable = get_selection_paintable (label);
gtk_drag_source_set_icon (source, paintable, 9, 0);
g_clear_object (&paintable);
diff --git a/gtk/gtklinkbutton.c b/gtk/gtklinkbutton.c
index 3ae32f21ce..5c113516c6 100644
--- a/gtk/gtklinkbutton.c
+++ b/gtk/gtklinkbutton.c
@@ -332,9 +332,10 @@ gtk_link_button_init (GtkLinkButton *link_button)
g_signal_connect (link_button, "query-tooltip",
G_CALLBACK (gtk_link_button_query_tooltip_cb), NULL);
+ source = gtk_drag_source_new ();
content = g_object_new (GTK_TYPE_LINK_CONTENT, NULL);
GTK_LINK_CONTENT (content)->link = link_button;
- source = gtk_drag_source_new (content, GDK_ACTION_COPY);
+ gtk_drag_source_set_content (source, content);
g_object_unref (content);
gtk_drag_source_attach (source, GTK_WIDGET (link_button), GDK_BUTTON1_MASK);
diff --git a/gtk/gtknotebook.c b/gtk/gtknotebook.c
index 37e087ba5b..e7bfdb0dc2 100644
--- a/gtk/gtknotebook.c
+++ b/gtk/gtknotebook.c
@@ -2877,9 +2877,11 @@ gtk_notebook_motion (GtkEventController *controller,
priv->detached_tab = priv->cur_page;
+ source = gtk_drag_source_new ();
content = gdk_content_provider_new_with_formats (priv->source_targets, gtk_notebook_drag_data_get, widget);
- source = gtk_drag_source_new (content, GDK_ACTION_MOVE);
+ gtk_drag_source_set_content (source, content);
g_object_unref (content);
+ gtk_drag_source_set_actions (source, GDK_ACTION_MOVE);
g_signal_connect (source, "drag-begin", G_CALLBACK (gtk_notebook_drag_begin), notebook);
g_signal_connect (source, "drag-end", G_CALLBACK (gtk_notebook_drag_end), notebook);
diff --git a/gtk/gtkpathbar.c b/gtk/gtkpathbar.c
index 8c094cb946..248ff308ae 100644
--- a/gtk/gtkpathbar.c
+++ b/gtk/gtkpathbar.c
@@ -1366,10 +1366,11 @@ make_directory_button (GtkPathBar *path_bar,
g_value_init (&value, G_TYPE_FILE);
g_value_set_object (&value, button_data->file);
+ source = gtk_drag_source_new ();
content = gdk_content_provider_new_for_value (&value);
- source = gtk_drag_source_new (content, GDK_ACTION_COPY);
- gtk_drag_source_attach (source, button_data->button, GDK_BUTTON1_MASK);
+ gtk_drag_source_set_content (source, content);
g_object_unref (content);
+ gtk_drag_source_attach (source, button_data->button, GDK_BUTTON1_MASK);
g_value_unset (&value);
return button_data;
diff --git a/gtk/gtkplacessidebar.c b/gtk/gtkplacessidebar.c
index 5fcb8f6f57..8cec14201a 100644
--- a/gtk/gtkplacessidebar.c
+++ b/gtk/gtkplacessidebar.c
@@ -3793,11 +3793,13 @@ on_row_dragged (GtkGestureDrag *gesture,
sidebar->dragging_over = TRUE;
+ source = gtk_drag_source_new ();
content = gdk_content_provider_new_with_formats (sidebar->source_targets,
drag_data_get_callback,
sidebar);
- source = gtk_drag_source_new (content, GDK_ACTION_MOVE);
+ gtk_drag_source_set_content (source, content);
g_object_unref (content);
+ gtk_drag_source_set_actions (source, GDK_ACTION_MOVE);
g_signal_connect (source, "drag-begin", G_CALLBACK (drag_begin_callback), sidebar);
g_signal_connect (source, "drag-end", G_CALLBACK (drag_end_callback), sidebar);
diff --git a/gtk/gtktext.c b/gtk/gtktext.c
index f8959ce16d..2bbf9263a8 100644
--- a/gtk/gtktext.c
+++ b/gtk/gtktext.c
@@ -2846,9 +2846,10 @@ gtk_text_drag_gesture_update (GtkGestureDrag *gesture,
paintable = gtk_text_util_create_drag_icon (widget, text, -1);
- source = gtk_drag_source_new (priv->selection_content,
- priv->editable ? GDK_ACTION_COPY | GDK_ACTION_MOVE
- : GDK_ACTION_COPY);
+ source = gtk_drag_source_new ();
+ gtk_drag_source_set_content (source, priv->selection_content);
+ if (priv->editable)
+ gtk_drag_source_set_actions (source, GDK_ACTION_COPY|GDK_ACTION_MOVE);
gtk_drag_source_set_icon (source,
paintable,
priv->drag_start_x - ranges[0],
diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c
index 99f830f747..c261e32a62 100644
--- a/gtk/gtktextview.c
+++ b/gtk/gtktextview.c
@@ -7697,7 +7697,9 @@ gtk_text_view_start_selection_dnd (GtkTextView *text_view,
else
actions = GDK_ACTION_COPY;
content = gtk_text_buffer_get_selection_content (buffer);
- source = gtk_drag_source_new (content, actions);
+ source = gtk_drag_source_new ();
+ gtk_drag_source_set_content (source, content);
+ gtk_drag_source_set_actions (source, actions);
g_object_unref (content);
if (gtk_text_buffer_get_selection_bounds (buffer, &start, &end))
{
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c
index 42acb3f50b..b88a2c0adf 100644
--- a/gtk/gtktreeview.c
+++ b/gtk/gtktreeview.c
@@ -12929,7 +12929,9 @@ gtk_tree_view_enable_model_drag_source (GtkTreeView *tree_view,
di = ensure_info (tree_view);
content = gdk_content_provider_new_with_formats (formats, gtk_tree_view_drag_data_get, tree_view);
- di->source = gtk_drag_source_new (content, actions);
+ di->source = gtk_drag_source_new ();
+ gtk_drag_source_set_content (di->source, content);
+ gtk_drag_source_set_actions (di->source, actions);
g_object_unref (content);
g_signal_connect (di->source, "drag-begin", G_CALLBACK (gtk_tree_view_drag_begin), tree_view);
g_signal_connect (di->source, "drag-end", G_CALLBACK (gtk_tree_view_drag_end), tree_view);
diff --git a/tests/testdnd.c b/tests/testdnd.c
index 4057e77235..ceefa34c5c 100644
--- a/tests/testdnd.c
+++ b/tests/testdnd.c
@@ -634,11 +634,14 @@ main (int argc, char **argv)
button = gtk_button_new_with_label ("Drag Here\n");
+ source = gtk_drag_source_new ();
g_value_init (&value, G_TYPE_STRING);
g_value_set_string (&value, "I'm data!");
content = gdk_content_provider_new_for_value (&value);
g_value_unset (&value);
- source = gtk_drag_source_new (content, GDK_ACTION_COPY | GDK_ACTION_MOVE);
+ gtk_drag_source_set_content (source, content);
+ g_object_unref (content);
+ gtk_drag_source_set_actions (source, GDK_ACTION_COPY|GDK_ACTION_MOVE);
gtk_drag_source_attach (source, button, GDK_BUTTON1_MASK | GDK_BUTTON3_MASK);
gtk_drag_source_set_icon (source, GDK_PAINTABLE (texture), 0, 0);
diff --git a/tests/testdnd2.c b/tests/testdnd2.c
index b766d0460b..693da26ee2 100644
--- a/tests/testdnd2.c
+++ b/tests/testdnd2.c
@@ -298,7 +298,9 @@ make_image (const gchar *icon_name, int hotspot)
formats = gtk_content_formats_add_text_targets (formats);
content = gdk_content_provider_new_with_formats (formats, get_data, image);
- source = gtk_drag_source_new (content, GDK_ACTION_COPY|GDK_ACTION_MOVE|GDK_ACTION_ASK);
+ source = gtk_drag_source_new ();
+ gtk_drag_source_set_content (source, content);
+ gtk_drag_source_set_actions (source, GDK_ACTION_COPY|GDK_ACTION_MOVE|GDK_ACTION_ASK);
g_object_unref (content);
update_source_icon (source, icon_name, hotspot);
@@ -342,7 +344,8 @@ make_spinner (void)
g_value_init (&value, G_TYPE_STRING);
g_value_set_string (&value, "ACTIVE");
content = gdk_content_provider_new_for_value (&value);
- source = gtk_drag_source_new (content, GDK_ACTION_COPY);
+ source = gtk_drag_source_new ();
+ gtk_drag_source_set_content (source, content);
g_signal_connect (source, "drag-begin", G_CALLBACK (spinner_drag_begin), spinner);
gtk_drag_source_attach (source, spinner, GDK_BUTTON1_MASK);
diff --git a/tests/testlist3.c b/tests/testlist3.c
index 3cdf7872dc..2180544d04 100644
--- a/tests/testlist3.c
+++ b/tests/testlist3.c
@@ -84,7 +84,9 @@ create_row (const gchar *text)
bytes = g_bytes_new (&row, sizeof (gpointer));
content = gdk_content_provider_new_for_bytes ("GTK_LIST_BOX_ROW", bytes);
- source = gtk_drag_source_new (content, GDK_ACTION_MOVE);
+ source = gtk_drag_source_new ();
+ gtk_drag_source_set_content (source, content);
+ gtk_drag_source_set_actions (source, GDK_ACTION_MOVE);
g_signal_connect (source, "drag-begin", G_CALLBACK (drag_begin), image);
gtk_drag_source_attach (source, image, GDK_BUTTON1_MASK);
diff --git a/tests/testtoolbar.c b/tests/testtoolbar.c
index 60c92ae79c..ffbcacb7a5 100644
--- a/tests/testtoolbar.c
+++ b/tests/testtoolbar.c
@@ -618,7 +618,9 @@ main (gint argc, gchar **argv)
targets = gdk_content_formats_new (target_table, G_N_ELEMENTS (target_table));
content = gdk_content_provider_new_for_bytes (target_table[0], g_bytes_new ("", 1));
- source = gtk_drag_source_new (content, GDK_ACTION_MOVE);
+ source = gtk_drag_source_new ();
+ gtk_drag_source_set_content (source, content);
+ gtk_drag_source_set_actions (source, GDK_ACTION_MOVE);
g_object_unref (content);
gtk_drag_source_attach (source, button, GDK_BUTTON1_MASK);
dest = gtk_drop_target_new (targets, GDK_ACTION_MOVE);