Commit ba301db3 authored by Adrian Robert's avatar Adrian Robert

* nsfns.m (ns-read-file-name): BLOCK_INPUT while showing dialog. \n \n*...

* nsfns.m (ns-read-file-name): BLOCK_INPUT while showing dialog. \n \n* nsmenu.m (pop_down_menu): Check popup_activated_flag. \n(ns_popup_dialog, EmacsDialogPanel-runDialogAt:): Let \npop_down_menu do the cleanup work as it is always called. (Bug#2154) \n \n* nsfont.m (nsfont_make_fontset_for_font): For now, don't try to \nset fontset font for 'mathematical-' sub-scripts. (Bug #2218)\n
parent 5ae6e65f
2009-02-13 Adrian Robert <Adrian.B.Robert@gmail.com>
* nsfns.m (ns-read-file-name): BLOCK_INPUT while showing dialog.
* nsmenu.m (pop_down_menu): Check popup_activated_flag.
(ns_popup_dialog, EmacsDialogPanel-runDialogAt:): Let
pop_down_menu do the cleanup work as it is always called. (Bug#2154)
* nsfont.m (nsfont_make_fontset_for_font): For now, don't try to
set fontset font for "mathematical-" sub-scripts. (Bug #2218)
2009-02-12 Stefan Monnier <monnier@iro.umontreal.ca>
* keyboard.c (adjust_point_for_property): Allow stopping betwen two
......
......@@ -1449,7 +1449,7 @@ Turn the input menu (an NSMenu) into a lisp list for tracking on lisp side
static id fileDelegate = nil;
int ret;
id panel;
NSString *fname;
Lisp_Object fname;
NSString *promptS = NILP (prompt) || !STRINGP (prompt) ? nil :
[NSString stringWithUTF8String: SDATA (prompt)];
......@@ -1482,6 +1482,7 @@ Turn the input menu (an NSMenu) into a lisp list for tracking on lisp side
[panel setDelegate: fileDelegate];
panelOK = 0;
BLOCK_INPUT;
if (NILP (isLoad))
{
ret = [panel runModalForDirectory: dirS file: initS];
......@@ -1494,11 +1495,13 @@ Turn the input menu (an NSMenu) into a lisp list for tracking on lisp side
ret = (ret == NSOKButton) || panelOK;
fname = [panel filename];
if (ret)
fname = build_string ([[panel filename] UTF8String]);
[[FRAME_NS_VIEW (SELECTED_FRAME ()) window] makeKeyWindow];
UNBLOCK_INPUT;
return ret ? build_string ([fname UTF8String]) : Qnil;
return ret ? fname : Qnil;
}
......@@ -2644,6 +2647,7 @@ - (NSString *)panel: (id)sender userEnteredFilename: (NSString *)filename
#endif
/* ==========================================================================
Lisp interface declaration
......
......@@ -1235,7 +1235,13 @@ void nsfont_make_fontset_for_font (Lisp_Object name, Lisp_Object font_object)
font_info->name, family,
SDATA (SYMBOL_NAME (scripts[i])));
Fset_fontset_font (name, scripts[i], famAndReg, Qnil, Qnil);
/* TODO: Some of the "scripts" in script-representative-chars are
actually only "sub-scripts" which are not fully defined. For
these, calling set_fontset_font generates an abort. Try to
guess which ones these are and avoid it. */
if (strstr (SDATA (SYMBOL_NAME (scripts[i])), "mathematical-")
!= SDATA (SYMBOL_NAME (scripts[i])))
Fset_fontset_font (name, scripts[i], famAndReg, Qnil, Qnil);
free (family);
}
else
......
......@@ -1494,12 +1494,15 @@ - (NSRect) frame
pop_down_menu (Lisp_Object arg)
{
struct Lisp_Save_Value *p = XSAVE_VALUE (arg);
popup_activated_flag = 0;
BLOCK_INPUT;
[NSApp endModalSession: popupSession];
[((EmacsDialogPanel *) (p->pointer)) close];
[[FRAME_NS_VIEW (SELECTED_FRAME ()) window] makeKeyWindow];
UNBLOCK_INPUT;
if (popup_activated_flag)
{
popup_activated_flag = 0;
BLOCK_INPUT;
[NSApp endModalSession: popupSession];
[((EmacsDialogPanel *) (p->pointer)) close];
[[FRAME_NS_VIEW (SELECTED_FRAME ()) window] makeKeyWindow];
UNBLOCK_INPUT;
}
return Qnil;
}
......@@ -1565,12 +1568,8 @@ - (NSRect) frame
record_unwind_protect (pop_down_menu, make_save_value (dialog, 0));
popup_activated_flag = 1;
tem = [dialog runDialogAt: p];
popup_activated_flag = 0;
unbind_to (specpdl_count, Qnil);
unbind_to (specpdl_count, Qnil); /* calls pop_down_menu */
}
[dialog close];
[[FRAME_NS_VIEW (SELECTED_FRAME ()) window] makeKeyWindow];
UNBLOCK_INPUT;
return tem;
......@@ -1879,6 +1878,7 @@ - (Lisp_Object)runDialogAt: (NSPoint)p
{
int ret;
/* initiate a session that will be ended by pop_down_menu */
popupSession = [NSApp beginModalSessionForWindow: self];
while (popup_activated_flag
&& (ret = [NSApp runModalSession: popupSession])
......@@ -1889,7 +1889,6 @@ - (Lisp_Object)runDialogAt: (NSPoint)p
timer_check (1);
[NSThread sleepUntilDate: [NSDate dateWithTimeIntervalSinceNow: 0.1]];
}
[NSApp endModalSession: popupSession];
{ /* FIXME: BIG UGLY HACK!!! */
Lisp_Object tmp;
......
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