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