]> git.lyx.org Git - features.git/commitdiff
Fix bug 4741: Pasting with middle mouse button into read only document works
authorJean-Marc Lasgouttes <lasgouttes@lyx.org>
Wed, 14 Jan 2009 14:24:59 +0000 (14:24 +0000)
committerJean-Marc Lasgouttes <lasgouttes@lyx.org>
Wed, 14 Jan 2009 14:24:59 +0000 (14:24 +0000)
http://bugzilla.lyx.org/show_bug.cgi?id=4741

Create a new LFUN selection-paste (to paste the internal selection), and bind
middle mouse button to
    command-alternatives selection-paste ; primary-selection-paste paragraph

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@28154 a592a061-630c-0410-9148-cb99ea01b6c8

src/FuncCode.h
src/LyXAction.cpp
src/Text3.cpp

index ebab4cc8fc2b2d5b6dbf3c4c7cf047d6aace3c3e..48ec01d1fa5b72891a19e8bcb24f107371776b71 100644 (file)
@@ -48,372 +48,373 @@ enum FuncCode
        LFUN_PASTE,
        LFUN_PRIMARY_SELECTION_PASTE,
        // 15
+       LFUN_SELECTION_PASTE, // JMarc 2008/12/15
        LFUN_CUT,
        LFUN_COPY,
        LFUN_CLOSE_TAB_GROUP,
        LFUN_NOTE_NEXT,
-       LFUN_INSET_TOGGLE,
        // 20
+       LFUN_INSET_TOGGLE,
        LFUN_HFILL_INSERT,
        LFUN_TEXTSTYLE_APPLY,
        LFUN_TEXTSTYLE_UPDATE,
        LFUN_FONT_EMPH,
-       LFUN_FONT_BOLD,
        // 25
+       LFUN_FONT_BOLD,
        LFUN_FONT_BOLDSYMBOL,
        LFUN_FONT_ROMAN,
        LFUN_FONT_NOUN,
        LFUN_FONT_ITAL,
-       LFUN_FONT_FRAK,
        // 30
+       LFUN_FONT_FRAK,
        LFUN_CHAR_FORWARD,
        LFUN_CHAR_BACKWARD,
        LFUN_UP,
        LFUN_DOWN,
-       LFUN_SCREEN_UP,
        // 35
+       LFUN_SCREEN_UP,
        LFUN_SCREEN_DOWN,
        LFUN_LINE_BEGIN,
        LFUN_LINE_END,
        LFUN_CELL_FORWARD,
-       LFUN_CELL_BACKWARD,
        // 40
+       LFUN_CELL_BACKWARD,
        LFUN_WORD_FORWARD,
        LFUN_WORD_BACKWARD,
        LFUN_BUFFER_BEGIN,
        LFUN_BUFFER_END,
-       LFUN_CHAR_FORWARD_SELECT,
        // 45
+       LFUN_CHAR_FORWARD_SELECT,
        LFUN_CHAR_BACKWARD_SELECT,
        LFUN_UP_SELECT,
        LFUN_DOWN_SELECT,
        LFUN_SCREEN_UP_SELECT,
-       LFUN_SCREEN_DOWN_SELECT,
        // 50
+       LFUN_SCREEN_DOWN_SELECT,
        LFUN_LINE_BEGIN_SELECT,
        LFUN_LINE_END_SELECT,
        LFUN_WORD_FORWARD_SELECT,
        LFUN_WORD_BACKWARD_SELECT,
-       LFUN_WORD_SELECT,
        // 55
+       LFUN_WORD_SELECT,
        LFUN_BUFFER_BEGIN_SELECT,
        LFUN_BUFFER_END_SELECT,
        LFUN_SPACE_INSERT,              // JSpitzm 20030520
        LFUN_SPECIALCHAR_INSERT,        // JSpitzm, 20071206
-       LFUN_MARK_TOGGLE,
        // 60
