return sizeof (struct haiku_refs_event);
case APP_QUIT_REQUESTED_EVENT:
return sizeof (struct haiku_app_quit_requested_event);
+ case DUMMY_EVENT:
+ return sizeof (struct haiku_dummy_event);
}
emacs_abort ();
be_popup_menu_thread_entry (void *thread_data)
{
struct be_popup_menu_data *data;
+ struct haiku_dummy_event dummy;
BMenuItem *it;
data = (struct be_popup_menu_data *) thread_data;
else
popup_track_message = NULL;
+ haiku_write (DUMMY_EVENT, &dummy);
return 0;
}
Highlight (bool highlight_p)
{
struct haiku_menu_bar_help_event rq;
+ struct haiku_dummy_event dummy;
BMenu *menu = Menu ();
BRect r;
BPoint pt;
if (menu_bar_id > 0)
haiku_write (MENU_BAR_HELP_EVENT, &rq);
else
- haiku_write_without_signal (MENU_BAR_HELP_EVENT, &rq, true);
+ {
+ haiku_write_without_signal (MENU_BAR_HELP_EVENT, &rq, true);
+ haiku_write (DUMMY_EVENT, &dummy);
+ }
}
}
while (true)
{
+ process_pending_signals_function ();
+
if ((stat = wait_for_objects_etc ((object_wait_info *) &infos, 2,
B_RELATIVE_TIMEOUT, 10000)) < B_OK)
{
- if (stat == B_INTERRUPTED)
+ if (stat == B_INTERRUPTED || stat == B_TIMED_OUT)
continue;
- else if (stat == B_TIMED_OUT)
- {
- process_pending_signals_function ();
- continue;
- }
else
gui_abort ("Failed to wait for popup");
}
MENU_BAR_HELP_EVENT,
ZOOM_EVENT,
REFS_EVENT,
- APP_QUIT_REQUESTED_EVENT
+ APP_QUIT_REQUESTED_EVENT,
+ DUMMY_EVENT
};
struct haiku_quit_requested_event
char dummy;
};
+struct haiku_dummy_event
+{
+ char dummy;
+};
+
#define HAIKU_MODIFIER_ALT (1)
#define HAIKU_MODIFIER_CTRL (1 << 1)
#define HAIKU_MODIFIER_SHIFT (1 << 2)