entry: add text selection abilities. windows part

This commit is contained in:
Rustam Gamidov 2020-04-09 08:49:44 +03:00
parent 75e769b0cc
commit e6b7670e97
No known key found for this signature in database
GPG Key ID: 093B162FB3DE6996
4 changed files with 20 additions and 0 deletions

2
ui.h
View File

@ -171,6 +171,8 @@ typedef struct uiEntry uiEntry;
#define uiEntry(this) ((uiEntry *) (this)) #define uiEntry(this) ((uiEntry *) (this))
_UI_EXTERN char *uiEntryText(uiEntry *e); _UI_EXTERN char *uiEntryText(uiEntry *e);
_UI_EXTERN void uiEntrySetText(uiEntry *e, const char *text); _UI_EXTERN void uiEntrySetText(uiEntry *e, const char *text);
_UI_EXTERN void uiEntrySelectText(uiEntry *e, int start, int end);
_UI_EXTERN void uiEntrySelectAllText(uiEntry *e);
_UI_EXTERN void uiEntryOnChanged(uiEntry *e, void (*f)(uiEntry *e, void *data), void *data); _UI_EXTERN void uiEntryOnChanged(uiEntry *e, void (*f)(uiEntry *e, void *data), void *data);
_UI_EXTERN void uiEntryOnKeyEvent(uiEntry *e, int (*f)(uiEntry *e, uiAreaKeyEvent *event)); _UI_EXTERN void uiEntryOnKeyEvent(uiEntry *e, int (*f)(uiEntry *e, uiAreaKeyEvent *event));
_UI_EXTERN int uiEntryReadOnly(uiEntry *e); _UI_EXTERN int uiEntryReadOnly(uiEntry *e);

View File

@ -218,6 +218,7 @@ _UI_EXTERN void uiWindowsEnsureGetWindowRect(HWND hwnd, RECT *r);
// TODO document // TODO document
_UI_EXTERN char *uiWindowsWindowText(HWND hwnd); _UI_EXTERN char *uiWindowsWindowText(HWND hwnd);
_UI_EXTERN void uiWindowsSetWindowText(HWND hwnd, const char *text); _UI_EXTERN void uiWindowsSetWindowText(HWND hwnd, const char *text);
_UI_EXTERN void uiWindowsSetlectWindowText(HWND hwnd, int start, int end);
// TODO document // TODO document
_UI_EXTERN int uiWindowsWindowTextWidth(HWND hwnd); _UI_EXTERN int uiWindowsWindowTextWidth(HWND hwnd);

View File

@ -121,6 +121,18 @@ void uiEntrySetText(uiEntry *e, const char *text)
// don't queue the control for resize; entry sizes are independent of their contents // don't queue the control for resize; entry sizes are independent of their contents
} }
void uiEntrySelectText(uiEntry *e, int start, int end)
{
e->inhibitChanged = TRUE;
uiWindowsSetlectWindowText(e->hwnd, start, end);
e->inhibitChanged = FALSE;
}
void uiEntrySelectAllText(uiEntry *e)
{
uiEntrySelectText(e, 0, -1);
}
void uiEntryOnChanged(uiEntry *e, void (*f)(uiEntry *, void *), void *data) void uiEntryOnChanged(uiEntry *e, void (*f)(uiEntry *, void *), void *data)
{ {
e->onChanged = f; e->onChanged = f;

View File

@ -106,6 +106,11 @@ void uiWindowsSetWindowText(HWND hwnd, const char *text)
uiprivFree(wtext); uiprivFree(wtext);
} }
void uiWindowsSetlectWindowText(HWND hwnd, int start, int end)
{
SendMessage(hwnd, EM_SETSEL, 0, -1);
}
int uiprivStricmp(const char *a, const char *b) int uiprivStricmp(const char *a, const char *b)
{ {
WCHAR *wa, *wb; WCHAR *wa, *wb;