+       LFUN_MARK_TOGGLE,
        LFUN_CHAR_DELETE_FORWARD,
        LFUN_CHAR_DELETE_BACKWARD,
        LFUN_NEWLINE_INSERT,            // renamed: JSpitzm, 20080325
        LFUN_BREAK_PARAGRAPH,
-       LFUN_QUOTE_INSERT,
        // 65
+       LFUN_QUOTE_INSERT,
        LFUN_ACCENT_CIRCUMFLEX,
        LFUN_MATH_SUBSCRIPT,
        LFUN_MATH_SUPERSCRIPT,
        LFUN_ACCENT_GRAVE,
-       LFUN_ACCENT_ACUTE,
        // 70
+       LFUN_ACCENT_ACUTE,
        LFUN_ACCENT_TILDE,
        LFUN_ACCENT_CEDILLA,
        LFUN_ACCENT_MACRON,
        LFUN_ACCENT_UNDERBAR,
-       LFUN_ACCENT_UNDERDOT,
        // 75
+       LFUN_ACCENT_UNDERDOT,
        LFUN_ACCENT_CIRCLE,
        LFUN_ACCENT_TIE,
        LFUN_ACCENT_BREVE,
        LFUN_ACCENT_CARON,
-       LFUN_ACCENT_HUNGARIAN_UMLAUT,
        // 80
+       LFUN_ACCENT_HUNGARIAN_UMLAUT,
        LFUN_ACCENT_UMLAUT,
        LFUN_ACCENT_DOT,
        LFUN_ACCENT_OGONEK,
        LFUN_SELF_INSERT,
-       LFUN_GETBUFNAME,
        // 85
+       LFUN_GETBUFNAME,
        LFUN_SERVER_GET_XY,
        LFUN_SERVER_SET_XY,
        LFUN_SPLIT_VIEW,
        LFUN_LINEATCURSOR,
-       LFUN_SERVER_GET_LAYOUT,
        // 90
+       LFUN_SERVER_GET_LAYOUT,
        LFUN_SERVER_GET_FILENAME,
        LFUN_SERVER_NOTIFY,
        LFUN_SERVER_GOTO_FILE_ROW,
        LFUN_NOTE_INSERT,
-       LFUN_UI_TOGGLE,
        // 95
+       LFUN_UI_TOGGLE,
        LFUN_KEYMAP_OFF,
        LFUN_KEYMAP_PRIMARY,
        LFUN_KEYMAP_SECONDARY,
        LFUN_KEYMAP_TOGGLE,
-       LFUN_MATH_INSERT,
        // 100
+       LFUN_MATH_INSERT,
        LFUN_MATH_MATRIX,
        LFUN_MATH_LIMITS,
        LFUN_MATH_DELIM,                // Alejandro 180696
        LFUN_MATH_DISPLAY,              // Alejandro 180696
-       LFUN_MATH_MODE,                 // Alejandro 040696
        // 105
+       LFUN_MATH_MODE,                 // Alejandro 040696
        LFUN_MATH_NUMBER_TOGGLE,
        LFUN_MATH_NUMBER_LINE_TOGGLE,
        LFUN_MATH_SIZE,                 // Alejandro 150896
        LFUN_MATH_MACRO,                // ale970510
-       LFUN_MATH_EXTERN,               // Andre' 20010424
        // 110
+       LFUN_MATH_EXTERN,               // Andre' 20010424
        LFUN_MATH_MUTATE,               // Andre' 20010523
        LFUN_MATH_SPACE,                // Andre' 20010725
        LFUN_WORD_DELETE_FORWARD,
        LFUN_WORD_DELETE_BACKWARD,
-       LFUN_LINE_DELETE,
        // 115
+       LFUN_LINE_DELETE,
        LFUN_NOTES_MUTATE,
        LFUN_MARK_OFF,
        LFUN_MARK_ON,
        LFUN_LAYOUT,
-       LFUN_LAYOUT_PARAGRAPH,
        // 120
