mirror of
https://github.com/gryf/wmaker.git
synced 2026-01-03 12:24:17 +01:00
patch from Vitaly Ovtchinnikov <ov@rbcmail.ru> for
double/triple-click selection in textfield
This commit is contained in:
@@ -58,7 +58,8 @@ Changes since wmaker 0.80.1:
|
||||
- Fixed small memory leak in the font panel code.
|
||||
- Fixed call to qsort in WMSortArray.
|
||||
- Fixed a memleak in the file panel.
|
||||
|
||||
- Double/triple-click selection in text widgets (Vitaly Ovtchinnikov
|
||||
<ov@rbcmail.ru>)
|
||||
|
||||
Changes since wmaker 0.80.0:
|
||||
............................
|
||||
|
||||
@@ -1396,6 +1396,7 @@ handleTextFieldActionEvents(XEvent *event, void *data)
|
||||
TextField *tPtr = (TextField*)data;
|
||||
static int move = 0;
|
||||
static Time lastButtonReleasedEvent = 0;
|
||||
static Time lastButtonReleasedEvent2 = 0;
|
||||
Display *dpy = event->xany.display;
|
||||
|
||||
CHECK_CLASS(data, WC_TextField);
|
||||
@@ -1554,8 +1555,30 @@ handleTextFieldActionEvents(XEvent *event, void *data)
|
||||
if (!tPtr->flags.secure &&
|
||||
event->xbutton.time - lastButtonReleasedEvent
|
||||
<= WINGsConfiguration.doubleClickDelay) {
|
||||
tPtr->selection.position = 0;
|
||||
tPtr->selection.count = tPtr->textLen;
|
||||
|
||||
if (event->xbutton.time - lastButtonReleasedEvent2 <= 2*WINGsConfiguration.doubleClickDelay) {
|
||||
tPtr->selection.position = 0;
|
||||
tPtr->selection.count = tPtr->textLen;
|
||||
} else {
|
||||
int pos, cnt;
|
||||
char *txt;
|
||||
pos = tPtr->selection.position;
|
||||
cnt = tPtr->selection.count;
|
||||
txt = tPtr->text;
|
||||
while(pos >= 0) {
|
||||
if (txt[pos] == ' ' || txt[pos] == '\t') break;
|
||||
pos--;
|
||||
}
|
||||
pos++;
|
||||
|
||||
while(pos + cnt < tPtr->textLen) {
|
||||
if (txt[pos + cnt] == ' ' || txt[pos + cnt] == '\t')
|
||||
break;
|
||||
cnt++;
|
||||
}
|
||||
tPtr->selection.position = pos;
|
||||
tPtr->selection.count = cnt;
|
||||
}
|
||||
paintTextField(tPtr);
|
||||
|
||||
if (!tPtr->flags.ownsSelection) {
|
||||
@@ -1574,6 +1597,7 @@ handleTextFieldActionEvents(XEvent *event, void *data)
|
||||
&selectionHandler, NULL);
|
||||
}
|
||||
|
||||
lastButtonReleasedEvent2 = lastButtonReleasedEvent;
|
||||
lastButtonReleasedEvent = event->xbutton.time;
|
||||
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user