PAID ms_delete_id;
PAID tb_input_id;
PAID ms_append_id;
+ WEVENT savedwev;
wordlist_t wordlist;
TC strbuf[128];
TC *selector;
return 0;
}
+LOCAL Bool ngwordwindow_isopen(ngwordwindow_t *window)
+{
+ if (window->wid < 0) {
+ return False;
+ }
+ return True;
+}
+
EXPORT VOID cfrmwindow_setpostresdata(cfrmwindow_t *window, postresdata_t *post)
{
SIZE sz;
}
}
+EXPORT W ngwordwindow_starttextboxaction(ngwordwindow_t *window)
+{
+ return 0;
+}
+
+EXPORT W ngwordwindow_gettextboxaction(ngwordwindow_t *window, TC *key)
+{
+ W ret;
+ WEVENT *wev;
+
+ wev = &window->savedwev;
+
+ for (;;) {
+ ret = cact_par(window->tb_input_id, wev);
+ if (ret < 0) {
+ DP_ER("cact_par tb_input_id error:", ret);
+ return ret;
+ }
+ switch (ret & 0xefff) {
+ case P_EVENT:
+ switch (wev->s.type) {
+ case EV_INACT:
+ case EV_REQUEST:
+ wugt_evt(wev);
+ return NGWORDWINDOW_GETTEXTBOXACTION_FINISH;
+ case EV_DEVICE:
+ oprc_dev(&wev->e, NULL, 0);
+ break;
+ }
+ wev->s.type = EV_NULL;
+ continue;
+ case P_MENU:
+ wev->s.type = EV_NULL;
+ if ((wev->s.type == EV_KEYDWN)&&(wev->s.stat & ES_CMD)) {
+ *key = wev->e.data.key.code;
+ return NGWORDWINDOW_GETTEXTBOXACTION_KEYMENU;
+ }
+ return NGWORDWINDOW_GETTEXTBOXACTION_MENU;
+ case (0x4000|P_MOVE):
+ return NGWORDWINDOW_GETTEXTBOXACTION_MOVE;
+ case (0x4000|P_COPY):
+ return NGWORDWINDOW_GETTEXTBOXACTION_COPY;
+ case (0x4000|P_NL):
+ case (0x4000|P_TAB):
+ return NGWORDWINDOW_GETTEXTBOXACTION_FINISH;
+ case (0x4000|P_BUT):
+ wugt_evt(wev);
+ return NGWORDWINDOW_GETTEXTBOXACTION_FINISH;
+ default:
+ return NGWORDWINDOW_GETTEXTBOXACTION_FINISH;
+ }
+ }
+
+ return NGWORDWINDOW_GETTEXTBOXACTION_FINISH;
+}
+
+EXPORT W ngwordwindow_endtextboxaction(ngwordwindow_t *window)
+{
+ return 0;
+}
+
LOCAL VOID ngwordwindow_butdnwork(ngwordwindow_t *window, WEVENT *wev, dathmievent_t *evt)
{
PAID id;
return;
}
if (id == window->tb_input_id) {
- for (;;) {
- ret = cact_par(window->tb_input_id, wev);
- if (ret < 0) {
- DP_ER("cact_par tb_input_id error:", ret);
- return;
- }
- switch (ret & 0xefff) {
- case P_EVENT:
- switch (wev->s.type) {
- case EV_INACT:
- case EV_REQUEST:
- wugt_evt(wev);
- return;
- case EV_DEVICE:
- oprc_dev(&wev->e, NULL, 0);
- break;
- }
- wev->s.type = EV_NULL;
- continue;
- case P_MENU:
- if ((wev->s.type == EV_KEYDWN)&&(wev->s.stat & ES_CMD)) {
- } else {
- }
- wev->s.type = EV_NULL;
- continue;
- case (0x4000|P_NL):
- case (0x4000|P_TAB):
- return;
- case (0x4000|P_BUT):
- wugt_evt(wev);
- return;
- default:
- return;
- }
- }
+ memcpy(&window->savedwev, wev, sizeof(WEVENT));
+ evt->type = DATHMIEVENT_TYPE_NGWORD_TEXTBOX;
+ return;
}
if (id == window->ms_append_id) {
ret = cact_par(window->ms_append_id, wev);
{
WEVENT wev0;
WID main_wid, cfrm_wid, ngword_wid;
+ Bool open;
main_wid = dathmi_getmainWID(hmi);
cfrm_wid = dathmi_getcfrmWID(hmi);
wget_evt(&wev0, WAIT);
switch (wev0.s.type) {
case EV_NULL:
+ cidl_par(wev0.s.wid, &wev0.s.pos);
if ((wev0.s.wid != main_wid)&&(wev0.s.wid != cfrm_wid)&&(wev0.s.wid != ngword_wid)) {
hmi->evt.type = DATHMIEVENT_TYPE_COMMON_MOUSEMOVE;
hmi->evt.data.common_mousemove.pos = wev0.s.pos;
hmi->evt.type = DATHMIEVENT_TYPE_THREAD_MOUSEMOVE;
hmi->evt.data.main_mousemove.pos = wev0.s.pos;
hmi->evt.data.main_mousemove.stat = wev0.s.stat;
- } else if (wev0.s.wid == cfrm_wid) {
- cidl_par(wev0.s.wid, &wev0.s.pos);
- } else if (wev0.s.wid == ngword_wid) {
- cidl_par(wev0.s.wid, &wev0.s.pos);
}
break;
case EV_REQUEST:
break;
case EV_KEYDWN:
case EV_AUTKEY:
+ open = ngwordwindow_isopen(hmi->ngwordwindow);
+ if (open == True) {
+ memcpy(&hmi->ngwordwindow->savedwev, &wev0, sizeof(WEVENT));
+ hmi->evt.type = DATHMIEVENT_TYPE_NGWORD_TEXTBOX;
+ break;
+ }
hmi->evt.type = DATHMIEVENT_TYPE_COMMON_KEYDOWN;
hmi->evt.data.common_keydown.keycode = wev0.e.data.key.code;
hmi->evt.data.common_keydown.keytop = wev0.e.data.key.keytop;
IMPORT W ngwordwindow_open(ngwordwindow_t *window);
IMPORT W ngwordwindow_appendword(ngwordwindow_t *window, TC *str, W len);
IMPORT W ngwordwindow_removeword(ngwordwindow_t *window, TC *str, W len);
+IMPORT W ngwordwindow_starttextboxaction(ngwordwindow_t *window);
+#define NGWORDWINDOW_GETTEXTBOXACTION_FINISH 0
+#define NGWORDWINDOW_GETTEXTBOXACTION_MENU 1
+#define NGWORDWINDOW_GETTEXTBOXACTION_KEYMENU 2
+#define NGWORDWINDOW_GETTEXTBOXACTION_MOVE 3
+#define NGWORDWINDOW_GETTEXTBOXACTION_COPY 4
+IMPORT W ngwordwindow_gettextboxaction(ngwordwindow_t *window, TC *key);
+IMPORT W ngwordwindow_endtextboxaction(ngwordwindow_t *window);
enum {
DATHMIEVENT_TYPE_NONE,
DATHMIEVENT_TYPE_NGWORD_APPEND,
DATHMIEVENT_TYPE_NGWORD_REMOVE,
DATHMIEVENT_TYPE_NGWORD_CLOSE,
+ DATHMIEVENT_TYPE_NGWORD_TEXTBOX,
};
struct dathmi_eventdata_mousemove_t_ {
}
}
+LOCAL VOID bchan_event_ngwordtextbox(bchan_t *bchan)
+{
+ ngwordwindow_t *ngword;
+ W ret;
+ TC key;
+
+ ngword = bchan->ngword;
+
+ ngwordwindow_starttextboxaction(ngword);
+
+ for (;;) {
+ ret = ngwordwindow_gettextboxaction(ngword, &key);
+ if (ret < 0) {
+ break;
+ }
+ if (ret == NGWORDWINDOW_GETTEXTBOXACTION_FINISH) {
+ break;
+ } else if (ret == NGWORDWINDOW_GETTEXTBOXACTION_MENU) {
+ } else if (ret == NGWORDWINDOW_GETTEXTBOXACTION_KEYMENU) {
+ } else if (ret == NGWORDWINDOW_GETTEXTBOXACTION_MOVE) {
+ } else if (ret == NGWORDWINDOW_GETTEXTBOXACTION_COPY) {
+ }
+ }
+
+ ngwordwindow_endtextboxaction(ngword);
+}
+
LOCAL VOID bchan_eventdispatch(bchan_t *bchan, dathmi_t *hmi)
{
W sel, err;
datcache_removengword(bchan->cache, evt->data.ngword_remove.str, evt->data.ngword_remove.len);
ngwordwindow_removeword(bchan->ngword, evt->data.ngword_remove.str, evt->data.ngword_remove.len);
break;
+ case DATHMIEVENT_TYPE_NGWORD_TEXTBOX:
+ bchan_event_ngwordtextbox(bchan);
+ break;
case DATHMIEVENT_TYPE_NGWORD_CLOSE:
case DATHMIEVENT_TYPE_NONE:
default: