aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authornyamatongwe <devnull@localhost>2000-09-08 08:33:39 +0000
committernyamatongwe <devnull@localhost>2000-09-08 08:33:39 +0000
commit8493d793a070ad2020c4c7a854c0c4e00034e4a4 (patch)
tree02d5d1981170e1bfb30f1634d0fd8f8f2a12a060 /src
parent2c07bfe4cdaf52df17769d8a0d0d44c3ca55eb19 (diff)
downloadscintilla-mirror-8493d793a070ad2020c4c7a854c0c4e00034e4a4.tar.gz
Implemented settable caret width.
Diffstat (limited to 'src')
-rw-r--r--src/Editor.cxx24
-rw-r--r--src/ViewStyle.cxx2
-rw-r--r--src/ViewStyle.h1
3 files changed, 23 insertions, 4 deletions
diff --git a/src/Editor.cxx b/src/Editor.cxx
index 6d2676ffb..c33c69fd0 100644
--- a/src/Editor.cxx
+++ b/src/Editor.cxx
@@ -1241,17 +1241,20 @@ void Editor::Paint(Surface *surfaceWindow, PRectangle rcArea) {
widthOverstrikeCaret = 3;
if (((caret.active && caret.on) || (posDrag >= 0)) && xposCaret >= 0) {
PRectangle rcCaret = rcLine;
+ int caretWidthOffset = 0;
+ if ((offset > 0) && (vs.caretWidth > 1))
+ caretWidthOffset = 1; // Move back so overlaps both character cells.
if (posDrag >= 0) {
- rcCaret.left = xposCaret;
- rcCaret.right = xposCaret + 1;
+ rcCaret.left = xposCaret - caretWidthOffset;
+ rcCaret.right = rcCaret.left + vs.caretWidth;
} else {
if (inOverstrike) {
rcCaret.top = rcCaret.bottom - 2;
rcCaret.left = xposCaret + 1;
rcCaret.right = rcCaret.left + widthOverstrikeCaret - 1;
} else {
- rcCaret.left = xposCaret;
- rcCaret.right = xposCaret + 1;
+ rcCaret.left = xposCaret - caretWidthOffset;
+ rcCaret.right = rcCaret.left + vs.caretWidth;
}
}
surface->FillRectangle(rcCaret, vs.caretcolour.allocated);
@@ -4066,6 +4069,19 @@ long Editor::WndProc(unsigned int iMessage, unsigned long wParam, long lParam) {
case SCI_GETCARETFORE:
return vs.caretcolour.desired.AsLong();
+ case SCI_SETCARETWIDTH:
+ if (wParam <= 1)
+ vs.caretWidth = 1;
+ else if (wParam >= 3)
+ vs.caretWidth = 3;
+ else
+ vs.caretWidth = wParam;
+ InvalidateStyleRedraw();
+ break;
+
+ case SCI_GETCARETWIDTH:
+ return vs.caretWidth;
+
case SCI_ASSIGNCMDKEY:
kmap.AssignCmdKey(Platform::LowShortFromLong(wParam),
Platform::HighShortFromLong(wParam), lParam);
diff --git a/src/ViewStyle.cxx b/src/ViewStyle.cxx
index 9b7a8535e..4d6cf20c8 100644
--- a/src/ViewStyle.cxx
+++ b/src/ViewStyle.cxx
@@ -75,6 +75,7 @@ ViewStyle::ViewStyle(const ViewStyle &source) {
caretcolour.desired = source.caretcolour.desired;
edgecolour.desired = source.edgecolour.desired;
edgeState = source.edgeState;
+ caretWidth = source.caretWidth;
leftMarginWidth = source.leftMarginWidth;
rightMarginWidth = source.rightMarginWidth;
for (int i=0;i < margins; i++) {
@@ -123,6 +124,7 @@ void ViewStyle::Init() {
caretcolour.desired = Colour(0, 0, 0);
edgecolour.desired = Colour(0xc0, 0xc0, 0xc0);
edgeState = EDGE_NONE;
+ caretWidth = 1;
leftMarginWidth = 1;
rightMarginWidth = 1;
diff --git a/src/ViewStyle.h b/src/ViewStyle.h
index 5b0ab1925..79ad82670 100644
--- a/src/ViewStyle.h
+++ b/src/ViewStyle.h
@@ -61,6 +61,7 @@ public:
ColourPair caretcolour;
ColourPair edgecolour;
int edgeState;
+ int caretWidth;
ViewStyle();
ViewStyle(const ViewStyle &source);