+void ScintillaWX::DoMiddleButtonUp(Point pt) {
+#ifdef __WXGTK__
+ // Set the current position to the mouse click point and
+ // then paste in the PRIMARY selection, if any. wxGTK only.
+ int newPos = PositionFromLocation(pt);
+ MovePositionTo(newPos, 0, 1);
+
+ pdoc->BeginUndoAction();
+ wxTextDataObject data;
+ bool gotData = FALSE;
+ if (wxTheClipboard->Open()) {
+ wxTheClipboard->UsePrimarySelection(TRUE);
+ gotData = wxTheClipboard->GetData(data);
+ wxTheClipboard->UsePrimarySelection(FALSE);
+ wxTheClipboard->Close();
+ }
+ if (gotData) {
+ wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(data.GetText());
+ int len = strlen(buf);
+ pdoc->InsertString(currentPos, buf, len);
+ SetEmptySelection(currentPos + len);
+ }
+ pdoc->EndUndoAction();
+ NotifyChange();
+ Redraw();
+
+ ShowCaretAtCurrentPosition();
+ EnsureCaretVisible();
+#endif
+}
+