From c82aad1a0279ac7232477876cfba1a9570ebd3c3 Mon Sep 17 00:00:00 2001 From: nyamatongwe Date: Mon, 16 Jul 2012 14:06:12 +1000 Subject: Implement SCI_GETSELECTIONEMPTY API. Bug #3543121. --- doc/ScintillaDoc.html | 9 +++++++-- include/Scintilla.h | 1 + include/Scintilla.iface | 3 +++ src/Editor.cxx | 3 +++ 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/doc/ScintillaDoc.html b/doc/ScintillaDoc.html index 0fe4b05c7..2ab2d7f03 100644 --- a/doc/ScintillaDoc.html +++ b/doc/ScintillaDoc.html @@ -911,8 +911,8 @@ struct Sci_TextToFind { pasting from the clipboard into the document, and clearing the document. SCI_CANPASTE returns non-zero if the document isn't read-only and if the selection doesn't contain protected text. If you need a "can copy" or "can cut", use - SCI_GETSELECTIONSTART()-SCI_GETSELECTIONEND(), which will be non-zero if you can - copy or cut to the clipboard.

+ SCI_GETSELECTIONEMPTY(), which will be zero if there are any non-empty + selection ranges implying that a copy or cut to the clipboard should work.

GTK+ does not really support SCI_CANPASTE and always returns TRUE unless the document is read-only.

@@ -1504,6 +1504,7 @@ struct Sci_TextToFind {
SCI_GETSELECTIONS
+ SCI_GETSELECTIONEMPTY
SCI_CLEARSELECTIONS
SCI_SETSELECTION(int caret, int anchor)
SCI_ADDSELECTION(int caret, int anchor)
@@ -1614,6 +1615,10 @@ struct Sci_TextToFind { SCI_GETSELECTIONS
Return the number of selections currently active.

+

+ SCI_GETSELECTIONEMPTY
+ Return 1 if every selected range is empty else 0.

+

SCI_CLEARSELECTIONS
Set a single empty selection at 0 as the only selection.

diff --git a/include/Scintilla.h b/include/Scintilla.h index 3cacd5310..52d6eed15 100644 --- a/include/Scintilla.h +++ b/include/Scintilla.h @@ -787,6 +787,7 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam, #define SCI_SETADDITIONALCARETSVISIBLE 2608 #define SCI_GETADDITIONALCARETSVISIBLE 2609 #define SCI_GETSELECTIONS 2570 +#define SCI_GETSELECTIONEMPTY 2650 #define SCI_CLEARSELECTIONS 2571 #define SCI_SETSELECTION 2572 #define SCI_ADDSELECTION 2573 diff --git a/include/Scintilla.iface b/include/Scintilla.iface index 0456615e2..ef35fe6a4 100644 --- a/include/Scintilla.iface +++ b/include/Scintilla.iface @@ -2100,6 +2100,9 @@ get bool GetAdditionalCaretsVisible=2609(,) # How many selections are there? get int GetSelections=2570(,) +# Is every selected range empty? +get bool GetSelectionEmpty=2650(,) + # Clear selections to a single empty stream selection fun void ClearSelections=2571(,) diff --git a/src/Editor.cxx b/src/Editor.cxx index f3c7709a0..3fabf1ab7 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -9147,6 +9147,9 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { case SCI_GETSELECTIONS: return sel.Count(); + case SCI_GETSELECTIONEMPTY: + return sel.Empty(); + case SCI_CLEARSELECTIONS: sel.Clear(); Redraw(); -- cgit v1.2.3