SF.net SVN: geany: [2098] trunk
eht16 at users.sourceforge.net
eht16 at xxxxx
Wed Dec 12 16:55:00 UTC 2007
Revision: 2098
http://geany.svn.sourceforge.net/geany/?rev=2098&view=rev
Author: eht16
Date: 2007-12-12 08:55:00 -0800 (Wed, 12 Dec 2007)
Log Message:
-----------
Enable dragging of text into the VTE.
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/vte.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2007-12-12 16:34:02 UTC (rev 2097)
+++ trunk/ChangeLog 2007-12-12 16:55:00 UTC (rev 2098)
@@ -1,3 +1,12 @@
+2007-12-12 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
+
+ * geany.glade, src/interface.c, src/msgwindow.c, src/plugins.c:
+ Set treeview rules hint for several treeviews and remove manual
+ setting the background colour of odd rows of the status and message
+ treeviews (closes #1848901).
+ * src/vte.c: Enable dragging of text into the VTE.
+
+
2007-12-09 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
* geany.spec.in: Apply patch from Yura Siamashka and Dominic Hopf
Modified: trunk/src/vte.c
===================================================================
--- trunk/src/vte.c 2007-12-12 16:34:02 UTC (rev 2097)
+++ trunk/src/vte.c 2007-12-12 16:55:00 UTC (rev 2098)
@@ -70,6 +70,8 @@
static void vte_popup_menu_clicked(GtkMenuItem *menuitem, gpointer user_data);
static GtkWidget *vte_create_popup_menu(void);
void vte_commit(VteTerminal *vte, gchar *arg1, guint arg2, gpointer user_data);
+void vte_drag_data_received(GtkWidget *widget, GdkDragContext *drag_context, gint x, gint y,
+ GtkSelectionData *data, guint info, guint ltime);
enum
@@ -78,10 +80,24 @@
POPUP_PASTE,
POPUP_CHANGEPATH,
POPUP_RESTARTTERMINAL,
- POPUP_PREFERENCES
+ POPUP_PREFERENCES,
+ TARGET_UTF8_STRING = 0,
+ TARGET_TEXT,
+ TARGET_COMPOUND_TEXT,
+ TARGET_STRING,
+ TARGET_TEXT_PLAIN,
};
+static const GtkTargetEntry dnd_targets[] =
+{
+ { "UTF8_STRING", 0, TARGET_UTF8_STRING },
+ { "TEXT", 0, TARGET_TEXT },
+ { "COMPOUND_TEXT", 0, TARGET_COMPOUND_TEXT },
+ { "STRING", 0, TARGET_STRING },
+ { "text/plain", 0, TARGET_TEXT_PLAIN },
+};
+
/* taken from anjuta, thanks */
static gchar **vte_get_child_environment(void)
{
@@ -212,6 +228,9 @@
vf->vte_terminal_set_mouse_autohide(VTE_TERMINAL(vte), TRUE);
vf->vte_terminal_set_word_chars(VTE_TERMINAL(vte), VTE_WORDCHARS);
+ gtk_drag_dest_set(vte, GTK_DEST_DEFAULT_ALL,
+ dnd_targets, G_N_ELEMENTS(dnd_targets), GDK_ACTION_COPY);
+
g_signal_connect(G_OBJECT(vte), "child-exited", G_CALLBACK(vte_start), NULL);
g_signal_connect(G_OBJECT(vte), "button-press-event", G_CALLBACK(vte_button_pressed), NULL);
if (! vc->enable_bash_keys)
@@ -219,8 +238,7 @@
g_signal_connect(G_OBJECT(vte), "key-release-event", G_CALLBACK(vte_keyrelease), NULL);
g_signal_connect(G_OBJECT(vte), "commit", G_CALLBACK(vte_commit), NULL);
g_signal_connect(G_OBJECT(vte), "motion-notify-event", G_CALLBACK(on_motion_event), NULL);
- //g_signal_connect(G_OBJECT(vte), "drag-data-received", G_CALLBACK(vte_drag_data_received), NULL);
- //g_signal_connect(G_OBJECT(vte), "drag-drop", G_CALLBACK(vte_drag_drop), NULL);
+ g_signal_connect(G_OBJECT(vte), "drag-data-received", G_CALLBACK(vte_drag_data_received), NULL);
vte_start(vte);
@@ -574,39 +592,27 @@
}
}
-/*
-void vte_drag_data_received(GtkWidget *widget, GdkDragContext *drag_context, gint x, gint y,
- GtkSelectionData *data, guint info, guint time)
+
+void vte_drag_data_received(GtkWidget *widget, GdkDragContext *drag_context, gint x, gint y,
+ GtkSelectionData *data, guint info, guint ltime)
{
- geany_debug("length: %d, format: %d, action: %d", data->length, data->format, drag_context->action);
- if ((data->length >= 0) && (data->format == 8))
+ if (info == TARGET_TEXT_PLAIN)
{
- if (drag_context->action == GDK_ACTION_ASK)
- {
- gint accept = TRUE;
- // should I check the incoming data?
- if (accept)
- drag_context->action = GDK_ACTION_COPY;
- }
- gtk_drag_finish(drag_context, TRUE, FALSE, time);
- return;
+ if (data->format == 8 && data->length > 0)
+ vf->vte_terminal_feed_child(VTE_TERMINAL(widget),
+ (const gchar*) data->data, data->length);
}
- gtk_drag_finish(drag_context, FALSE, FALSE, time);
+ else
+ {
+ gchar *text = (gchar*) gtk_selection_data_get_text(data);
+ if (NZV(text))
+ vf->vte_terminal_feed_child(VTE_TERMINAL(widget), text, strlen(text));
+ g_free (text);
+ }
+ gtk_drag_finish(drag_context, TRUE, FALSE, ltime);
}
-gboolean vte_drag_drop(GtkWidget *widget, GdkDragContext *drag_context, gint x, gint y, guint time,
- gpointer user_data)
-{
-
- GdkAtom *atom;
- gtk_drag_get_data(widget, drag_context, atom, time);
- geany_debug("%s", GDK_ATOM_TO_POINTER(atom));
- return TRUE;
-}
-*/
-
-
void vte_append_preferences_tab()
{
if (vte_info.have_vte)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Commits
mailing list