+       LFUN_LAYOUT_PARAGRAPH,
        LFUN_DROP_LAYOUTS_CHOICE,       // used in bindings as of 20071228
        LFUN_FONT_TYPEWRITER,           // changed from FONT_CODE 20070920
        LFUN_FONT_SANS,
        LFUN_FONT_DEFAULT,
-       LFUN_FONT_UNDERLINE,
        // 125
+       LFUN_FONT_UNDERLINE,
        LFUN_FONT_SIZE,
        LFUN_FONT_STATE,
        LFUN_WORD_UPCASE,
        LFUN_WORD_LOWCASE,
-       LFUN_WORD_CAPITALIZE,
        // 130
+       LFUN_WORD_CAPITALIZE,
        LFUN_LABEL_INSERT,
        LFUN_DEPTH_DECREMENT,
        LFUN_DEPTH_INCREMENT,
        LFUN_MENU_OPEN,                 // used in bindings as of 20060905
-       LFUN_CANCEL,
        // 135
+       LFUN_CANCEL,
        LFUN_META_PREFIX,
        LFUN_COMMAND_EXECUTE,
        LFUN_FILE_INSERT,
        LFUN_FILE_INSERT_PLAINTEXT,     // CFO-G 1997-11-19
-       LFUN_FILE_INSERT_PLAINTEXT_PARA,// Levon 2001-02-14
        // 140
+       LFUN_FILE_INSERT_PLAINTEXT_PARA,// Levon 2001-02-14
        LFUN_FILE_OPEN,
        LFUN_PARAGRAPH_UP,              // Asger 1996-10-01
        LFUN_PARAGRAPH_UP_SELECT,       // Asger 1996-10-01
        LFUN_PARAGRAPH_DOWN,            // Asger 1996-10-01
-       LFUN_PARAGRAPH_DOWN_SELECT,     // Asger 1996-10-01
        // 145
+       LFUN_PARAGRAPH_DOWN_SELECT,     // Asger 1996-10-01
        LFUN_NEXT_INSET_MODIFY,         // JSpitzm 20080323
        LFUN_BUFFER_NEW_TEMPLATE,       // Asger 1997-02-02
        LFUN_BUFFER_RELOAD,             // Asger 1997-02-02
        LFUN_RECONFIGURE,
-       LFUN_BRANCH_ACTIVATE,
        // 150
+       LFUN_BRANCH_ACTIVATE,
        LFUN_BRANCH_DEACTIVATE,
        LFUN_INDEX_PRINT,               // Lgb 97-02-27
        LFUN_CELL_SPLIT,
        LFUN_BUFFER_CHILD_OPEN,         // Ale 970528
-       LFUN_TOC_INSERT,                // Lgb 97-05-27
        // 155
+       LFUN_TOC_INSERT,                // Lgb 97-05-27
        LFUN_FLOAT_LIST_INSERT,         // Lgb 20010503
        LFUN_BUFFER_TOGGLE_READ_ONLY,   // Lgb 97-05-27
        LFUN_VC_REGISTER,               // Lgb 97-07-01
        LFUN_VC_CHECK_IN,               // Lgb 97-07-01
-       LFUN_VC_CHECK_OUT,              // Lgb 97-07-01
        // 160
+       LFUN_VC_CHECK_OUT,              // Lgb 97-07-01
        LFUN_VC_REVERT,                 // Lgb 97-07-01
        LFUN_VC_UNDO_LAST,              // Lgb 97-07-01
        LFUN_BUFFER_EXPORT,             // Lgb 97-07-29
        LFUN_LABEL_GOTO,                // Ale 970806
-       LFUN_CURSOR_FOLLOWS_SCROLLBAR_TOGGLE, // ARRae 971202
        // 165
+       LFUN_CURSOR_FOLLOWS_SCROLLBAR_TOGGLE, // ARRae 971202
        LFUN_BUFFER_CHKTEX,             // Asger 971030
        LFUN_HYPERLINK_INSERT,          // CFO-G 971121
        LFUN_WORD_FIND_FORWARD,         // Etienne 980216
        LFUN_WORD_FIND_BACKWARD,        // Etienne 980220
