commit e0f5641089b5d2498b0e25303c5c86ed5a136e76
Author: Kornel Benko <[email protected]>
Date:   Tue Apr 16 19:50:31 2019 +0200

    Select the whole paragraph with tripple-left-click
    
    Fixes #9175
    
    Also added new function: paragraph-select.
---
 src/FuncCode.h    |    1 +
 src/LyXAction.cpp |    9 +++++++++
 src/Text3.cpp     |   16 ++++++++++++++--
 3 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/src/FuncCode.h b/src/FuncCode.h
index 2d9a5ed..7a2c2cf 100644
--- a/src/FuncCode.h
+++ b/src/FuncCode.h
@@ -484,6 +484,7 @@ enum FuncCode
        LFUN_SEARCH_IGNORE,             // kornel, 20181115
        LFUN_BUFFER_WRITE_AS_TEMPLATE,  // spitz, 20190323
        LFUN_TABULAR_STYLE_INSERT,      // spitz, 20190325
+       LFUN_PARAGRAPH_SELECT,          // Kornel, 20190416
        LFUN_LASTACTION                 // end of the table
 };
 
diff --git a/src/LyXAction.cpp b/src/LyXAction.cpp
index a9422d3..c2738f9 100644
--- a/src/LyXAction.cpp
+++ b/src/LyXAction.cpp
@@ -3251,6 +3251,15 @@ void LyXAction::init()
  */
                { LFUN_PARAGRAPH_UPDATE, "", Noop, Hidden },
 
+/*!
+ * \var lyx::FuncCode lyx::LFUN_PARAGRAPH_SELECT
+ * \li Action: Move cursor to beginning of current paragraph
+               and select to the end in downward direction
+ * \li Syntax: paragraph-select
+ * \li Origin: Kornel, 16 Apr 2019
+ * \endvar
+ */
+               { LFUN_PARAGRAPH_SELECT, "paragraph-select", ReadOnly, Edit },
 
 /*!
  * \var lyx::FuncCode lyx::LFUN_PARAGRAPH_UP_SELECT
diff --git a/src/Text3.cpp b/src/Text3.cpp
index 59f2f20..7e24041 100644
--- a/src/Text3.cpp
+++ b/src/Text3.cpp
@@ -927,6 +927,14 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                break;
        }
 
+       case LFUN_PARAGRAPH_SELECT:
+               if (cur.pos() > 0)
+                       needsUpdate |= setCursor(cur, cur.pit(), 0);
+               needsUpdate |= cur.selHandle(true);
+               if (cur.pos() < cur.lastpos())
+                       needsUpdate |= setCursor(cur, cur.pit(), cur.lastpos());
+               break;
+
        case LFUN_PARAGRAPH_UP:
        case LFUN_PARAGRAPH_UP_SELECT:
                needsUpdate |= cur.selHandle(cmd.action() == 
LFUN_PARAGRAPH_UP_SELECT);
@@ -1762,9 +1770,12 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
 
        case LFUN_MOUSE_TRIPLE:
                if (cmd.button() == mouse_button::button1) {
-                       tm->cursorHome(cur);
+                       if (cur.pos() > 0)
+                               setCursor(cur, cur.pit(), 0);
+                       bv->cursor() = cur;
                        cur.resetAnchor();
-                       tm->cursorEnd(cur);
+                       if (cur.pos() < cur.lastpos())
+                               setCursor(cur, cur.pit(), cur.lastpos());
                        cur.setSelection();
                        bv->cursor() = cur;
                }
@@ -3534,6 +3545,7 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & 
cmd,
        case LFUN_UP_SELECT:
        case LFUN_DOWN:
        case LFUN_DOWN_SELECT:
+       case LFUN_PARAGRAPH_SELECT:
        case LFUN_PARAGRAPH_UP_SELECT:
        case LFUN_PARAGRAPH_DOWN_SELECT:
        case LFUN_LINE_BEGIN_SELECT:

Reply via email to