Improve double click

This commit is contained in:
Krzosa Karol
2024-07-22 16:26:50 +02:00
parent 06082f2273
commit 53e153a696
4 changed files with 19 additions and 10 deletions

View File

@@ -102,6 +102,11 @@ bool InBounds(const Buffer &buffer, Int pos) {
return result; return result;
} }
bool InBounds(Range range, Int pos) {
bool result = pos >= range.min && pos < range.max;
return result;
}
bool AreEqual(Range a, Range b) { bool AreEqual(Range a, Range b) {
bool result = a.min == b.min && a.max == b.max; bool result = a.min == b.min && a.max == b.max;
return result; return result;

View File

@@ -50,7 +50,7 @@ bool IsDoubleClick() {
double diff = time - last_click_time; double diff = time - last_click_time;
last_click_time = time; last_click_time = time;
// @todo: don't do this manually, use windows // @todo: don't do this manually, use windows
if (diff >= 0.05 && diff <= 0.25) { if (diff >= 0.05 && diff <= 0.3) {
last_click_time = 0; last_click_time = 0;
return true; return true;
} }

View File

@@ -30,9 +30,10 @@ Font MenuFont;
#include "view_draw.cpp" #include "view_draw.cpp"
/* /*
- Ctrl + D - create new cursor at next occurence of word
- Colored strings - Colored strings
- move off raylib
- line endings
- file dock on left side - file dock on left side
- multiple windows - multiple windows
- multiple views per window - multiple views per window

View File

@@ -332,15 +332,18 @@ void HandleKeybindings(View *_view) {
if (mouse_in_view && IsMouseButtonDown(MOUSE_BUTTON_LEFT)) { if (mouse_in_view && IsMouseButtonDown(MOUSE_BUTTON_LEFT)) {
if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) { if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) {
if (!IsKeyDown(KEY_LEFT_CONTROL)) {
view.carets.len = 0;
}
Add(&view.carets, MakeCaret(p, p));
view.selection_anchor = GetLast(view.carets)->range;
if (IsDoubleClick()) { if (IsDoubleClick()) {
Caret *c = GetLast(view.carets); Caret *c = GetLast(view.carets);
c->range = EncloseWord(buf, p); if (InBounds({c->range.min - 1, c->range.max + 1}, p)) {
view.selection_anchor = c->range; c->range = EncloseWord(buf, p);
view.selection_anchor = c->range;
}
} else {
if (!IsKeyDown(KEY_LEFT_CONTROL)) {
view.carets.len = 0;
}
Add(&view.carets, MakeCaret(p, p));
view.selection_anchor = GetLast(view.carets)->range;
} }
MergeCarets(&view.carets); MergeCarets(&view.carets);