Commit 167e3640 authored by Jan Djärv's avatar Jan Djärv

* nsterm.m (hold_event_q): New static variable.

(EV_TRAILER, sendScrollEventAtLoc:fromEvent:): Call hold_event if
! q_event_ptr.
(hold_event): New function.
(ns_read_socket): If hold_event_q have events, store them and
return.
(setPosition:portion:whole:): Send SIGIO to ourselves if apploopnr
is zero (Bug#12384).
parent c40239df
2012-10-12 Jan Djärv <jan.h.d@swipnet.se>
* nsterm.m (hold_event_q): New static variable.
(EV_TRAILER, sendScrollEventAtLoc:fromEvent:): Call hold_event if
! q_event_ptr.
(hold_event): New function.
(ns_read_socket): If hold_event_q have events, store them and
return (Bug#12384).
(setPosition:portion:whole:): Send SIGIO to ourselves if apploopnr
is zero (Bug#12384).
2012-10-12 Juanma Barranquero <lekktu@gmail.com>
* makefile.w32-in ($(BLD)/w32select.$(O)): Update dependencies.
......
......@@ -208,6 +208,13 @@ Updated by Christian Limpach (chris@nice.ch)
*ns_pending_service_args;
static BOOL ns_do_open_file = NO;
static struct {
struct input_event *q;
int nr, cap;
} hold_event_q = {
NULL, 0, 0
};
/* Convert modifiers in a NeXTstep event to emacs style modifiers. */
#define NS_FUNCTION_KEY_MASK 0x800000
#define NSLeftControlKeyMask (0x000001 | NSControlKeyMask)
......@@ -273,7 +280,7 @@ Updated by Christian Limpach (chris@nice.ch)
kbd_buffer_store_event_hold (emacs_event, q_event_ptr); \
} \
else \
kbd_buffer_store_event (emacs_event); \
hold_event (emacs_event); \
EVENT_INIT (*emacs_event); \
ns_send_appdefined (-1); \
}
......@@ -292,6 +299,19 @@ Updated by Christian Limpach (chris@nice.ch)
========================================================================== */
static void
hold_event (struct input_event *event)
{
if (hold_event_q.nr == hold_event_q.cap)
{
if (hold_event_q.cap == 0) hold_event_q.cap = 10;
else hold_event_q.cap *= 2;
hold_event_q.q = (struct input_event *)
xrealloc (hold_event_q.q, hold_event_q.cap * sizeof (*hold_event_q.q));
}
hold_event_q.q[hold_event_q.nr++] = *event;
}
static Lisp_Object
append2 (Lisp_Object list, Lisp_Object item)
......@@ -3348,6 +3368,15 @@ overwriting cursor (usually when cursor on a tab) */
if ([NSApp modalWindow] != nil)
return -1;
if (hold_event_q.nr > 0)
{
int i;
for (i = 0; i < hold_event_q.nr; ++i)
kbd_buffer_store_event_hold (&hold_event_q.q[i], hold_quit);
hold_event_q.nr = 0;
return i;
}
block_input ();
n_emacs_events_pending = 0;
EVENT_INIT (ev);
......@@ -6645,6 +6674,12 @@ - (int) checkSamePosition: (int) position portion: (int) portion
[self setFloatValue: pos knobProportion: por];
#endif
}
/* Events may come here even if the event loop is not running.
If we don't enter the event loop, the scroll bar will not update.
So send SIGIO to ourselves. */
if (apploopnr == 0) kill (0, SIGIO);
return self;
}
......@@ -6685,7 +6720,7 @@ - (void) sendScrollEventAtLoc: (float)loc fromEvent: (NSEvent *)e
kbd_buffer_store_event_hold (emacs_event, q_event_ptr);
}
else
kbd_buffer_store_event (emacs_event);
hold_event (emacs_event);
EVENT_INIT (*emacs_event);
ns_send_appdefined (-1);
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment