diff options
| author | nyamatongwe <unknown> | 2006-04-28 06:33:59 +0000 | 
|---|---|---|
| committer | nyamatongwe <unknown> | 2006-04-28 06:33:59 +0000 | 
| commit | f0855d6f0faa3f7e0602722fbbb2bd6526ecffa5 (patch) | |
| tree | 90adb00f958b81004be113bbb1f8b51bf17fd542 | |
| parent | 8fcd543a7e41bef0e040a7c9b77ac8c7d1ac6439 (diff) | |
| download | scintilla-mirror-f0855d6f0faa3f7e0602722fbbb2bd6526ecffa5.tar.gz | |
Moved uri-list to first preference in formats so that files dragged from
recent version of Nautilus will trigger URI dropped notification rather
than copy text into document.
| -rw-r--r-- | gtk/ScintillaGTK.cxx | 30 | 
1 files changed, 17 insertions, 13 deletions
| diff --git a/gtk/ScintillaGTK.cxx b/gtk/ScintillaGTK.cxx index 9361df5e3..1b507e1e4 100644 --- a/gtk/ScintillaGTK.cxx +++ b/gtk/ScintillaGTK.cxx @@ -106,6 +106,7 @@ class ScintillaGTK : public ScintillaBase {  	static GdkAtom atomClipboard;  	static GdkAtom atomUTF8;  	static GdkAtom atomString; +	static GdkAtom atomUriList;  	GdkAtom atomSought;  #if PLAT_GTK_WIN32 @@ -282,19 +283,19 @@ enum {      TARGET_STRING,      TARGET_TEXT,      TARGET_COMPOUND_TEXT, -    TARGET_UTF8_STRING +    TARGET_UTF8_STRING, +    TARGET_URI  };  GdkAtom ScintillaGTK::atomClipboard = 0;  GdkAtom ScintillaGTK::atomUTF8 = 0;  GdkAtom ScintillaGTK::atomString = 0; +GdkAtom ScintillaGTK::atomUriList = 0;  static const GtkTargetEntry clipboardTargets[] = { +	{ "text/uri-list", 0, TARGET_URI },  	{ "UTF8_STRING", 0, TARGET_UTF8_STRING },  	{ "STRING", 0, TARGET_STRING }, -//	    { "TEXT", 0, TARGET_TEXT }, -//	    { "COMPOUND_TEXT", 0, TARGET_COMPOUND_TEXT }, -	{ "text/uri-list", 0, 0 },  };  static const gint nClipboardTargets = sizeof(clipboardTargets) / sizeof(clipboardTargets[0]); @@ -1494,18 +1495,20 @@ void ScintillaGTK::ReceivedSelection(GtkSelectionData *selection_data) {  void ScintillaGTK::ReceivedDrop(GtkSelectionData *selection_data) {  	dragWasDropped = true; -	if ((selection_data->type == GDK_TARGET_STRING) || (selection_data->type == atomUTF8)) { +	if (selection_data->type == atomUriList) { +		char *ptr = new char[selection_data->length + 1]; +		ptr[selection_data->length] = '\0'; +		memcpy(ptr, selection_data->data, selection_data->length); + 		NotifyURIDropped(ptr); +		delete []ptr; +	} else if ((selection_data->type == GDK_TARGET_STRING) || (selection_data->type == atomUTF8)) {  		if (selection_data->length > 0) {  			SelectionText selText;  			GetGtkSelectionText(selection_data, selText);  			DropAt(posDrop, selText.s, false, selText.rectangular);  		}  	} else if (selection_data->length > 0) { -		char *ptr = new char[selection_data->length + 1]; -		ptr[selection_data->length] = '\0'; -		memcpy(ptr, selection_data->data, selection_data->length); - 		NotifyURIDropped(ptr); -		delete []ptr; +	    fprintf(stderr, "ReceivedDrop other %p\n", static_cast<void *>(selection_data->type));  	}  	Redraw();  } @@ -2472,9 +2475,10 @@ GtkType scintilla_get_type() {  }  void ScintillaGTK::ClassInit(GtkObjectClass* object_class, GtkWidgetClass *widget_class, GtkContainerClass *container_class) { -    atomClipboard = gdk_atom_intern("CLIPBOARD", FALSE); -    atomUTF8 = gdk_atom_intern("UTF8_STRING", FALSE); -    atomString = GDK_SELECTION_TYPE_STRING; +	atomClipboard = gdk_atom_intern("CLIPBOARD", FALSE); +	atomUTF8 = gdk_atom_intern("UTF8_STRING", FALSE); +	atomString = GDK_SELECTION_TYPE_STRING; +	atomUriList = gdk_atom_intern("text/uri-list", FALSE);  	// Define default signal handlers for the class:  Could move more  	// of the signal handlers here (those that currently attached to wDraw | 
