src/mess/osd/windows/dialog.c
| r764 | r765 | |
| 114 | 114 | UINT_PTR timer; |
| 115 | 115 | WORD pos; |
| 116 | 116 | BOOL is_analog; |
| 117 | | int record_first_insert; |
| 117 | int start_poll; |
| 118 | 118 | }; |
| 119 | 119 | |
| 120 | 120 | |
| r764 | r765 | |
| 1100 | 1100 | seqselect_info *stuff; |
| 1101 | 1101 | HWND editwnd; |
| 1102 | 1102 | int ret; |
| 1103 | win_window_info fake_window_info; |
| 1104 | win_window_info *old_window_list; |
| 1103 | 1105 | |
| 1104 | 1106 | // get the basics |
| 1105 | 1107 | editwnd = (HWND) param; |
| r764 | r765 | |
| 1109 | 1111 | // unpause ourselves or else we will block |
| 1110 | 1112 | winwindow_ui_pause_from_main_thread(FALSE); |
| 1111 | 1113 | |
| 1112 | | // we are in the middle of selecting a seq; we need to poll |
| 1113 | | wininput_poll(); |
| 1114 | // butt ugly hack so that we accept focus |
| 1115 | old_window_list = win_window_list; |
| 1116 | memset(&fake_window_info, 0, sizeof(fake_window_info)); |
| 1117 | fake_window_info.hwnd = GetFocus(); |
| 1118 | win_window_list = &fake_window_info; |
| 1114 | 1119 | |
| 1115 | | ret = input_seq_poll(&stuff->newcode); |
| 1116 | | if (ret >= 0) |
| 1120 | // start polling if we are told to |
| 1121 | if (stuff->start_poll) |
| 1117 | 1122 | { |
| 1118 | | stuff->record_first_insert = ret != 0; |
| 1119 | | seqselect_settext(editwnd); |
| 1120 | | // FIXME |
| 1121 | | // input_seq_poll_start(stuff->is_analog); |
| 1123 | input_seq_poll_start(stuff->is_analog ? ITEM_CLASS_ABSOLUTE : ITEM_CLASS_SWITCH, NULL); |
| 1124 | stuff->start_poll = FALSE; |
| 1122 | 1125 | } |
| 1123 | 1126 | |
| 1127 | // poll |
| 1128 | ret = input_seq_poll(&stuff->newcode); |
| 1129 | seqselect_settext(editwnd); |
| 1130 | |
| 1131 | // clean up after hack |
| 1132 | win_window_list = old_window_list; |
| 1133 | |
| 1124 | 1134 | // repause the OSD code |
| 1125 | 1135 | winwindow_ui_pause_from_main_thread(TRUE); |
| 1126 | 1136 | } |
| r764 | r765 | |
| 1170 | 1180 | if (msg == WM_SETFOCUS) |
| 1171 | 1181 | { |
| 1172 | 1182 | // we are selecting a seq; begin a timer |
| 1173 | | // FIXME |
| 1174 | | // seq_read_async_start(stuff->is_analog); |
| 1175 | | stuff->record_first_insert = 1; |
| 1183 | stuff->start_poll = TRUE; |
| 1176 | 1184 | stuff->timer = SetTimer(editwnd, TIMER_ID, 100, (TIMERPROC) NULL); |
| 1177 | 1185 | } |
| 1178 | 1186 | break; |