diff options
Diffstat (limited to 'src/gui_haiku.cc')
-rw-r--r-- | src/gui_haiku.cc | 43 |
1 files changed, 34 insertions, 9 deletions
diff --git a/src/gui_haiku.cc b/src/gui_haiku.cc index ff460adf29..78ca7b27ad 100644 --- a/src/gui_haiku.cc +++ b/src/gui_haiku.cc @@ -1145,10 +1145,11 @@ VimFormView::FrameResized(float new_width, float new_height) VimTextAreaView::VimTextAreaView(BRect frame): BView(frame, "VimTextAreaView", B_FOLLOW_ALL_SIDES, #ifdef FEAT_MBYTE_IME - B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE | B_INPUT_METHOD_AWARE), + B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE | B_INPUT_METHOD_AWARE #else - B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE), + B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE #endif + ), mouseDragEventCount(0) { #ifdef FEAT_MBYTE_IME @@ -3093,7 +3094,7 @@ gui_haiku_process_event(bigtime_t timeout) } } #else - add_to_input_buf_csi(string, len); + add_to_input_buf_csi(string, len); #endif else add_to_input_buf(string, len); @@ -4437,15 +4438,16 @@ gui_mch_wait_for_chars( int wtime) { int focus; - bigtime_t until, timeout; - status_t st; + bigtime_t until, timeout; + status_t st; - if (wtime >= 0) { + if (wtime >= 0) + { timeout = wtime * 1000; until = system_time() + timeout; - } else { - timeout = B_INFINITE_TIMEOUT; } + else + timeout = B_INFINITE_TIMEOUT; focus = gui.in_focus; for (;;) @@ -4461,6 +4463,28 @@ gui_mch_wait_for_chars( } gui_mch_flush(); + +#ifdef MESSAGE_QUEUE +# ifdef FEAT_TIMERS + did_add_timer = FALSE; +# endif + parse_queued_messages(); +# ifdef FEAT_TIMERS + if (did_add_timer) + // Need to recompute the waiting time. + break; +# endif +# ifdef FEAT_JOB_CHANNEL + if (has_any_channel()) + { + if (wtime < 0 || timeout > 20000) + timeout = 20000; + } + else if (wtime < 0) + timeout = B_INFINITE_TIMEOUT; +# endif +#endif + /* * Don't use gui_mch_update() because then we will spin-lock until a * char arrives, instead we use gui_haiku_process_event() to hang until @@ -4478,7 +4502,8 @@ gui_mch_wait_for_chars( * Calculate how much longer we're willing to wait for the * next event. */ - if (wtime >= 0) { + if (wtime >= 0) + { timeout = until - system_time(); if (timeout < 0) break; |