📄 gtk-drag-and-drop.html
字号:
>gint</a> start_y, <ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint">gint</a> current_x, <ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint">gint</a> current_y);void <a class="link" href="gtk-Drag-and-Drop.html#gtk-drag-source-set">gtk_drag_source_set</a> (<a class="link" href="GtkWidget.html" title="GtkWidget">GtkWidget</a> *widget, <ahref="/usr/share/gtk-doc/html/gdk/gdk-Windows.html#GdkModifierType">GdkModifierType</a> start_button_mask, const <a class="link" href="gtk-Selections.html#GtkTargetEntry">GtkTargetEntry</a> *targets, <ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint">gint</a> n_targets, <ahref="/usr/share/gtk-doc/html/gdk/gdk-Drag-and-Drop.html#GdkDragAction">GdkDragAction</a> actions);void <a class="link" href="gtk-Drag-and-Drop.html#gtk-drag-source-set-icon">gtk_drag_source_set_icon</a> (<a class="link" href="GtkWidget.html" title="GtkWidget">GtkWidget</a> *widget, <ahref="/usr/share/gtk-doc/html/gdk/gdk-Colormaps-and-Colors.html#GdkColormap">GdkColormap</a> *colormap, <ahref="/usr/share/gtk-doc/html/gdk/gdk-Bitmaps-and-Pixmaps.html#GdkPixmap">GdkPixmap</a> *pixmap, <ahref="/usr/share/gtk-doc/html/gdk/gdk-Bitmaps-and-Pixmaps.html#GdkBitmap">GdkBitmap</a> *mask);void <a class="link" href="gtk-Drag-and-Drop.html#gtk-drag-source-set-icon-pixbuf">gtk_drag_source_set_icon_pixbuf</a> (<a class="link" href="GtkWidget.html" title="GtkWidget">GtkWidget</a> *widget, <ahref="/usr/share/gtk-doc/html/gdk-pixbuf/gdk-pixbuf-gdk-pixbuf.html#GdkPixbuf">GdkPixbuf</a> *pixbuf);void <a class="link" href="gtk-Drag-and-Drop.html#gtk-drag-source-set-icon-stock">gtk_drag_source_set_icon_stock</a> (<a class="link" href="GtkWidget.html" title="GtkWidget">GtkWidget</a> *widget, const <ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar">gchar</a> *stock_id);void <a class="link" href="gtk-Drag-and-Drop.html#gtk-drag-source-set-icon-name">gtk_drag_source_set_icon_name</a> (<a class="link" href="GtkWidget.html" title="GtkWidget">GtkWidget</a> *widget, const <ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar">gchar</a> *icon_name);void <a class="link" href="gtk-Drag-and-Drop.html#gtk-drag-source-unset">gtk_drag_source_unset</a> (<a class="link" href="GtkWidget.html" title="GtkWidget">GtkWidget</a> *widget);void <a class="link" href="gtk-Drag-and-Drop.html#gtk-drag-source-set-target-list">gtk_drag_source_set_target_list</a> (<a class="link" href="GtkWidget.html" title="GtkWidget">GtkWidget</a> *widget, <a class="link" href="gtk-Selections.html#GtkTargetList">GtkTargetList</a> *target_list);<a class="link" href="gtk-Selections.html#GtkTargetList">GtkTargetList</a>* <a class="link" href="gtk-Drag-and-Drop.html#gtk-drag-source-get-target-list">gtk_drag_source_get_target_list</a> (<a class="link" href="GtkWidget.html" title="GtkWidget">GtkWidget</a> *widget);void <a class="link" href="gtk-Drag-and-Drop.html#gtk-drag-source-add-text-targets">gtk_drag_source_add_text_targets</a> (<a class="link" href="GtkWidget.html" title="GtkWidget">GtkWidget</a> *widget);void <a class="link" href="gtk-Drag-and-Drop.html#gtk-drag-source-add-image-targets">gtk_drag_source_add_image_targets</a> (<a class="link" href="GtkWidget.html" title="GtkWidget">GtkWidget</a> *widget);void <a class="link" href="gtk-Drag-and-Drop.html#gtk-drag-source-add-uri-targets">gtk_drag_source_add_uri_targets</a> (<a class="link" href="GtkWidget.html" title="GtkWidget">GtkWidget</a> *widget);</pre></div><div class="refsect1" lang="en"><a name="id3185307"></a><h2>Description</h2><p>GTK+ has a rich set of functions for doing inter-processcommunication via the drag-and-drop metaphor. GTK+can do drag-and-drop (DND) via multiple protocols.The currently supported protocols are the Xdnd andMotif protocols.As well as the functions listed here, applicationsmay need to use some facilities provided for<a class="link" href="gtk-Selections.html" title="Selections">Selections</a>.Also, the Drag and Drop API makes use of signalsin the <a class="link" href="GtkWidget.html" title="GtkWidget"><span class="type">GtkWidget</span></a> class.</p></div><div class="refsect1" lang="en"><a name="id3185344"></a><h2>Details</h2><div class="refsect2" lang="en"><a name="id3185354"></a><h3><a name="GtkDestDefaults"></a>enum GtkDestDefaults</h3><a class="indexterm" name="id3185368"></a><pre class="programlisting">typedef enum { GTK_DEST_DEFAULT_MOTION = 1 << 0, /* respond to "drag_motion" */ GTK_DEST_DEFAULT_HIGHLIGHT = 1 << 1, /* auto-highlight */ GTK_DEST_DEFAULT_DROP = 1 << 2, /* respond to "drag_drop" */ GTK_DEST_DEFAULT_ALL = 0x07} GtkDestDefaults;</pre><p>The <a class="link" href="gtk-Drag-and-Drop.html#GtkDestDefaults"><span class="type">GtkDestDefaults</span></a> enumeration specifies the varioustypes of action that will be taken on behalfof the user for a drag destination site.</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><p><span class="term"><a name="GTK-DEST-DEFAULT-MOTION:CAPS"></a><code class="literal">GTK_DEST_DEFAULT_MOTION</code></span></p></td><td> If set for a widget, GTK+, during a drag over this widget will check if the drag matches this widget's list of possible targets and actions. GTK+ will then call <ahref="/usr/share/gtk-doc/html/gdk/gdk-Drag-and-Drop.html#gdk-drag-status"><code class="function">gdk_drag_status()</code></a> as appropriate.</td></tr><tr><td><p><span class="term"><a name="GTK-DEST-DEFAULT-HIGHLIGHT:CAPS"></a><code class="literal">GTK_DEST_DEFAULT_HIGHLIGHT</code></span></p></td><td> If set for a widget, GTK+ will draw a highlight on this widget as long as a drag is over this widget and the widget drag format and action are acceptable.</td></tr><tr><td><p><span class="term"><a name="GTK-DEST-DEFAULT-DROP:CAPS"></a><code class="literal">GTK_DEST_DEFAULT_DROP</code></span></p></td><td> If set for a widget, when a drop occurs, GTK+ will will check if the drag matches this widget's list of possible targets and actions. If so, GTK+ will call <a class="link" href="gtk-Drag-and-Drop.html#gtk-drag-get-data"><code class="function">gtk_drag_get_data()</code></a> on behalf of the widget. Whether or not the drop is successful, GTK+ will call <a class="link" href="gtk-Drag-and-Drop.html#gtk-drag-finish"><code class="function">gtk_drag_finish()</code></a>. If the action was a move, then if the drag was successful, then <ahref="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> will be passed for the <em class="parameter"><code>delete</code></em> parameter to <a class="link" href="gtk-Drag-and-Drop.html#gtk-drag-finish"><code class="function">gtk_drag_finish()</code></a>.</td></tr><tr><td><p><span class="term"><a name="GTK-DEST-DEFAULT-ALL:CAPS"></a><code class="literal">GTK_DEST_DEFAULT_ALL</code></span></p></td><td> If set, specifies that all default actions should be taken.</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id3185565"></a><h3><a name="GtkTargetFlags"></a>enum GtkTargetFlags</h3><a class="indexterm" name="id3185578"></a><pre class="programlisting">typedef enum { GTK_TARGET_SAME_APP = 1 << 0, /*< nick=same-app >*/ GTK_TARGET_SAME_WIDGET = 1 << 1, /*< nick=same-widget >*/ GTK_TARGET_OTHER_APP = 1 << 2, /*< nick=other-app >*/ GTK_TARGET_OTHER_WIDGET = 1 << 3 /*< nick=other-widget >*/} GtkTargetFlags;</pre><p>The <a class="link" href="gtk-Drag-and-Drop.html#GtkTargetFlags"><span class="type">GtkTargetFlags</span></a> enumeration is used to specifyconstraints on an entry in a <span class="type">GtkTargetTable</span>. </p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><p><span class="term"><a name="GTK-TARGET-SAME-APP:CAPS"></a><code class="literal">GTK_TARGET_SAME_APP</code></span></p></td><td> If this is set, the target will only be selected for drags within a single application.</td></tr><tr><td><p><span class="term"><a name="GTK-TARGET-SAME-WIDGET:CAPS"></a><code class="literal">GTK_TARGET_SAME_WIDGET</code></span></p></td><td> If this is set, the target will only be selected for drags within a single widget.</td></tr><tr><td><p><span class="term"><a name="GTK-TARGET-OTHER-APP:CAPS"></a><code class="literal">GTK_TARGET_OTHER_APP</code></span></p></td><td> If this is set, the target will not be selected for drags within a single application. Since 2.12</td></tr><tr><td><p><span class="term"><a name="GTK-TARGET-OTHER-WIDGET:CAPS"></a><code class="literal">GTK_TARGET_OTHER_WIDGET</code></span></p></td><td> If this is set, the target will not be selected for drags withing a single widget. Since 2.12</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id3185720"></a><h3><a name="gtk-drag-dest-set"></a>gtk_drag_dest_set ()</h3><a class="indexterm" name="id3185733"></a><pre class="programlisting">void gtk_drag_dest_set (<a class="link" href="GtkWidget.html" title="GtkWidget">GtkWidget</a> *widget, <a class="link" href="gtk-Drag-and-Drop.html#GtkDestDefaults">GtkDestDefaults</a> flags, const <a class="link" href="gtk-Selections.html#GtkTargetEntry">GtkTargetEntry</a> *targets, <ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint">gint</a> n_targets, <ahref="/usr/share/gtk-doc/html/gdk/gdk-Drag-and-Drop.html#GdkDragAction">GdkDragAction</a> actions);</pre><p>Sets a widget as a potential drop destination.</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><p><span class="term"><em class="parameter"><code>widget</code></em> :</span></p></td><td>a <a class="link" href="GtkWidget.html" title="GtkWidget"><span class="type">GtkWidget</span></a></td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>the flags that specify what actions GTK+ should take on behalf of a widget for drops onto that widget. The <em class="parameter"><code>targets</code></em> and <em class="parameter"><code>actions</code></em> fields only are used if <a class="link" href="gtk-Drag-and-Drop.html#GTK-DEST-DEFAULT-MOTION:CAPS"><code class="literal">GTK_DEST_DEFAULT_MOTION</code></a> or <a class="link" href="gtk-Drag-and-Drop.html#GTK-DEST-DEFAULT-DROP:CAPS"><code class="literal">GTK_DEST_DEFAULT_DROP</code></a> are given.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>targets</code></em> :</span></p></td><td>a pointer to an array of <a class="link" href="gtk-Selections.html#GtkTargetEntry"><span class="type">GtkTargetEntry</span></a>s indicating the drop types that this widget will accept.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>n_targets</code></em> :</span></p></td><td>the number of entries in <em class="parameter"><code>targets</code></em>.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>actions</code></em> :</span></p></td><td>a bitmask of possible actions for a drop onto this widget.</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id3185930"></a><h3><a name="gtk-drag-dest-set-proxy"></a>gtk_drag_dest_set_proxy ()</h3><a class="indexterm" name="id3185943"></a><pre class="programlisting">void gtk_drag_dest_set_proxy (<a class="link" href="GtkWidget.html" title="GtkWidget">GtkWidget</a> *widget, <ahref="/usr/share/gtk-doc/html/gdk/gdk-Windows.html#GdkWindow">GdkWindow</a> *proxy_window, <ahref="/usr/share/gtk-doc/html/gdk/gdk-Drag-and-Drop.html#GdkDragProtocol">GdkDragProtocol</a> protocol, <ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean">gboolean</a> use_coordinates);</pre><p>Sets this widget as a proxy for drops to another window.</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><p><span class="term"><em class="parameter"><code>widget</code></em> :</span></p></td><td>a <a class="link" href="GtkWidget.html" title="GtkWidget"><span class="type">GtkWidget</span></a></td></tr><tr><td><p><span class="term"><em class="parameter"><code>proxy_window</code></em> :</span></p></td><td>the window to which to forward drag events</td></tr><tr>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -