diff --git a/components/synedit/languages/syneditstrconst.ca.po b/components/synedit/languages/syneditstrconst.ca.po index b27ce4fb16..d65e0d9e32 100644 --- a/components/synedit/languages/syneditstrconst.ca.po +++ b/components/synedit/languages/syneditstrconst.ca.po @@ -519,6 +519,10 @@ msgstr "" msgid "Drag Selection" msgstr "" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "Caret on up if not dragged, No Caret on up if not dragged" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "" diff --git a/components/synedit/languages/syneditstrconst.cs.po b/components/synedit/languages/syneditstrconst.cs.po index a9ef869182..43d4303128 100644 --- a/components/synedit/languages/syneditstrconst.cs.po +++ b/components/synedit/languages/syneditstrconst.cs.po @@ -519,6 +519,10 @@ msgstr "Výběr sloupce" msgid "Drag Selection" msgstr "Uchop výběr" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "Caret on up if not dragged, No Caret on up if not dragged" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "Výběr řádky" diff --git a/components/synedit/languages/syneditstrconst.de.po b/components/synedit/languages/syneditstrconst.de.po index a89eda8422..ed3dd39e37 100644 --- a/components/synedit/languages/syneditstrconst.de.po +++ b/components/synedit/languages/syneditstrconst.de.po @@ -522,6 +522,10 @@ msgstr "Spaltenmodus" msgid "Drag Selection" msgstr "Auswahl verschieben" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "Caret on up if not dragged, No Caret on up if not dragged" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "Zeilenmodus" diff --git a/components/synedit/languages/syneditstrconst.es.po b/components/synedit/languages/syneditstrconst.es.po index 253df40d94..8d9bfff3e3 100644 --- a/components/synedit/languages/syneditstrconst.es.po +++ b/components/synedit/languages/syneditstrconst.es.po @@ -517,6 +517,10 @@ msgstr "Selección de columna" msgid "Drag Selection" msgstr "Arrastre la selección" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "Caret on up if not dragged, No Caret on up if not dragged" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "Selección de línea" diff --git a/components/synedit/languages/syneditstrconst.fi.po b/components/synedit/languages/syneditstrconst.fi.po index afc944610f..9511e9777e 100644 --- a/components/synedit/languages/syneditstrconst.fi.po +++ b/components/synedit/languages/syneditstrconst.fi.po @@ -512,6 +512,10 @@ msgstr "Sarakevalinta" msgid "Drag Selection" msgstr "Vedä valinta" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "Caret on up if not dragged, No Caret on up if not dragged" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "Rivivalinta" diff --git a/components/synedit/languages/syneditstrconst.fr.po b/components/synedit/languages/syneditstrconst.fr.po index 3e80f02065..f7dd4f5232 100644 --- a/components/synedit/languages/syneditstrconst.fr.po +++ b/components/synedit/languages/syneditstrconst.fr.po @@ -518,6 +518,10 @@ msgstr "" msgid "Drag Selection" msgstr "" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "Caret on up if not dragged, No Caret on up if not dragged" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "" diff --git a/components/synedit/languages/syneditstrconst.he.po b/components/synedit/languages/syneditstrconst.he.po index d56f47060a..7e587b4d65 100644 --- a/components/synedit/languages/syneditstrconst.he.po +++ b/components/synedit/languages/syneditstrconst.he.po @@ -517,6 +517,10 @@ msgstr "בחירת עמודה" msgid "Drag Selection" msgstr "גרור את הבחירה" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "Caret on up if not dragged, No Caret on up if not dragged" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "בחירת שורה" diff --git a/components/synedit/languages/syneditstrconst.hu.po b/components/synedit/languages/syneditstrconst.hu.po index 5ce74a43f8..a9ae90707b 100644 --- a/components/synedit/languages/syneditstrconst.hu.po +++ b/components/synedit/languages/syneditstrconst.hu.po @@ -519,6 +519,10 @@ msgstr "Oszlop kijelölés" msgid "Drag Selection" msgstr "Kijelölés húzása" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "Caret on up if not dragged, No Caret on up if not dragged" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "Sor kijelölés" diff --git a/components/synedit/languages/syneditstrconst.id.po b/components/synedit/languages/syneditstrconst.id.po index 456ce15f4d..6574f170ea 100644 --- a/components/synedit/languages/syneditstrconst.id.po +++ b/components/synedit/languages/syneditstrconst.id.po @@ -522,6 +522,10 @@ msgstr "" msgid "Drag Selection" msgstr "" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "Caret on up if not dragged, No Caret on up if not dragged" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "" diff --git a/components/synedit/languages/syneditstrconst.it.po b/components/synedit/languages/syneditstrconst.it.po index f484c85650..8905a51d97 100644 --- a/components/synedit/languages/syneditstrconst.it.po +++ b/components/synedit/languages/syneditstrconst.it.po @@ -520,6 +520,10 @@ msgstr "Scegli colonna" msgid "Drag Selection" msgstr "Trascina la selezione" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "Caret on up if not dragged, No Caret on up if not dragged" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "Selezione riga" diff --git a/components/synedit/languages/syneditstrconst.lt.po b/components/synedit/languages/syneditstrconst.lt.po index ffbf1af239..dc9cc2880c 100644 --- a/components/synedit/languages/syneditstrconst.lt.po +++ b/components/synedit/languages/syneditstrconst.lt.po @@ -520,6 +520,10 @@ msgstr "Stulpelio žymėjimas" msgid "Drag Selection" msgstr "Vilkti atranką" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "Caret on up if not dragged, No Caret on up if not dragged" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "Eilutės žymėjimas" diff --git a/components/synedit/languages/syneditstrconst.nl.po b/components/synedit/languages/syneditstrconst.nl.po index 5db5902d10..9196af6602 100644 --- a/components/synedit/languages/syneditstrconst.nl.po +++ b/components/synedit/languages/syneditstrconst.nl.po @@ -519,6 +519,10 @@ msgstr "" msgid "Drag Selection" msgstr "" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "Caret on up if not dragged, No Caret on up if not dragged" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "" diff --git a/components/synedit/languages/syneditstrconst.pl.po b/components/synedit/languages/syneditstrconst.pl.po index 47612b12f4..5bc29c4600 100644 --- a/components/synedit/languages/syneditstrconst.pl.po +++ b/components/synedit/languages/syneditstrconst.pl.po @@ -523,6 +523,10 @@ msgstr "" msgid "Drag Selection" msgstr "" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "Caret on up if not dragged, No Caret on up if not dragged" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "Zaznaczenie wiersza" diff --git a/components/synedit/languages/syneditstrconst.po b/components/synedit/languages/syneditstrconst.po index 42382cf940..9fcd0b3aac 100644 --- a/components/synedit/languages/syneditstrconst.po +++ b/components/synedit/languages/syneditstrconst.po @@ -509,6 +509,10 @@ msgstr "" msgid "Drag Selection" msgstr "" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "Caret on up if not dragged, No Caret on up if not dragged" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "" diff --git a/components/synedit/languages/syneditstrconst.pt_BR.po b/components/synedit/languages/syneditstrconst.pt_BR.po index 553285f07b..af587bdc69 100644 --- a/components/synedit/languages/syneditstrconst.pt_BR.po +++ b/components/synedit/languages/syneditstrconst.pt_BR.po @@ -518,6 +518,10 @@ msgstr "Seleção Coluna" msgid "Drag Selection" msgstr "Arrastar Seleção" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "Caret on up if not dragged, No Caret on up if not dragged" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "Seleção Linha" diff --git a/components/synedit/languages/syneditstrconst.ru.po b/components/synedit/languages/syneditstrconst.ru.po index a427a75d88..78f205218f 100644 --- a/components/synedit/languages/syneditstrconst.ru.po +++ b/components/synedit/languages/syneditstrconst.ru.po @@ -518,6 +518,10 @@ msgstr "Выделение столбца" msgid "Drag Selection" msgstr "Перетаскивание выделенного" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "Caret on up if not dragged, No Caret on up if not dragged" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "Выбор строки" diff --git a/components/synedit/languages/syneditstrconst.uk.po b/components/synedit/languages/syneditstrconst.uk.po index 68eebfe888..76127aa650 100644 --- a/components/synedit/languages/syneditstrconst.uk.po +++ b/components/synedit/languages/syneditstrconst.uk.po @@ -520,6 +520,10 @@ msgstr "Вибір Стовпчика" msgid "Drag Selection" msgstr "Вибір Перетягування" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "Caret on up if not dragged, No Caret on up if not dragged" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "Вибір Рядка" diff --git a/components/synedit/languages/syneditstrconst.zh_CN.po b/components/synedit/languages/syneditstrconst.zh_CN.po index a50ce5099c..0e416b8edf 100644 --- a/components/synedit/languages/syneditstrconst.zh_CN.po +++ b/components/synedit/languages/syneditstrconst.zh_CN.po @@ -522,6 +522,10 @@ msgstr "" msgid "Drag Selection" msgstr "" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "Caret on up if not dragged, No Caret on up if not dragged" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "" diff --git a/components/synedit/synedit.pp b/components/synedit/synedit.pp index 4b67fff274..bb8f49ae9d 100644 --- a/components/synedit/synedit.pp +++ b/components/synedit/synedit.pp @@ -188,7 +188,7 @@ type // Mouse-states sfLeftGutterClick, sfRightGutterClick, sfInClick, sfDblClicked, sfTripleClicked, sfQuadClicked, - sfWaitForDragging, sfIsDragging, sfWaitForMouseSelecting, sfMouseSelecting, sfMouseDoneSelecting, + sfWaitForDragging, sfWaitForDraggingNoCaret, sfIsDragging, sfWaitForMouseSelecting, sfMouseSelecting, sfMouseDoneSelecting, sfIgnoreUpClick, sfSelChanged ); //mh 2000-10-30 @@ -3205,6 +3205,8 @@ begin begin if SelAvail and (SelectionMode = smNormal) then begin Include(fStateFlags, sfWaitForDragging); + if AnAction.Option = emcoNotDragedNoCaretOnUp then + Include(fStateFlags, sfWaitForDraggingNoCaret); MouseCapture := True; ResetMouseCapture := False; end @@ -3441,7 +3443,7 @@ begin fStateFlags := fStateFlags - [sfDblClicked, sfTripleClicked, sfQuadClicked, sfLeftGutterClick, sfRightGutterClick, sfWaitForMouseSelecting, sfMouseSelecting, sfMouseDoneSelecting, - sfWaitForDragging, sfIgnoreUpClick + sfWaitForDragging, sfWaitForDraggingNoCaret, sfIgnoreUpClick ]; Include(fStateFlags, sfInClick); @@ -3516,7 +3518,7 @@ begin or (Abs(fMouseDownY - Y) >= GetSystemMetrics(SM_CYDRAG)) then begin FStateFlags := FStateFlags - -[sfWaitForDragging, sfWaitForMouseSelecting, sfMouseSelecting] + -[sfWaitForDragging, sfWaitForDraggingNoCaret, sfWaitForMouseSelecting, sfMouseSelecting] + [sfIsDragging]; FBlockSelection.StickyAutoExtend := False; //debugln('TCustomSynEdit.MouseMove BeginDrag'); @@ -3724,7 +3726,7 @@ begin CType := ccSingle; fStateFlags:=fStateFlags - [sfInClick, sfDblClicked,sfTripleClicked,sfQuadClicked]; - if sfWaitForDragging in fStateFlags then + if fStateFlags * [sfWaitForDragging, sfWaitForDraggingNoCaret] = [sfWaitForDragging] then begin ComputeCaret(X, Y); SetBlockBegin(LogicalCaretXY); diff --git a/components/synedit/syneditmousecmds.pp b/components/synedit/syneditmousecmds.pp index e248f76841..61002d48ac 100644 --- a/components/synedit/syneditmousecmds.pp +++ b/components/synedit/syneditmousecmds.pp @@ -157,6 +157,7 @@ type property IgnoreUpClick: Boolean read FIgnoreUpClick write SetIgnoreUpClick default False; // only for mouse down property Option: TSynEditorMouseCommandOpt read FOption write SetOption default 0; property Option2: Integer read FOption2 write SetOption2 default 0; + // Priority: 0 = highest / MaxInt = lowest property Priority: TSynEditorMouseCommandOpt read FPriority write SetPriority default 0; end; @@ -313,6 +314,9 @@ const emcoMouseLinkShow = TSynEditorMouseCommandOpt(0); emcoMouseLinkHide = TSynEditorMouseCommandOpt(1); + emcoNotDragedSetCaretOnUp = TSynEditorMouseCommandOpt(0); + emcoNotDragedNoCaretOnUp = TSynEditorMouseCommandOpt(1); + emcoCodeFoldCollapsOne = TSynEditorMouseCommandOpt(0); emcoCodeFoldCollapsAll = TSynEditorMouseCommandOpt(1); emcoCodeFoldCollapsAtCaret = TSynEditorMouseCommandOpt(2); @@ -480,6 +484,7 @@ begin emcStartLineSelectionsNoneEmpty: Result := SYNS_emcSelection_opt; emcSelectLine: Result := SYNS_emcSelectLine_opt; emcMouseLink: Result := SYNS_emcMouseLink_opt; + emcStartDragMove: Result := SYNS_emcStartDragMove_opt; emcCodeFoldCollaps: Result := SYNS_emcCodeFoldCollaps_opt; emcCodeFoldExpand: Result := SYNS_emcCodeFoldExpand_opt; emcContextMenu: Result := SYNS_emcContextMenuCaretMove_opt; diff --git a/components/synedit/syneditstrconst.pp b/components/synedit/syneditstrconst.pp index 2ff8670510..17e6b1cefe 100644 --- a/components/synedit/syneditstrconst.pp +++ b/components/synedit/syneditstrconst.pp @@ -411,6 +411,7 @@ resourcestring SYNS_emcPasteSelection = 'Quick Paste Selection'; SYNS_emcMouseLink = 'Source Link'; SYNS_emcMouseLink_opt = 'Underline,yes, no'; + SYNS_emcStartDragMove_opt = 'Caret on up if not dragged, No Caret on up if not dragged'; SYNS_emcContextMenu = 'Popup Menu'; SYNS_emcBreakPointToggle = 'Toggle Breakpoint'; SYNS_emcCodeFoldCollaps = 'Fold Code'; diff --git a/components/synedit/synpluginmulticaret.pp b/components/synedit/synpluginmulticaret.pp index f46f863f2f..81b77aa78e 100644 --- a/components/synedit/synpluginmulticaret.pp +++ b/components/synedit/synpluginmulticaret.pp @@ -1522,6 +1522,7 @@ begin Result := False; if AnAction.Command = emcPluginMultiCaretToggleCaret then begin + Result := True; i := Carets.FindCaretIdx(AnInfo.NewCaret.BytePos, AnInfo.NewCaret.LinePos); if i >= 0 then RemoveCaret(i) diff --git a/ide/editoroptions.pp b/ide/editoroptions.pp index 447fac970c..d9d051280f 100644 --- a/ide/editoroptions.pp +++ b/ide/editoroptions.pp @@ -3494,7 +3494,7 @@ procedure TEditorMouseOptions.ResetTextToDefault; mbaContextMenuTab: AddCommand(emcContextMenu, True, AButton, AClickCount, ADir, AShift, AShiftMask, emcoSelectionCaretMoveOutside, 0, 2); mbaMultiCaretToggle: - AddCommand(emcPluginMultiCaretToggleCaret, True, AButton, AClickCount, ADir, AShift, AShiftMask, 0, 0, 0); + AddCommand(emcPluginMultiCaretToggleCaret, False, AButton, AClickCount, ADir, AShift, AShiftMask); end; end; end; @@ -3685,8 +3685,9 @@ begin if FTextDrag then with FSelActions do begin - AddCommand(emcStartDragMove, False, mbXLeft, ccSingle, cdDown, [], []); + AddCommand(emcStartDragMove, False, mbXLeft, ccSingle, cdDown, [], [], emcoNotDragedNoCaretOnUp); end; + FTextActions.AddCommand(emcNone, True, mbXLeft, ccSingle, cdUp, [], [], 0, 99); end; procedure TEditorMouseOptions.ResetToUserScheme;