1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-19 20:38:08 +01:00

Syncing the code for discussing it.

This commit is contained in:
dan
1999-10-22 23:39:39 +00:00
parent 652caa1f93
commit 6dd37d5972
2 changed files with 31 additions and 23 deletions

View File

@@ -157,7 +157,7 @@ textChangedObserver(void *observerData, WMNotification *notification)
WMInsertTextFieldText(panel->fileField, &item->text[textLen], WMInsertTextFieldText(panel->fileField, &item->text[textLen],
textLen); textLen);
WMSetTextFieldCursorPosition(panel->fileField, itemTextLen); /*WMSetTextFieldCursorPosition(panel->fileField, itemTextLen);*/
range.position = textLen; range.position = textLen;
range.count = itemTextLen - textLen; range.count = itemTextLen - textLen;
WMSelectTextFieldRange(panel->fileField, range); WMSelectTextFieldRange(panel->fileField, range);

View File

@@ -550,6 +550,8 @@ WMSelectTextFieldRange(WMTextField *tPtr, WMRange range)
tPtr->selection = range; tPtr->selection = range;
tPtr->cursorPosition = range.position + range.count;
if (tPtr->view->flags.realized) { if (tPtr->view->flags.realized) {
paintTextField(tPtr); paintTextField(tPtr);
} }
@@ -1052,13 +1054,13 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event)
break; break;
case WM_EMACSKEY_RIGHT: case WM_EMACSKEY_RIGHT:
if (!control_pressed) { if (!control_pressed) {
goto normal_key; goto normal_key;
} }
#ifdef XK_KP_Right #ifdef XK_KP_Right
case XK_KP_Right: case XK_KP_Right:
#endif #endif
case XK_Right: case XK_Right:
if (tPtr->cursorPosition < tPtr->textLen) { if (tPtr->cursorPosition < tPtr->textLen) {
paintCursor(tPtr); paintCursor(tPtr);
if (event->xkey.state & ControlMask) { if (event->xkey.state & ControlMask) {
@@ -1086,13 +1088,13 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event)
break; break;
case WM_EMACSKEY_HOME: case WM_EMACSKEY_HOME:
if (!control_pressed) { if (!control_pressed) {
goto normal_key; goto normal_key;
} }
#ifdef XK_KP_Home #ifdef XK_KP_Home
case XK_KP_Home: case XK_KP_Home:
#endif #endif
case XK_Home: case XK_Home:
if (tPtr->cursorPosition > 0) { if (tPtr->cursorPosition > 0) {
paintCursor(tPtr); paintCursor(tPtr);
tPtr->cursorPosition = 0; tPtr->cursorPosition = 0;
@@ -1107,13 +1109,13 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event)
break; break;
case WM_EMACSKEY_END: case WM_EMACSKEY_END:
if (!control_pressed) { if (!control_pressed) {
goto normal_key; goto normal_key;
} }
#ifdef XK_KP_End #ifdef XK_KP_End
case XK_KP_End: case XK_KP_End:
#endif #endif
case XK_End: case XK_End:
if (tPtr->cursorPosition < tPtr->textLen) { if (tPtr->cursorPosition < tPtr->textLen) {
paintCursor(tPtr); paintCursor(tPtr);
tPtr->cursorPosition = tPtr->textLen; tPtr->cursorPosition = tPtr->textLen;
@@ -1133,9 +1135,9 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event)
break; break;
case WM_EMACSKEY_BS: case WM_EMACSKEY_BS:
if (!control_pressed) { if (!control_pressed) {
goto normal_key; goto normal_key;
} }
case XK_BackSpace: case XK_BackSpace:
if (tPtr->selection.count) { if (tPtr->selection.count) {
WMDeleteTextFieldRange(tPtr, tPtr->selection); WMDeleteTextFieldRange(tPtr, tPtr->selection);
@@ -1152,13 +1154,13 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event)
break; break;
case WM_EMACSKEY_DEL: case WM_EMACSKEY_DEL:
if (!control_pressed) { if (!control_pressed) {
goto normal_key; goto normal_key;
} }
#ifdef XK_KP_Delete #ifdef XK_KP_Delete
case XK_KP_Delete: case XK_KP_Delete:
#endif #endif
case XK_Delete: case XK_Delete:
if (tPtr->selection.count) { if (tPtr->selection.count) {
WMDeleteTextFieldRange(tPtr, tPtr->selection); WMDeleteTextFieldRange(tPtr, tPtr->selection);
NOTIFY(tPtr, didChange, WMTextDidChangeNotification, NOTIFY(tPtr, didChange, WMTextDidChangeNotification,
@@ -1176,9 +1178,15 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event)
normal_key: normal_key:
default: default:
if (count > 0 && !iscntrl(buffer[0])) { if (count > 0 && !iscntrl(buffer[0])) {
if (tPtr->selection.count) if (tPtr->selection.count) {
WMDeleteTextFieldRange(tPtr, tPtr->selection); WMDeleteTextFieldRange(tPtr, tPtr->selection);
tPtr->selection.count = 0;
refresh = 1;
}
/* TODO: check if this is correct. */
cancelSelection = 0;
WMInsertTextFieldText(tPtr, buffer, tPtr->cursorPosition); WMInsertTextFieldText(tPtr, buffer, tPtr->cursorPosition);
tPtr->selection.position = tPtr->cursorPosition;
NOTIFY(tPtr, didChange, WMTextDidChangeNotification, NOTIFY(tPtr, didChange, WMTextDidChangeNotification,
(void*)WMInsertTextEvent); (void*)WMInsertTextEvent);
} else } else