-       LFUN_APPENDIX,                  // ettrich 980505
        // 170
+       LFUN_APPENDIX,                  // ettrich 980505
        LFUN_BUFFER_IMPORT,             // Asger 980724
        LFUN_COMMAND_SEQUENCE,          // Andre' 991111
        LFUN_PREFERENCES_SAVE,
        LFUN_HELP_OPEN,                 // Jug 990627
-       LFUN_DATE_INSERT,               // jdblair 20000131
        // 175
+       LFUN_DATE_INSERT,               // jdblair 20000131
        LFUN_LANGUAGE,                  // Dekel 20000203
        LFUN_ERT_INSERT,                // Jug 20000218
        LFUN_FOOTNOTE_INSERT,           // Jug 20000307
        LFUN_PARAGRAPH_SPACING,         // Lgb 20000411
-       LFUN_TABULAR_INSERT,            // Jug 20000412
        // 180
+       LFUN_TABULAR_INSERT,            // Jug 20000412
        LFUN_LOFVIEW,                   // Dekel 20000519
        LFUN_LOTVIEW,                   // Dekel 20000519
        LFUN_LOAVIEW,                   // Dekel 20000519
        LFUN_SET_COLOR,                 // SLior 20000611
-       LFUN_MARGINALNOTE_INSERT,       // Lgb 20000626
        // 185
+       LFUN_MARGINALNOTE_INSERT,       // Lgb 20000626
        LFUN_FLOAT_INSERT,              // Lgb 20000627
        LFUN_FLOAT_WIDE_INSERT,         // Lgb 20010531
        LFUN_CAPTION_INSERT,            // Lgb 20000718; inactive as of 20060905
        LFUN_BUFFER_SWITCH,
-       LFUN_TABULAR_FEATURE,           // Jug 20000728
        // 190
+       LFUN_TABULAR_FEATURE,           // Jug 20000728
        LFUN_LAYOUT_TABULAR,            // Jug 20000731
        LFUN_BUFFER_UPDATE,             // Dekel 20000805
        LFUN_INDEX_INSERT,              // Angus 20000803
        LFUN_SCREEN_FONT_UPDATE,        // ARRae 20000813
-       LFUN_PARAGRAPH_GOTO,            // Dekel 20000826
        // 195
+       LFUN_PARAGRAPH_GOTO,            // Dekel 20000826
        LFUN_REFERENCE_NEXT,            // Dekel 20010114
        LFUN_BOOKMARK_SAVE,
        LFUN_BOOKMARK_GOTO,
        LFUN_SELECT_FILE_SYNC,          // Levon 20010214
-       LFUN_MESSAGE,                   // Lgb 20010408; for scripting purposes, output in minibuffer
        // 200
+       LFUN_MESSAGE,                   // Lgb 20010408; for scripting purposes, output in minibuffer
        LFUN_CHARS_TRANSPOSE,           // Lgb 20010425
        LFUN_ESCAPE,                    // Lgb 20010517
        LFUN_THESAURUS_ENTRY,           // Levon 20010720
        LFUN_OPTIONAL_INSERT,           // Martin 12 Aug 2002
-       LFUN_MOUSE_PRESS,               // André 9 Aug 2002
        // 205
+       LFUN_MOUSE_PRESS,               // André 9 Aug 2002
        LFUN_MOUSE_MOTION,              // André 9 Aug 2002
        LFUN_MOUSE_RELEASE,             // André 9 Aug 2002
        LFUN_MOUSE_DOUBLE,              // André 9 Aug 2002
        LFUN_MOUSE_TRIPLE,              // André 9 Aug 2002
-       LFUN_WRAP_INSERT,               // Dekel 7 Apr 2002
        // 210
