commit 9495ff665dff01a838304671232be40a3d5dca89
Author: Juergen Spitzmueller <[email protected]>
Date:   Wed Dec 26 17:11:24 2018 +0100

    Make "paste recent" accessible from toolbar
    
    via button menu
---
 lib/ui/stdtoolbars.inc           |    2 +-
 src/frontends/qt4/GuiToolbar.cpp |   31 ++++++++++++++++++++++++++++++-
 src/frontends/qt4/GuiToolbar.h   |    1 +
 3 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/lib/ui/stdtoolbars.inc b/lib/ui/stdtoolbars.inc
index 412d564..4d862d8 100644
--- a/lib/ui/stdtoolbars.inc
+++ b/lib/ui/stdtoolbars.inc
@@ -79,7 +79,7 @@ ToolbarSet
                Item "Redo" "redo"
                Item "Cut" "cut"
                Item "Copy" "copy"
-               Item "Paste" "paste"
+               DynamicMenu "paste" "Paste"
                Item "Find and replace" "dialog-show findreplace"
                Item "Find and replace (advanced)" "dialog-toggle 
findreplaceadv"
                Item "Navigate back" "bookmark-goto 0"
diff --git a/src/frontends/qt4/GuiToolbar.cpp b/src/frontends/qt4/GuiToolbar.cpp
index ea2683b..8966bcf 100644
--- a/src/frontends/qt4/GuiToolbar.cpp
+++ b/src/frontends/qt4/GuiToolbar.cpp
@@ -22,6 +22,7 @@
 #include "BufferParams.h"
 #include "BufferView.h"
 #include "Cursor.h"
+#include "CutAndPaste.h"
 #include "FuncRequest.h"
 #include "FuncStatus.h"
 #include "GuiApplication.h"
@@ -43,6 +44,7 @@
 
 #include "support/convert.h"
 #include "support/debug.h"
+#include "support/docstring_list.h"
 #include "support/gettext.h"
 #include "support/lstrings.h"
 
@@ -321,7 +323,8 @@ bool DynamicMenuButton::isMenuType(string const & s)
 {
        return s == "dynamic-custom-insets"
                || s == "dynamic-char-styles"
-               || s == "dynamic-freefonts";
+               || s == "dynamic-freefonts"
+               || s == "paste";
 }
 
 
@@ -385,6 +388,32 @@ void DynamicMenuButton::updateTriggered()
                }
                setPopupMode(QToolButton::DelayedPopup);
                
setEnabled(lyx::getStatus(FuncRequest(LFUN_TEXTSTYLE_APPLY)).enabled());
+       } else if (menutype == "paste") {
+               m->clear();
+               docstring_list const sel = 
cap::availableSelections(&bv->buffer());
+
+               docstring_list::const_iterator cit = sel.begin();
+               docstring_list::const_iterator end = sel.end();
+
+               Action * default_act = nullptr;
+               for (unsigned int index = 0; cit != end; ++cit, ++index) {
+                       docstring const s = *cit;
+                       FuncRequest func(LFUN_PASTE, convert<docstring>(index),
+                                        FuncRequest::TOOLBAR);
+                       docstring const lb = char_type('&') + 
convert<docstring>(index)
+                               + from_ascii(". ") + s ;
+                       Action * act = new Action(func, QIcon(), toqstr(lb), 
toqstr(s), this);
+                       m->addAction(act);
+                       // The most recent one is the default
+                       if (index == 0)
+                               default_act = act;
+               }
+               Action * default_action = new Action(FuncRequest(LFUN_PASTE),
+                                                    
getIcon(FuncRequest(LFUN_PASTE), false),
+                                                    qt_("Paste"), 
qt_("Paste"), this);
+               QToolButton::setDefaultAction(default_action);
+               setPopupMode(QToolButton::DelayedPopup);
+               setEnabled(lyx::getStatus(FuncRequest(LFUN_PASTE)).enabled());
        }
 }
 
diff --git a/src/frontends/qt4/GuiToolbar.h b/src/frontends/qt4/GuiToolbar.h
index da09bbf..8d82f53 100644
--- a/src/frontends/qt4/GuiToolbar.h
+++ b/src/frontends/qt4/GuiToolbar.h
@@ -87,6 +87,7 @@ protected Q_SLOTS:
 ///            dynamic-custom-insets
 ///            dynamic-char-styles
 ///            dynamic-freefonts
+///            paste
 /// To add a new one of these, you must add a routine, like 
 /// loadFlexInsets, that will populate the menu, and call it from
 /// updateTriggered. Make sure to add the new type to isMenuType().

Reply via email to