+2013-04-05 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Consistently use platform-specific function to detect window system.
+ * lisp.h (check_window_system): New prototype. This function is
+ going to replace check_x, check_w32 and check_ns.
+ (have_menus_p): Mention msdos.c in comment.
+ * fontset.c (check_window_system_func): Remove. Adjust all users.
+ * fontset.h (check_window_system_func): Remove prototype.
+ * nsterm.h (check_ns):
+ * xterm.h (check_x):
+ * w32term.h (check_w32): Likewise.
+ * menu.c (Fx_popup_menu): Use check_window_system.
+ * msdos.c (check_window_system): Define for MS-DOS.
+ * nsfns.m (check_window_system): Define for NS. Adjust all users.
+ * w32fns.c (check_window_system): Likewise for MS-Windows.
+ * xfns.c (check_window_system): Likewise for X.
+ * font.c, frame.c, nsmenu.m, nsselect.m, nsterm.m, w32menu.c:
+ * xfaces.c, xmenu.c: Use check_window_system where appropriate.
+
2013-04-02 Paul Eggert <eggert@cs.ucla.edu>
Prefer < to > in range checks such as 0 <= i && i < N.
Lisp_Object info;
Lisp_Object font_object;
- (*check_window_system_func) ();
+ check_window_system ();
if (! FONTP (name))
CHECK_STRING (name);
font for each character. */
static Lisp_Object Vdefault_fontset;
-/* Check if any window system is used now. */
-void (*check_window_system_func) (void);
-
-
/* Prototype declarations for static functions. */
static Lisp_Object make_fontset (Lisp_Object, Lisp_Object, Lisp_Object);
Lisp_Object fontset;
int id;
- (*check_window_system_func) ();
+ check_window_system ();
CHECK_STRING (pattern);
Lisp_Object val, elt;
int c, i, j, k;
- (*check_window_system_func) ();
+ check_window_system ();
fontset = check_fontset_name (fontset, &frame);
#ifndef EMACS_FONTSET_H
#define EMACS_FONTSET_H
-/* Check if any window system is used now. */
-extern void (*check_window_system_func) (void);
-
struct face;
extern void free_face_fontset (FRAME_PTR, struct face *);
(Lisp_Object attribute, Lisp_Object class, Lisp_Object component,
Lisp_Object subclass)
{
-#ifdef HAVE_X_WINDOWS
- check_x ();
-#endif
+ check_window_system ();
return xrdb_get_resource (check_x_display_info (Qnil)->xrdb,
attribute, class, component, subclass);
extern char *x_get_keysym_name (int);
#endif /* HAVE_WINDOW_SYSTEM */
+#if defined(HAVE_WINDOW_SYSTEM) || defined (MSDOS)
+/* Defined in (x|w32)fns.c, nsfns.m, msdos.c. */
+extern void check_window_system (void);
+#endif
+
#ifdef HAVE_LIBXML2
/* Defined in xml.c. */
extern void syms_of_xml (void);
#endif
#ifdef HAVE_MENUS
-/* Defined in (x|w32)fns.c, nsfns.m... */
+/* Defined in (x|w32)fns.c, nsfns.m, msdos.c. */
extern int have_menus_p (void);
#endif
#ifdef HAVE_MENUS
{
bool get_current_pos_p = 0;
- /* FIXME!! check_w32 (); or check_x (); or check_ns (); */
+
+ check_window_system ();
/* Decode the first argument: find the window and the coordinates. */
if (EQ (position, Qt)
/* We are not X, but we can emulate it well enough for our needs... */
void
-check_x (void)
+check_window_system (void)
{
if (! FRAME_MSDOS_P (SELECTED_FRAME ()))
error ("Not running under a window system");
void
-check_ns (void)
+check_window_system (void)
{
if (NSApp == nil)
error ("OpenStep is not in use or not initialized");
Lisp_Object tfont, tfontsize;
static int desc_ctr = 1;
- check_ns ();
+ check_window_system ();
/* x_get_arg modifies parms. */
parms = Fcopy_alist (parms);
id fm;
struct frame *f;
- check_ns ();
+ check_window_system ();
fm = [NSFontManager sharedFontManager];
if (NILP (frame))
f = SELECTED_FRAME ();
{
struct frame *f;
- check_ns ();
+ check_window_system ();
if (NILP (frame))
f = SELECTED_FRAME ();
else
NSString *initS = NILP (init) || !STRINGP (init) ? nil :
[NSString stringWithUTF8String: SSDATA (init)];
- check_ns ();
+ check_window_system ();
if (fileDelegate == nil)
fileDelegate = [EmacsFileDelegate new];
{
const char *value;
- check_ns ();
+ check_window_system ();
if (NILP (owner))
owner = build_string([ns_app_name UTF8String]);
CHECK_STRING (name);
If VALUE is nil, the default is removed. */)
(Lisp_Object owner, Lisp_Object name, Lisp_Object value)
{
- check_ns ();
+ check_window_system ();
if (NILP (owner))
owner = build_string ([ns_app_name UTF8String]);
CHECK_STRING (name);
doc: /* This function is a no-op. It is only present for completeness. */)
(Lisp_Object display)
{
- check_ns ();
+ check_window_system ();
/* This function has no real equivalent under NeXTstep. Return nil to
indicate this. */
return Qnil;
{
int num;
- check_ns ();
+ check_window_system ();
num = [[NSScreen screens] count];
return (num != 0) ? make_number (num) : Qnil;
If omitted or nil, the selected frame's display is used. */)
(Lisp_Object display)
{
- check_ns ();
+ check_window_system ();
return make_number ((int)
([ns_get_screen (display) frame].size.height/(92.0/25.4)));
}
If omitted or nil, the selected frame's display is used. */)
(Lisp_Object display)
{
- check_ns ();
+ check_window_system ();
return make_number ((int)
([ns_get_screen (display) frame].size.width/(92.0/25.4)));
}
If omitted or nil, the selected frame's display is used. */)
(Lisp_Object display)
{
- check_ns ();
+ check_window_system ();
switch ([ns_get_window (display) backingType])
{
case NSBackingStoreBuffered:
(Lisp_Object display)
{
NSWindowDepth depth;
- check_ns ();
+ check_window_system ();
depth = [ns_get_screen (display) depth];
if ( depth == NSBestDepth (NSCalibratedWhiteColorSpace, 2, 2, YES, NULL))
If omitted or nil, the selected frame's display is used. */)
(Lisp_Object display)
{
- check_ns ();
+ check_window_system ();
switch ([ns_get_window (display) backingType])
{
case NSBackingStoreBuffered:
The argument DISPLAY is currently ignored. */)
(Lisp_Object display)
{
- check_ns ();
+ check_window_system ();
/*ns_delete_terminal (dpyinfo->terminal); */
[NSApp terminate: NSApp];
return Qnil;
doc: /* Hides all applications other than Emacs. */)
(void)
{
- check_ns ();
+ check_window_system ();
[NSApp hideOtherApplications: NSApp];
return Qnil;
}
the active application. */)
(Lisp_Object on)
{
- check_ns ();
+ check_window_system ();
if (EQ (on, intern ("activate")))
{
[NSApp unhide: NSApp];
doc: /* Shows the 'Info' or 'About' panel for Emacs. */)
(void)
{
- check_ns ();
+ check_window_system ();
[NSApp orderFrontStandardAboutPanel: nil];
return Qnil;
}
NSMenu *svcs;
id delegate;
- check_ns ();
+ check_window_system ();
svcs = [[NSMenu alloc] initWithTitle: @"Services"];
[NSApp setServicesMenu: svcs];
[NSApp registerServicesMenuSendTypes: ns_send_types
char *utfStr;
CHECK_STRING (service);
- check_ns ();
+ check_window_system ();
utfStr = SSDATA (service);
svcName = [NSString stringWithUTF8String: utfStr];
NSEvent *nxev;
CHECK_STRING (script);
- check_ns ();
+ check_window_system ();
block_input ();
/* remove appname prefix; TODO: allow for !="Emacs" */
char *toCheck = class + (!strncmp (class, "Emacs.", 6) ? 6 : 0);
const char *res;
- check_ns ();
+ check_window_system ();
if (inhibit_x_resources)
/* --quick was passed, so this is a no-op. */
(Lisp_Object color, Lisp_Object frame)
{
NSColor * col;
- check_ns ();
+ check_window_system ();
return ns_lisp_to_color (color, &col) ? Qnil : Qt;
}
NSColor * col;
CGFloat red, green, blue, alpha;
- check_ns ();
+ check_window_system ();
CHECK_STRING (color);
if (ns_lisp_to_color (color, &col))
{
NSWindowDepth depth;
NSString *colorSpace;
- check_ns ();
+ check_window_system ();
depth = [ns_get_screen (display) depth];
colorSpace = NSColorSpaceFromDepth (depth);
(Lisp_Object display)
{
NSWindowDepth depth;
- check_ns ();
+ check_window_system ();
depth = [ns_get_screen (display) depth];
return NSBitsPerPixelFromDepth (depth) > 1 ? Qt : Qnil;
If omitted or nil, that stands for the selected frame's display. */)
(Lisp_Object display)
{
- check_ns ();
+ check_window_system ();
return make_number ((int) [ns_get_screen (display) frame].size.width);
}
If omitted or nil, that stands for the selected frame's display. */)
(Lisp_Object display)
{
- check_ns ();
+ check_window_system ();
return make_number ((int) [ns_get_screen (display) frame].size.height);
}
NSScreen *screen;
NSRect vScreen;
- check_ns ();
+ check_window_system ();
screen = ns_get_screen (display);
if (!screen)
return Qnil;
If omitted or nil, that stands for the selected frame's display. */)
(Lisp_Object display)
{
- check_ns ();
+ check_window_system ();
return make_number
(NSBitsPerPixelFromDepth ([ns_get_screen (display) depth]));
}
(Lisp_Object display)
{
struct ns_display_info *dpyinfo;
- check_ns ();
+ check_window_system ();
dpyinfo = check_ns_display_info (display);
/* We force 24+ bit depths to 24-bit to prevent an overflow. */
defsubr (&Sx_show_tip);
defsubr (&Sx_hide_tip);
- /* used only in fontset.c */
- check_window_system_func = check_ns;
-
as_status = 0;
as_script = Qnil;
as_result = 0;
NSTRACE (x-popup-dialog);
- check_ns ();
+ check_window_system ();
isQ = NILP (header);
Lisp_Object target_symbol, data;
- check_ns ();
+ check_window_system ();
CHECK_SYMBOL (selection);
if (NILP (value))
error ("selection value may not be nil.");
(Lisp_Object selection, Lisp_Object time_object, Lisp_Object terminal)
{
id pb;
- check_ns ();
+ check_window_system ();
CHECK_SYMBOL (selection);
if (NILP (assq_no_quit (selection, Vselection_alist))) return Qnil;
id pb;
NSArray *types;
- check_ns ();
+ check_window_system ();
CHECK_SYMBOL (selection);
if (EQ (selection, Qnil)) selection = QPRIMARY;
if (EQ (selection, Qt)) selection = QSECONDARY;
On Nextstep, TERMINAL is unused. */)
(Lisp_Object selection, Lisp_Object terminal)
{
- check_ns ();
+ check_window_system ();
CHECK_SYMBOL (selection);
if (EQ (selection, Qnil)) selection = QPRIMARY;
if (EQ (selection, Qt)) selection = QSECONDARY;
{
Lisp_Object val;
- check_ns ();
+ check_window_system ();
CHECK_SYMBOL (selection_name);
CHECK_SYMBOL (target_type);
val = ns_get_local_selection (selection_name, target_type);
(Lisp_Object selection)
{
id pb;
- check_ns ();
+ check_window_system ();
pb = ns_symbol_to_pb (selection);
return pb != nil ? ns_string_from_pasteboard (pb) : Qnil;
}
(Lisp_Object selection, Lisp_Object string)
{
id pb;
- check_ns ();
+ check_window_system ();
pb = ns_symbol_to_pb (selection);
if (pb != nil) ns_string_to_pasteboard (pb, string);
return Qnil;
extern const char *ns_xlfd_to_fontname (const char *xlfd);
-extern void check_ns (void);
extern Lisp_Object ns_map_event_to_object (void);
#ifdef __OBJC__
extern Lisp_Object ns_string_from_pasteboard (id pb);
-------------------------------------------------------------------------- */
{
NSView *view = FRAME_NS_VIEW (f);
- check_ns ();
+ check_window_system ();
block_input ();
if (FRAME_VISIBLE_P (f))
[[view window] makeKeyAndOrderFront: NSApp];
-------------------------------------------------------------------------- */
{
NSView *view = FRAME_NS_VIEW (f);
- check_ns ();
+ check_window_system ();
block_input ();
[[view window] orderBack: NSApp];
unblock_input ();
{
NSView * view = FRAME_NS_VIEW (f);
NSTRACE (x_make_frame_invisible);
- check_ns ();
+ check_window_system ();
[[view window] orderOut: NSApp];
SET_FRAME_VISIBLE (f, 0);
SET_FRAME_ICONIFIED (f, 0);
NSView * view = FRAME_NS_VIEW (f);
struct ns_display_info *dpyinfo = FRAME_NS_DISPLAY_INFO (f);
NSTRACE (x_iconify_frame);
- check_ns ();
+ check_window_system ();
if (dpyinfo->x_highlight_frame == f)
dpyinfo->x_highlight_frame = 0;
struct ns_display_info *dpyinfo = FRAME_NS_DISPLAY_INFO (f);
Mouse_HLInfo *hlinfo = MOUSE_HL_INFO (f);
NSTRACE (x_free_frame_resources);
- check_ns ();
+ check_window_system ();
[(EmacsView *)view setWindowClosing: YES]; /* may not have been informed */
-------------------------------------------------------------------------- */
{
NSTRACE (x_destroy_window);
- check_ns ();
+ check_window_system ();
x_free_frame_resources (f);
ns_window_num--;
}
\f
/* Error if we are not connected to MS-Windows. */
void
-check_w32 (void)
+check_window_system (void)
{
if (! w32_in_use)
error ("MS-Windows not in use or not initialized");
Lisp_Object buffer;
struct buffer *old_buffer;
- check_w32 ();
+ check_window_system ();
/* Use this general default value to start with until we know if
this frame has a specified name. */
defsubr (&Sdefault_printer_name);
defsubr (&Sset_message_beep);
- check_window_system_func = check_w32;
-
hourglass_hwnd = NULL;
defsubr (&Sx_show_tip);
FRAME_PTR f = NULL;
Lisp_Object window;
- check_w32 ();
+ check_window_system ();
/* Decode the first argument: find the window or frame to use. */
if (EQ (position, Qt)
extern struct w32_display_info *w32_term_init (Lisp_Object,
char *, char *);
-extern void check_w32 (void);
extern int w32_defined_color (FRAME_PTR f, const char *color,
XColor *color_def, int alloc);
extern void x_set_window_size (struct frame *f, int change_grav,
#undef FRAME_X_DISPLAY_INFO
#define FRAME_X_DISPLAY_INFO FRAME_W32_DISPLAY_INFO
#define x_display_info w32_display_info
-#define check_x check_w32
#define GCGraphicsExposures 0
#endif /* HAVE_NTGUI */
#undef FRAME_X_DISPLAY_INFO
#define FRAME_X_DISPLAY_INFO FRAME_NS_DISPLAY_INFO
#define x_display_info ns_display_info
-#define check_x check_ns
#define GCGraphicsExposures 0
#endif /* HAVE_NS */
#endif /* HAVE_WINDOW_SYSTEM */
struct frame *f;
int size, avgwidth IF_LINT (= 0);
- check_x ();
+ check_window_system ();
CHECK_STRING (pattern);
if (! NILP (maximum))
/* Error if we are not connected to X. */
void
-check_x (void)
+check_window_system (void)
{
if (! x_in_use)
error ("X windows are not in use or not initialized");
Lisp_Object buffer;
struct buffer *old_buffer;
- check_x ();
+ check_window_system ();
if (!dpyinfo->terminal->name)
error ("Terminal is not live, can't create new frames on it");
ptrdiff_t count = SPECPDL_INDEX ();
struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5, gcpro6;
- check_x ();
+ check_window_system ();
GCPRO6 (prompt, dir, default_filename, mustmatch, only_dir_p, file);
struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5, gcpro6;
char *cdef_file;
- check_x ();
+ check_window_system ();
GCPRO6 (prompt, dir, default_filename, mustmatch, only_dir_p, file);
struct gcpro gcpro1, gcpro2;
ptrdiff_t count = SPECPDL_INDEX ();
- check_x ();
+ check_window_system ();
if (popup_activated ())
error ("Trying to use a menu from within a menu-entry");
defsubr (&Sx_focus_frame);
defsubr (&Sx_backspace_delete_keys_p);
- /* Setting callback functions for fontset handler. */
- check_window_system_func = check_x;
-
defsubr (&Sx_show_tip);
defsubr (&Sx_hide_tip);
tip_timer = Qnil;
FRAME_PTR f = NULL;
Lisp_Object window;
- check_x ();
+ check_window_system ();
/* Decode the first argument: find the window or frame to use. */
if (EQ (position, Qt)
extern int use_xim;
#endif
-/* This checks to make sure we have a display. */
-
-extern void check_x (void);
-
extern struct frame *x_window_to_frame (struct x_display_info *, int);
extern struct frame *x_any_window_to_frame (struct x_display_info *, int);
extern struct frame *x_menubar_window_to_frame (struct x_display_info *,