entry: handle onKeyEvent
- no x86 linux binary update. no build environment
This commit is contained in:
parent
867a9e5a49
commit
1ad120771a
24
entry.go
24
entry.go
|
@ -19,6 +19,7 @@ type Entry struct {
|
|||
ControlBase
|
||||
e *C.uiEntry
|
||||
onChanged func(*Entry)
|
||||
onKeyEvent func(*Entry, *AreaKeyEvent) (handled bool)
|
||||
}
|
||||
|
||||
func finishNewEntry(ee *C.uiEntry) *Entry {
|
||||
|
@ -27,6 +28,7 @@ func finishNewEntry(ee *C.uiEntry) *Entry {
|
|||
e.e = ee
|
||||
|
||||
C.pkguiEntryOnChanged(e.e)
|
||||
C.pkguiEntryOnKeyEvent(e.e)
|
||||
|
||||
e.ControlBase = NewControlBase(e, uintptr(unsafe.Pointer(e.e)))
|
||||
return e
|
||||
|
@ -79,6 +81,28 @@ func pkguiDoEntryOnChanged(ee *C.uiEntry, data unsafe.Pointer) {
|
|||
}
|
||||
}
|
||||
|
||||
// OnKeyEvent registers f to be run when the user makes a change to
|
||||
// the Entry. Only one function can be registered at a time.
|
||||
func (e *Entry) OnKeyEvent(f func(*Entry, *AreaKeyEvent) (handled bool) ) {
|
||||
e.onKeyEvent = f
|
||||
}
|
||||
|
||||
//export pkguiDoEntryOnKeyEvent
|
||||
func pkguiDoEntryOnKeyEvent(ee *C.uiEntry, uke *C.uiAreaKeyEvent) C.int {
|
||||
ke := &AreaKeyEvent{
|
||||
Key: rune(uke.Key),
|
||||
ExtKey: ExtKey(uke.ExtKey),
|
||||
Modifier: Modifiers(uke.Modifier),
|
||||
Modifiers: Modifiers(uke.Modifiers),
|
||||
Up: tobool(uke.Up),
|
||||
}
|
||||
e := ControlFromLibui(uintptr(unsafe.Pointer(ee))).(*Entry)
|
||||
if e.onKeyEvent != nil {
|
||||
return frombool(e.onKeyEvent(e, ke))
|
||||
}
|
||||
return frombool(false)
|
||||
}
|
||||
|
||||
// ReadOnly returns whether the Entry can be changed.
|
||||
func (e *Entry) ReadOnly() bool {
|
||||
return tobool(C.uiEntryReadOnly(e.e))
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
5
pkgui.c
5
pkgui.c
|
@ -88,6 +88,11 @@ void pkguiEntryOnChanged(uiEntry *e)
|
|||
uiEntryOnChanged(e, pkguiDoEntryOnChanged, NULL);
|
||||
}
|
||||
|
||||
void pkguiEntryOnKeyEvent(uiEntry *e)
|
||||
{
|
||||
uiEntryOnKeyEvent(e, pkguiDoEntryOnKeyEvent);
|
||||
}
|
||||
|
||||
void pkguiFontButtonOnChanged(uiFontButton *b)
|
||||
{
|
||||
uiFontButtonOnChanged(b, pkguiDoFontButtonOnChanged, NULL);
|
||||
|
|
1
pkgui.h
1
pkgui.h
|
@ -47,6 +47,7 @@ extern void pkguiEditableComboboxOnChanged(uiEditableCombobox *c);
|
|||
|
||||
// entry.go
|
||||
extern void pkguiEntryOnChanged(uiEntry *e);
|
||||
extern void pkguiEntryOnKeyEvent(uiEntry *e);
|
||||
|
||||
// fontbutton.go
|
||||
extern void pkguiFontButtonOnChanged(uiFontButton *b);
|
||||
|
|
12
ui.h
12
ui.h
|
@ -45,6 +45,12 @@ _UI_ENUM(uiForEach) {
|
|||
uiForEachStop,
|
||||
};
|
||||
|
||||
typedef struct uiArea uiArea;
|
||||
typedef struct uiAreaHandler uiAreaHandler;
|
||||
typedef struct uiAreaDrawParams uiAreaDrawParams;
|
||||
typedef struct uiAreaMouseEvent uiAreaMouseEvent;
|
||||
typedef struct uiAreaKeyEvent uiAreaKeyEvent;
|
||||
|
||||
typedef struct uiInitOptions uiInitOptions;
|
||||
|
||||
struct uiInitOptions {
|
||||
|
@ -162,6 +168,7 @@ typedef struct uiEntry uiEntry;
|
|||
_UI_EXTERN char *uiEntryText(uiEntry *e);
|
||||
_UI_EXTERN void uiEntrySetText(uiEntry *e, const char *text);
|
||||
_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 int uiEntryReadOnly(uiEntry *e);
|
||||
_UI_EXTERN void uiEntrySetReadOnly(uiEntry *e, int readonly);
|
||||
_UI_EXTERN uiEntry *uiNewEntry(void);
|
||||
|
@ -297,11 +304,6 @@ _UI_EXTERN char *uiSaveFile(uiWindow *parent);
|
|||
_UI_EXTERN void uiMsgBox(uiWindow *parent, const char *title, const char *description);
|
||||
_UI_EXTERN void uiMsgBoxError(uiWindow *parent, const char *title, const char *description);
|
||||
|
||||
typedef struct uiArea uiArea;
|
||||
typedef struct uiAreaHandler uiAreaHandler;
|
||||
typedef struct uiAreaDrawParams uiAreaDrawParams;
|
||||
typedef struct uiAreaMouseEvent uiAreaMouseEvent;
|
||||
typedef struct uiAreaKeyEvent uiAreaKeyEvent;
|
||||
|
||||
typedef struct uiDrawContext uiDrawContext;
|
||||
|
||||
|
|
Loading…
Reference in New Issue