+       LFUN_WRAP_INSERT,               // Dekel 7 Apr 2002
        LFUN_CHANGES_TRACK,             // Levon 20021001 (cool date !)
        LFUN_CHANGES_MERGE,             // Levon 20021016
        LFUN_CHANGE_ACCEPT,             // Levon 20021016
        LFUN_CHANGE_REJECT,             // Levon 20021016
-       LFUN_ALL_CHANGES_ACCEPT,        // Levon 20021016
        // 215
+       LFUN_ALL_CHANGES_ACCEPT,        // Levon 20021016
        LFUN_ALL_CHANGES_REJECT,        // Levon 20021016
        LFUN_SCROLL,
        LFUN_DIALOG_SHOW,
        LFUN_DIALOG_SHOW_NEW_INSET,
-       LFUN_DIALOG_UPDATE,
        // 220
+       LFUN_DIALOG_UPDATE,
        LFUN_DIALOG_HIDE,
        LFUN_DIALOG_TOGGLE,             // JSpitzm 20070430
        LFUN_DIALOG_DISCONNECT_INSET,
        LFUN_INSET_APPLY,
-       LFUN_INSET_INSERT,
        // 225
+       LFUN_INSET_INSERT,
        LFUN_INSET_MODIFY,
        LFUN_INSET_DIALOG_UPDATE,
        LFUN_INSET_SETTINGS,
        LFUN_PARAGRAPH_PARAMS_APPLY,
-       LFUN_PARAGRAPH_UPDATE,
        // 230
+       LFUN_PARAGRAPH_UPDATE,
        LFUN_INSET_EDIT,                // JSpitzm 20080427
        LFUN_BRANCH_INSERT,
        LFUN_BOX_INSERT,
        LFUN_LINE_INSERT,
-       LFUN_NEWPAGE_INSERT,            // uwestoehr, 20071124
        // 235
+       LFUN_NEWPAGE_INSERT,            // uwestoehr, 20071124
        LFUN_REPEAT,
        LFUN_FINISHED_LEFT,
        LFUN_FINISHED_RIGHT,
        LFUN_FLEX_INSERT,
-       LFUN_WORD_FIND,
        // 240
+       LFUN_WORD_FIND,
        LFUN_WORD_REPLACE,
        LFUN_BUFFER_EXPORT_CUSTOM,
        LFUN_BUFFER_PRINT,
        LFUN_NEXT_INSET_TOGGLE,
-       LFUN_ALL_INSETS_TOGGLE,
        // 245
+       LFUN_ALL_INSETS_TOGGLE,
        LFUN_BUFFER_LANGUAGE,
        LFUN_TEXTCLASS_APPLY,
        LFUN_TEXTCLASS_LOAD,
        LFUN_BUFFER_SAVE_AS_DEFAULT,
-       LFUN_BUFFER_PARAMS_APPLY,
        // 250
+       LFUN_BUFFER_PARAMS_APPLY,
        LFUN_LYXRC_APPLY,
        LFUN_BUFFER_NEXT,
        LFUN_BUFFER_PREVIOUS,
        LFUN_STATISTICS,
-       LFUN_CHANGES_OUTPUT,             // jspitzm 20050121
        // 255
+       LFUN_CHANGES_OUTPUT,             // jspitzm 20050121
        LFUN_BIBTEX_DATABASE_ADD,
        LFUN_BIBTEX_DATABASE_DEL,
        LFUN_CITATION_INSERT,
        LFUN_OUTLINE_UP,
-       LFUN_OUTLINE_DOWN,
        // 260
+       LFUN_OUTLINE_DOWN,
        LFUN_OUTLINE_IN,
        LFUN_OUTLINE_OUT,
        LFUN_PARAGRAPH_MOVE_DOWN,
        LFUN_PARAGRAPH_MOVE_UP,
-       LFUN_BUFFER_TOGGLE_COMPRESSION,  // bpeng 20060427
        // 265
+       LFUN_BUFFER_TOGGLE_COMPRESSION,  // bpeng 20060427
        LFUN_MATH_BIGDELIM,
        LFUN_CLIPBOARD_PASTE,
        LFUN_INSET_DISSOLVE,             // jspitzm 20060807
        LFUN_CHANGE_NEXT,
-       LFUN_WINDOW_NEW,                 // Abdel 20061021
        // 270
+       LFUN_WINDOW_NEW,                 // Abdel 20061021
        LFUN_WINDOW_CLOSE,               // Abdel 20061023
        LFUN_UNICODE_INSERT,             // Lgb 20061022
        LFUN_BOOKMARK_CLEAR,             // bpeng 20061031
        LFUN_NOMENCL_INSERT,             // Ugras
-       LFUN_NOMENCL_PRINT,              // Ugras
        // 275
+       LFUN_NOMENCL_PRINT,              // Ugras
        LFUN_LISTING_INSERT,             // Herbert 20011110, bpeng 20070502
        LFUN_TOOLBAR_TOGGLE,             // Edwin 20070521
        LFUN_BUFFER_WRITE_ALL,           // rgh, gpothier 200707XX
        LFUN_PARAGRAPH_PARAMS,
-       LFUN_LAYOUT_MODULES_CLEAR,
        // 280
+       LFUN_LAYOUT_MODULES_CLEAR,
        LFUN_LAYOUT_MODULE_ADD,
        LFUN_LAYOUT_RELOAD,
        LFUN_MASTER_BUFFER_VIEW,         // Tommaso, 20070920
        LFUN_MASTER_BUFFER_UPDATE,       // Tommaso, 20070920
-       LFUN_INFO_INSERT,                // bpeng, 20071007
        // 285
+       LFUN_INFO_INSERT,                // bpeng, 20071007
        LFUN_CALL,                       // broider, 20071002
        LFUN_CHAR_LEFT,                  // dov, 20071022
        LFUN_CHAR_LEFT_SELECT,           // dov, 20071022
        LFUN_CHAR_RIGHT,                 // dov, 20071022
-       LFUN_CHAR_RIGHT_SELECT,          // dov, 20071022
        // 290
+       LFUN_CHAR_RIGHT_SELECT,          // dov, 20071022
        LFUN_FINISHED_BACKWARD,          // dov, 20071022
        LFUN_FINISHED_FORWARD,           // dov, 20071022
        LFUN_WORD_LEFT,                  // dov, 20071028
        LFUN_WORD_LEFT_SELECT,           // dov, 20071028
-       LFUN_WORD_RIGHT,                 // dov, 20071028
        // 295
+       LFUN_WORD_RIGHT,                 // dov, 20071028
        LFUN_WORD_RIGHT_SELECT,          // dov, 20071028
        LFUN_MATH_MACRO_FOLD,
        LFUN_MATH_MACRO_UNFOLD,
        LFUN_MATH_MACRO_ADD_PARAM,
-       LFUN_MATH_MACRO_REMOVE_PARAM,
        // 300
+       LFUN_MATH_MACRO_REMOVE_PARAM,
        LFUN_MATH_MACRO_APPEND_GREEDY_PARAM,
        LFUN_MATH_MACRO_REMOVE_GREEDY_PARAM,
        LFUN_MATH_MACRO_MAKE_OPTIONAL,
        LFUN_MATH_MACRO_MAKE_NONOPTIONAL,
-       LFUN_MATH_MACRO_ADD_OPTIONAL_PARAM,
        // 305
+       LFUN_MATH_MACRO_ADD_OPTIONAL_PARAM,
        LFUN_MATH_MACRO_REMOVE_OPTIONAL_PARAM,
        LFUN_MATH_MACRO_ADD_GREEDY_OPTIONAL_PARAM,
        LFUN_IN_MATHMACROTEMPLATE,
        LFUN_COMPLETION_POPUP,
-       LFUN_COMPLETION_INLINE,
        // 310
+       LFUN_COMPLETION_INLINE,
        LFUN_COMPLETION_COMPLETE,
        LFUN_SET_GRAPHICS_GROUP,
        LFUN_COMPLETION_CANCEL,
        LFUN_COMPLETION_ACCEPT,
-       LFUN_COMMAND_ALTERNATIVES,
        // 315
+       LFUN_COMMAND_ALTERNATIVES,
        LFUN_TAB_INSERT,
        LFUN_TAB_DELETE,
        LFUN_WORD_FINDADV,               // Tommaso, 20081003
        LFUN_REGEXP_MODE,                // Tommaso, 20081003
-       LFUN_COPY_LABEL_AS_REF,          // sts, 20081116
        // 320
+       LFUN_COPY_LABEL_AS_REF,          // sts, 20081116
        LFUN_VC_COMMAND,
 
        LFUN_LASTACTION                  // end of the table
index a84679bcc4721087eb1589ba53591f7623e5b70f..1927f5460c402de866411f333e62c14a66add03e 100644 (file)
@@ -1077,6 +1077,13 @@ void LyXAction::init()
  * \endvar
  */
                { LFUN_PRIMARY_SELECTION_PASTE, "primary-selection-paste", Noop, Edit },
+/*!
+ * \var lyx::FuncCode lyx::LFUN_SELECTION_PASTE
+ * \li Action: Pastes the text in permanent selection.
+ * \li Syntax: selection-paste
+ * \endvar
+ */
+               { LFUN_SELECTION_PASTE, "selection-paste", Noop, Edit },
 /*!
  * \var lyx::FuncCode lyx::LFUN_UNDO
  * \li Action: Undoes the last edit.
index 24e6b5e19b4c51c0cce5316a6ee3a0134806f149..08827fe31ba678669e8291dac34968c7a5ea4369 100644 (file)
@@ -1158,6 +1158,15 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                            cmd.argument() == "paragraph");
                break;
 
+       case LFUN_SELECTION_PASTE:
+               // Copy the selection buffer to the clipboard stack,
+               // because we want it to appear in the "Edit->Paste
+               // recent" menu.
+               cap::copySelectionToStack();
+               cap::pasteSelection(bv->cursor(), bv->buffer().errorList("Paste"));
+               bv->buffer().errors("Paste");
+               break;
+
        case LFUN_UNICODE_INSERT: {
                if (cmd.argument().empty())
                        break;
@@ -1242,23 +1251,10 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                case mouse_button::button2:
                        // Middle mouse pasting.
                        bv->mouseSetCursor(cur);
-                       if (!cap::selection()) {
-                               // There is no local selection in the current buffer, so try to
-                               // paste primary selection instead.
-                               lyx::dispatch(FuncRequest(LFUN_PRIMARY_SELECTION_PASTE,
-                                       "paragraph"));
-                               // Nothing else to do.
-                               cur.noUpdate();
-                               return;
-                       }
-                       // Copy the selection buffer to the clipboard stack, because we want it
-                       // to appear in the "Edit->Paste recent" menu.
-                       cap::copySelectionToStack();
-                       cap::pasteSelection(bv->cursor(), bv->buffer().errorList("Paste"));
-                       cur.updateFlags(Update::Force | Update::FitCursor);
-                       bv->buffer().errors("Paste");
-                       bv->buffer().markDirty();
-                       bv->cursor().finishUndo();
+                       lyx::dispatch(
+                               FuncRequest(LFUN_COMMAND_ALTERNATIVES,
+                                           "selection-paste ; primary-selection-paste paragraph"));
+                       cur.noUpdate();
                        break;
 
                case mouse_button::button3: {
@@ -2218,6 +2214,10 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
                enable = cur.selection() || !theSelection().empty();
                break;
 
+       case LFUN_SELECTION_PASTE:
+               enable = cap::selection();
+               break;
+
        case LFUN_PARAGRAPH_MOVE_UP:
                enable = cur.pit() > 0 && !cur.selection();
                break;