[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/macterm.c
From: |
Andrew Choi |
Subject: |
[Emacs-diffs] Changes to emacs/src/macterm.c |
Date: |
Mon, 14 Apr 2003 13:12:18 -0400 |
Index: emacs/src/macterm.c
diff -c emacs/src/macterm.c:1.41 emacs/src/macterm.c:1.42
*** emacs/src/macterm.c:1.41 Mon Mar 31 15:34:48 2003
--- emacs/src/macterm.c Mon Apr 14 13:12:17 2003
***************
*** 132,137 ****
--- 132,141 ----
int x_autoselect_window_p;
+ /* Non-zero means make use of UNDERLINE_POSITION font properties. */
+
+ int x_use_underline_position_properties;
+
/* Non-zero means draw block and hollow cursor as wide as the glyph
under it. For example, if a block cursor is over a tab, it will be
drawn as wide as that tab on the display. */
***************
*** 8571,8604 ****
}
void
! mac_check_for_quit_char()
{
EventRef event;
! /* If windows are not initialized, return immediately (keep it bouncin')*/
if (!mac_quit_char_modifiers)
return;
/* Redetermine modifiers because they are based on lisp variables */
! mac_determine_quit_char_modifiers();
/* Fill the queue with events */
ReceiveNextEvent (0, NULL, kEventDurationNoWait, false, &event);
! event = FindSpecificEventInQueue (GetMainEventQueue(), quit_char_comp,
NULL);
if (event)
{
struct input_event e;
! struct mac_output *mwp = (mac_output*) GetWRefCon
(FrontNonFloatingWindow ());
/* Use an input_event to emulate what the interrupt handler does. */
e.kind = ASCII_KEYSTROKE_EVENT;
e.code = quit_char;
e.arg = NULL;
e.modifiers = NULL;
! e.timestamp = EventTimeToTicks(GetEventTime(event))*(1000/60);
! XSETFRAME(e.frame_or_window, mwp->mFP);
/* Remove event from queue to prevent looping. */
! RemoveEventFromQueue(GetMainEventQueue(), event);
! ReleaseEvent(event);
! kbd_buffer_store_event(&e);
}
}
--- 8575,8621 ----
}
void
! mac_check_for_quit_char ()
{
EventRef event;
! static EMACS_TIME last_check_time = { 0, 0 };
! static EMACS_TIME one_second = { 1, 0 };
! EMACS_TIME now, t;
!
! /* If windows are not initialized, return immediately (keep it bouncin').
*/
if (!mac_quit_char_modifiers)
return;
+ /* Don't check if last check is less than a second ago. */
+ EMACS_GET_TIME (now);
+ EMACS_SUB_TIME (t, now, last_check_time);
+ if (EMACS_TIME_LT (t, one_second))
+ return;
+ last_check_time = now;
+
/* Redetermine modifiers because they are based on lisp variables */
! mac_determine_quit_char_modifiers ();
/* Fill the queue with events */
ReceiveNextEvent (0, NULL, kEventDurationNoWait, false, &event);
! event = FindSpecificEventInQueue (GetMainEventQueue (), quit_char_comp,
! NULL);
if (event)
{
struct input_event e;
! struct mac_output *mwp =
! (mac_output *) GetWRefCon (FrontNonFloatingWindow ());
/* Use an input_event to emulate what the interrupt handler does. */
e.kind = ASCII_KEYSTROKE_EVENT;
e.code = quit_char;
e.arg = NULL;
e.modifiers = NULL;
! e.timestamp = EventTimeToTicks (GetEventTime (event)) * (1000/60);
! XSETFRAME (e.frame_or_window, mwp->mFP);
/* Remove event from queue to prevent looping. */
! RemoveEventFromQueue (GetMainEventQueue (), event);
! ReleaseEvent (event);
! kbd_buffer_store_event (&e);
}
}
***************
*** 8766,8771 ****
--- 8783,8796 ----
DEFVAR_LISP ("x-toolkit-scroll-bars", &Vx_toolkit_scroll_bars,
doc: /* If not nil, Emacs uses toolkit scroll bars. */);
Vx_toolkit_scroll_bars = Qt;
+
+ DEFVAR_BOOL ("x-use-underline-position-properties",
+ &x_use_underline_position_properties,
+ doc: /* *Non-nil means make use of UNDERLINE_POSITION font properties.
+ nil means ignore them. If you encounter fonts with bogus
+ UNDERLINE_POSITION font properties, for example 7x13 on XFree prior
+ to 4.1, set this to nil. */);
+ x_use_underline_position_properties = 0;
staticpro (&last_mouse_motion_frame);
last_mouse_motion_frame = Qnil;