From c6c62e780c0a8023d59dcda99a80d9c525bd3912 Mon Sep 17 00:00:00 2001 From: David Reitter Date: Sat, 14 Mar 2009 21:19:56 +0000 Subject: [PATCH] Unify shutdown handling under NS, via ns-power-off key event (where appropriate) and save-buffers-kill-emacs. remove NS-specific preferences window that used to show NS-specific preferences. Integrate preferences in Lisp accessible customization system where possible. Remove ns-expand-space, because it can be set only during fontloading (i.e. not at runtime), and because of redundancy with line-spacing frame parameter. Remove loading of most and saving of all NS resources (from org.gnu.Emacs.plist). nsterm.m (ns_shutdown_properly, -terminate): remove global state variable as it was never reset (ns_term_init): remove initialization of Lisp-settable defaults and ns_expand_space (-setPanelFromDefaultValues): remove ns_expand_space. (-showPreferencesWindow): send new KEY_NS_SHOW_PREFS key. nsfont.m (nsfont_open): remove ns_expand_space, assume -0.5 i.e. no additional spacing, similar to Carbon port. nsterm.h: define KEY_NS_SHOW_PREFS key. nsfns.m (ns-popup-prefs-panel): remove. term/ns-win.el (ns-expand-space): remove. (ns-show-prefs event): run `customize'. (ns-power-off): run `save-buffers-kill-emacs', but ask user whether to save files (as is standard) (clipboard-yank, clipboard-kill-ring-save, clipboard-kill-region) (menu-bar-enable-clipboard): do not undefine these. (ns-save-preferences,ns-save-options,ns-show-preferences-help): remove. --- lisp/ChangeLog | 10 ++ lisp/term/ns-win.el | 147 ++---------------------- src/ChangeLog | 14 +++ src/nsfns.m | 12 -- src/nsfont.m | 12 +- src/nsterm.h | 48 +------- src/nsterm.m | 321 ++++++---------------------------------------------- 7 files changed, 76 insertions(+), 488 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index fe15ce23a1c..2d000fd3acb 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,13 @@ +2009-03-14 David Reitter + + * term/ns-win.el (ns-expand-space): remove. + (ns-show-prefs event): run `customize'. + (ns-power-off): run `save-buffers-kill-emacs', but ask user + whether to save files (as is standard) + (clipboard-yank, clipboard-kill-ring-save, clipboard-kill-region) + (menu-bar-enable-clipboard): do not undefine these. + (ns-save-preferences,ns-save-options,ns-show-preferences-help): remove. + 2009-03-14 Glenn Morris * mail/sendmail.el (mail-interactive): Doc fix. diff --git a/lisp/term/ns-win.el b/lisp/term/ns-win.el index 96e62144d4c..a5acf70301f 100644 --- a/lisp/term/ns-win.el +++ b/lisp/term/ns-win.el @@ -283,8 +283,7 @@ The properties returned may include `top', `left', `height', and `width'." ;; Special Nextstep-generated events are converted to function keys. Here ;; are the bindings for them. -(define-key global-map [ns-power-off] - (lambda () (interactive) (save-buffers-kill-emacs t))) +(define-key global-map [ns-power-off] 'save-buffers-kill-emacs) (define-key global-map [ns-open-file] 'ns-find-file) (define-key global-map [ns-open-temp-file] [ns-open-file]) (define-key global-map [ns-drag-file] 'ns-insert-file) @@ -296,7 +295,7 @@ The properties returned may include `top', `left', `height', and `width'." (define-key global-map [ns-spi-service-call] 'ns-spi-service-call) (define-key global-map [ns-new-frame] 'make-frame) (define-key global-map [ns-toggle-toolbar] 'ns-toggle-toolbar) -(define-key global-map [ns-info-prefs] 'ns-show-preferences-help) +(define-key global-map [ns-show-prefs] 'customize) ;; Functions to set environment variables by running a subshell. @@ -406,7 +405,7 @@ this defaults to \"printenv\"." (cons (logior (lsh 0 16) 11) 'ns-spi-service-call) (cons (logior (lsh 0 16) 12) 'ns-new-frame) (cons (logior (lsh 0 16) 13) 'ns-toggle-toolbar) - (cons (logior (lsh 0 16) 14) 'ns-info-prefs) + (cons (logior (lsh 0 16) 14) 'ns-show-prefs) (cons (logior (lsh 1 16) 32) 'f1) (cons (logior (lsh 1 16) 33) 'f2) (cons (logior (lsh 1 16) 34) 'f3) @@ -494,10 +493,10 @@ this defaults to \"printenv\"." ;; Must come after keybindings. -(fmakunbound 'clipboard-yank) -(fmakunbound 'clipboard-kill-ring-save) -(fmakunbound 'clipboard-kill-region) -(fmakunbound 'menu-bar-enable-clipboard) +;; (fmakunbound 'clipboard-yank) +;; (fmakunbound 'clipboard-kill-ring-save) +;; (fmakunbound 'clipboard-kill-region) +;; (fmakunbound 'menu-bar-enable-clipboard) ;; Add a couple of menus and rearrange some others; easiest just to redo toplvl ;; Note keymap defns must be given last-to-first @@ -985,135 +984,10 @@ Lines are highlighted according to `ns-input-line'." (t (read res))))) ;; nsterm.m -(defvar ns-command-modifier) -(defvar ns-control-modifier) -(defvar ns-function-modifier) -(defvar ns-antialias-text) -(defvar ns-use-qd-smoothing) -(defvar ns-use-system-highlight-color) -(defvar ns-confirm-quit) - -(declare-function ns-set-resource "nsfns.m" (owner name value)) -(declare-function ns-font-name "nsfns.m" (name)) + (declare-function ns-read-file-name "nsfns.m" (prompt &optional dir isLoad init)) -(defun ns-save-preferences () - "Set all the defaults." - (interactive) - ;; Global preferences - (ns-set-resource nil "AlternateModifier" (symbol-name ns-alternate-modifier)) - (ns-set-resource nil "CommandModifier" (symbol-name ns-command-modifier)) - (ns-set-resource nil "ControlModifier" (symbol-name ns-control-modifier)) - (ns-set-resource nil "FunctionModifier" (symbol-name ns-function-modifier)) - (ns-set-resource nil "ExpandSpace" - (if ns-expand-space - (number-to-string ns-expand-space) - "NO")) - (ns-set-resource nil "GSFontAntiAlias" (if ns-antialias-text "YES" "NO")) - (ns-set-resource nil "UseQuickdrawSmoothing" - (if ns-use-qd-smoothing "YES" "NO")) - (ns-set-resource nil "UseSystemHighlightColor" - (if ns-use-system-highlight-color "YES" "NO")) - (ns-set-resource nil "ConfirmQuit" - (if ns-confirm-quit "YES" "NO")) - ;; Default frame parameters - (let ((p (frame-parameters)) - v) - (if (setq v (assq 'font p)) - (ns-set-resource nil "Font" (ns-font-name (cdr v)))) - (if (setq v (assq 'fontsize p)) - (ns-set-resource nil "FontSize" (number-to-string (cdr v)))) - (if (setq v (assq 'foreground-color p)) - (ns-set-resource nil "Foreground" (cdr v))) - (if (setq v (assq 'background-color p)) - (ns-set-resource nil "Background" (cdr v))) - (if (setq v (assq 'cursor-color p)) - (ns-set-resource nil "CursorColor" (cdr v))) - (if (setq v (assq 'cursor-type p)) - (ns-set-resource nil "CursorType" (if (symbolp (cdr v)) - (symbol-name (cdr v)) - (cdr v)))) - (if (setq v (assq 'underline p)) - (ns-set-resource nil "Underline" - (case (cdr v) - ((t) "YES") - ((nil) "NO") - (t (cdr v))))) - (if (setq v (assq 'internal-border-width p)) - (ns-set-resource nil "InternalBorderWidth" - (number-to-string (cdr v)))) - (if (setq v (assq 'vertical-scroll-bars p)) - (ns-set-resource nil "VerticalScrollBars" - (case (cdr v) - ((t) "YES") - ((nil) "NO") - ((left) "left") - ((right) "right") - (t nil)))) - (if (setq v (assq 'height p)) - (ns-set-resource nil "Height" (number-to-string (cdr v)))) - (if (setq v (assq 'width p)) - (ns-set-resource nil "Width" (number-to-string (cdr v)))) - (if (setq v (assq 'top p)) - (ns-set-resource nil "Top" (number-to-string (cdr v)))) - (if (setq v (assq 'left p)) - (ns-set-resource nil "Left" (number-to-string (cdr v)))) - ;; These not fully supported - (if (setq v (assq 'auto-raise p)) - (ns-set-resource nil "AutoRaise" (if (cdr v) "YES" "NO"))) - (if (setq v (assq 'auto-lower p)) - (ns-set-resource nil "AutoLower" (if (cdr v) "YES" "NO"))) - (if (setq v (assq 'menu-bar-lines p)) - (ns-set-resource nil "Menus" (if (cdr v) "YES" "NO"))) - ) - (let ((fl (face-list))) - (while (consp fl) - (or (eq 'default (car fl)) - ;; dont save Default* since it causes all created faces to - ;; inherit its values. The properties of the default face - ;; have already been saved from the frame-parameters anyway. - (let* ((name (symbol-name (car fl))) - (font (face-font (car fl))) - ;; (fontsize (face-fontsize (car fl))) - (foreground (face-foreground (car fl))) - (background (face-background (car fl))) - (underline (face-underline-p (car fl))) - (italic (face-italic-p (car fl))) - (bold (face-bold-p (car fl))) - (stipple (face-stipple (car fl)))) - ;; (ns-set-resource nil (concat name ".attributeFont") - ;; (if font font nil)) - ;; (ns-set-resource nil (concat name ".attributeFontSize") - ;; (if fontsize (number-to-string fontsize) nil)) - (ns-set-resource nil (concat name ".attributeForeground") - (if foreground foreground nil)) - (ns-set-resource nil (concat name ".attributeBackground") - (if background background nil)) - (ns-set-resource nil (concat name ".attributeUnderline") - (if underline "YES" nil)) - (ns-set-resource nil (concat name ".attributeItalic") - (if italic "YES" nil)) - (ns-set-resource nil (concat name ".attributeBold") - (if bold "YES" nil)) - (and stipple - (or (stringp stipple) - (setq stipple (prin1-to-string stipple)))) - (ns-set-resource nil (concat name ".attributeStipple") - (if stipple stipple nil)))) - (setq fl (cdr fl))))) - -(declare-function menu-bar-options-save-orig "ns-win" () t) - -;; call ns-save-preferences when menu-bar-options-save is called -(fset 'menu-bar-options-save-orig (symbol-function 'menu-bar-options-save)) -(defun ns-save-options () - (interactive) - (menu-bar-options-save-orig) - (ns-save-preferences)) -(fset 'menu-bar-options-save (symbol-function 'ns-save-options)) - - ;;;; File handling. (defun ns-open-file-using-panel () @@ -1242,11 +1116,6 @@ unless the current buffer is a scratch buffer.") ;;;; Dialog-related functions. -(defun ns-show-preferences-help () - "Show NS Preferences panel section in the Emacs manual" - (interactive) - (info "(emacs)Mac / GNUstep Customization")) - ;; Ask user for confirm before printing. Due to Kevin Rodgers. (defun ns-print-buffer () "Interactive front-end to `print-buffer': asks for user confirmation first." diff --git a/src/ChangeLog b/src/ChangeLog index e36287cb7f8..551e526ba61 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,17 @@ +2009-03-14 David Reitter + + * nsterm.m (ns_shutdown_properly, -terminate): remove global state + variable as it was never reset + (ns_term_init): remove initialization of Lisp-settable defaults + and ns_expand_space + (-setPanelFromDefaultValues): remove ns_expand_space. + (-showPreferencesWindow): send new KEY_NS_SHOW_PREFS key. + * nsfont.m (nsfont_open): remove ns_expand_space, assume -0.5 + i.e. no additional spacing, similar to Carbon port. + + * nsterm.h: define KEY_NS_SHOW_PREFS key. + * nsfns.m (ns-popup-prefs-panel): remove. + 2009-03-14 Jan Djärv * sound.c (alsa_configure): Remove call to deprecated diff --git a/src/nsfns.m b/src/nsfns.m index 77a222b0c3d..b6d0d189cc5 100644 --- a/src/nsfns.m +++ b/src/nsfns.m @@ -1379,17 +1379,6 @@ FRAME nil means use the selected frame. */) } -DEFUN ("ns-popup-prefs-panel", Fns_popup_prefs_panel, Sns_popup_prefs_panel, - 0, 0, "", - doc: /* Pop up the preferences panel. */) - () -{ - check_ns (); - [(EmacsApp *)NSApp showPreferencesWindow: NSApp]; - return Qnil; -} - - DEFUN ("ns-popup-font-panel", Fns_popup_font_panel, Sns_popup_font_panel, 0, 1, "", doc: /* Pop up the font panel. */) @@ -2729,7 +2718,6 @@ be used as the image of the icon representing the frame. */); defsubr (&Sns_perform_service); defsubr (&Sns_convert_utf8_nfd_to_nfc); defsubr (&Sx_focus_frame); - defsubr (&Sns_popup_prefs_panel); defsubr (&Sns_popup_font_panel); defsubr (&Sns_popup_color_panel); diff --git a/src/nsfont.m b/src/nsfont.m index e2e537f67e7..902e73d48e9 100644 --- a/src/nsfont.m +++ b/src/nsfont.m @@ -42,7 +42,6 @@ Author: Adrian Robert (arobert@cogsci.ucsd.edu) extern Lisp_Object Qns; extern Lisp_Object Qnormal, Qbold, Qitalic, Qcondensed, Qexpanded; static Lisp_Object Qapple, Qroman, Qmedium; -extern Lisp_Object ns_expand_space; extern Lisp_Object Qappend; extern int ns_antialias_text, ns_use_qd_smoothing; extern float ns_antialias_threshold; @@ -658,12 +657,12 @@ nsfont_open (FRAME_PTR f, Lisp_Object font_entity, int pixel_size) min_height = [sfont ascender] - [sfont descender]; hd = full_height - min_height; - if (!NUMBERP (ns_expand_space)) - error ("No expand space defined"); - - /* ns_expand_space = 0.0 is use standard height; less shrink, more expand */ - expand = XFLOATINT (ns_expand_space) + 0.5; + /* standard height, similar to Carbon. Emacs.app: was 0.5 by default. */ + expand = 0.0; + shrink = 1.0; + hshrink = 1.0; + /* if (expand < 0.0) { shrink = 1 + expand; @@ -672,6 +671,7 @@ nsfont_open (FRAME_PTR f, Lisp_Object font_entity, int pixel_size) } else shrink = hshrink = 1.0; + */ font_info->underpos = 2; /*[sfont underlinePosition] is often clipped out */ font_info->underwidth = [sfont underlineThickness]; diff --git a/src/nsterm.h b/src/nsterm.h index 7ba1243dc0e..392c79a278c 100644 --- a/src/nsterm.h +++ b/src/nsterm.h @@ -317,52 +317,6 @@ along with GNU Emacs. If not, see . */ @end #endif /* NS_IMPL_COCOA */ - -/* ========================================================================== - - Running the preferences window - - ========================================================================== */ - -@interface EmacsPrefsController : NSObject -{ - struct frame *frame; - IBOutlet NSWindow *prefsWindow; - IBOutlet NSPopUpButton *alternateModMenu; - IBOutlet NSPopUpButton *commandModMenu; -#ifdef NS_IMPL_COCOA - IBOutlet NSPopUpButton *controlModMenu; - IBOutlet NSPopUpButton *functionModMenu; -#endif - IBOutlet NSMatrix *cursorTypeMatrix; - IBOutlet NSSlider *expandSpaceSlider; -#ifdef NS_IMPL_COCOA - IBOutlet NSButton *smoothFontsCheck; - IBOutlet NSButton *useQuickdrawCheck; - IBOutlet NSButton *useSysHiliteCheck; - IBOutlet NSButton *confirmQuitCheck; - Lisp_Object prevUseHighlightColor; -#endif - float prevExpandSpace; -#ifdef NS_IMPL_GNUSTEP - /* TODO: remove as soon as someone can edit the .nib to replace the - cursor-blink widget with checkbox conn to confirmQuitCheck */ - IBOutlet NSSlider *cursorBlinkSlider; -#endif -} -- (IBAction)cancel: (id)sender; -- (IBAction)ok: (id)sender; -- (IBAction)resetToDefaults: (id)sender; -- (IBAction)runHelp: (id)sender; -- (IBAction)setColors: (id)sender; -- (IBAction)setDefaultFont: (id)sender; - -- (void) showForFrame: (struct frame *)f; -- (void) setPanelFromValues; -- (void) setPanelFromDefaultValues; -- (void) setValuesFromPanel; -@end - extern NSArray *ns_send_types, *ns_return_types; extern EmacsMenu *mainMenu, *svcsMenu, *dockMenu; @@ -402,7 +356,7 @@ typedef unsigned long NSUInteger; #define KEY_NS_SPI_SERVICE_CALL ((1<<28)|(0<<16)|11) #define KEY_NS_NEW_FRAME ((1<<28)|(0<<16)|12) #define KEY_NS_TOGGLE_TOOLBAR ((1<<28)|(0<<16)|13) -#define KEY_NS_INFO_PREFS ((1<<28)|(0<<16)|14) +#define KEY_NS_SHOW_PREFS ((1<<28)|(0<<16)|14) /* could use list to store these, but rest of emacs has a big infrastructure for managing a table of bitmap "records" */ diff --git a/src/nsterm.m b/src/nsterm.m index 9bc063e3054..07acc8d8013 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -136,15 +136,9 @@ Lisp_Object Qalt, Qcontrol, Qhyper, Qmeta, Qsuper; extern Lisp_Object Qcursor_color, Qcursor_type, Qns; -EmacsPrefsController *prefsController; - -/* Preferences equivalent to those set by X resources under X are managed - through the OpenStep defaults system. These pertain to behavior of the - graphical interface components. The one difference from X is that the - values below are SET when the user chooses save-options. This makes - things easier for users, but sometimes violates expectations when some - user-set options appear when running under -q/Q. Therefore we depart - from X behavior and refuse to read defaults when started under these +/* Some preferences equivalent to those set by X resources under X are + managed through the OpenStep defaults system. We depart from X + behavior and refuse to read defaults when started under these options. */ /* Set in emacs.c. */ @@ -166,11 +160,6 @@ Lisp_Object ns_control_modifier; the Function modifer (laptops). May be any of the modifier lisp symbols. */ Lisp_Object ns_function_modifier; -/* A floating point value specifying vertical stretch (positive) or shrink - (negative) of text line spacing. Zero means default spacing. - YES indicates 0.5, NO indicates 0.0. */ -Lisp_Object ns_expand_space; - /* Control via default 'GSFontAntiAlias' on OS X and GNUstep. */ Lisp_Object ns_antialias_text; @@ -234,7 +223,6 @@ static fd_set select_readfds, t_readfds; static struct timeval select_timeout; static int select_nfds; static NSAutoreleasePool *outerpool; -static BOOL ns_shutdown_properly = NO; static struct input_event *emacs_event = NULL; static struct input_event *q_event_ptr = NULL; static int n_emacs_events_pending = 0; @@ -3563,7 +3551,6 @@ ns_set_default_prefs () ns_command_modifier = Qsuper; ns_control_modifier = Qcontrol; ns_function_modifier = Qnone; - ns_expand_space = make_float (0.0); ns_antialias_text = Qt; ns_antialias_threshold = 10.0; /* not exposed to lisp side */ ns_use_qd_smoothing = Qnil; @@ -3838,48 +3825,20 @@ ns_term_init (Lisp_Object display_name) ns_set_default_prefs (); if (!ns_no_defaults) { - ns_default ("AlternateModifier", &ns_alternate_modifier, - Qnil, Qnil, NO, YES); - if (NILP (ns_alternate_modifier)) - ns_alternate_modifier = Qmeta; - ns_default ("CommandModifier", &ns_command_modifier, - Qnil, Qnil, NO, YES); - if (NILP (ns_command_modifier)) - ns_command_modifier = Qsuper; - ns_default ("ControlModifier", &ns_control_modifier, - Qnil, Qnil, NO, YES); - if (NILP (ns_control_modifier)) - ns_control_modifier = Qcontrol; - ns_default ("FunctionModifier", &ns_function_modifier, - Qnil, Qnil, NO, YES); - if (NILP (ns_function_modifier)) - ns_function_modifier = Qnone; - ns_default ("ExpandSpace", &ns_expand_space, - make_float (0.5), make_float (0.0), YES, NO); ns_default ("GSFontAntiAlias", &ns_antialias_text, Qt, Qnil, NO, NO); tmp = Qnil; + /* this is a standard variable */ ns_default ("AppleAntiAliasingThreshold", &tmp, make_float (10.0), make_float (6.0), YES, NO); ns_antialias_threshold = NILP (tmp) ? 10.0 : XFLOATINT (tmp); - ns_default ("UseQuickdrawSmoothing", &ns_use_qd_smoothing, - Qt, Qnil, NO, NO); - ns_default ("UseSystemHighlightColor", &ns_use_system_highlight_color, - Qt, Qnil, NO, NO); - ns_default ("ConfirmQuit", &ns_confirm_quit, - Qt, Qnil, NO, NO); } - if (EQ (ns_use_system_highlight_color, Qt)) - { - ns_selection_color = [[NSUserDefaults standardUserDefaults] - stringForKey: @"AppleHighlightColor"]; - if (ns_selection_color == nil) - ns_selection_color = NS_SELECTION_COLOR_DEFAULT; - } - else + ns_selection_color = [[NSUserDefaults standardUserDefaults] + stringForKey: @"AppleHighlightColor"]; + if (ns_selection_color == nil) ns_selection_color = NS_SELECTION_COLOR_DEFAULT; - + { NSColorList *cl = [NSColorList colorListNamed: @"Emacs"]; @@ -4008,7 +3967,6 @@ ns_term_shutdown (int sig) if (sig == 0 || sig == SIGTERM) { - ns_shutdown_properly = YES; [NSApp terminate: NSApp]; } else // force a stack trace to happen @@ -4104,9 +4062,15 @@ ns_term_shutdown (int sig) - (void)showPreferencesWindow: (id)sender { - if (prefsController == nil) - prefsController = [[EmacsPrefsController alloc] init]; - [prefsController showForFrame: SELECTED_FRAME ()]; + struct frame *emacsframe = SELECTED_FRAME (); + NSEvent *theEvent = [NSApp currentEvent]; + + if (!emacs_event) + return; + emacs_event->kind = NS_NONKEY_EVENT; + emacs_event->code = KEY_NS_SHOW_PREFS; + emacs_event->modifiers = 0; + EV_TRAILER (theEvent); } @@ -4161,47 +4125,38 @@ ns_term_shutdown (int sig) } -/* Termination sequences (ns_shutdown_properly): +/* Termination sequences: C-x C-c: Cmd-Q: MenuBar | File | Exit: - ns_term_shutdown: 0 - -terminate: 1 - -appShouldTerminate: 1 - Select Quit from App menubar: - received -terminate: 0 - ns_term_shutdown: 0 - -terminate: 1 - -appShouldTerminate: 1 + -terminate + KEY_NS_POWER_OFF, (save-buffers-kill-emacs) + ns_term_shutdown() Select Quit from Dock menu: Logout attempt: - -appShouldTerminate: 0 + -appShouldTerminate Cancel -> Nothing else Accept -> - -terminate: 0 - ns_term_shutdown: 0 - -terminate: 1 - -appShouldTerminate: 1 + + -terminate + KEY_NS_POWER_OFF, (save-buffers-kill-emacs) + ns_term_shutdown() + */ - (void) terminate: (id)sender { - if (ns_shutdown_properly) - [super terminate: sender]; - else - { - struct frame *emacsframe = SELECTED_FRAME (); - - if (!emacs_event) - return; - - ns_shutdown_properly = YES; - emacs_event->kind = NON_ASCII_KEYSTROKE_EVENT; - emacs_event->code = KEY_NS_POWER_OFF; - EV_TRAILER ((id)nil); - } + struct frame *emacsframe = SELECTED_FRAME (); + + if (!emacs_event) + return; + + emacs_event->kind = NS_NONKEY_EVENT; + emacs_event->code = KEY_NS_POWER_OFF; + emacs_event->arg = Qt; /* mark as non-key event */ + EV_TRAILER ((id)nil); } @@ -4209,7 +4164,7 @@ ns_term_shutdown (int sig) { int ret; - if (ns_shutdown_properly || NILP (ns_confirm_quit)) + if (NILP (ns_confirm_quit)) // || ns_shutdown_properly --> TO DO return NSTerminateNow; ret = NSRunAlertPanel([[NSProcessInfo processInfo] processName], @@ -6133,203 +6088,6 @@ extern void update_window_cursor (struct window *w, int on); -/* ========================================================================== - - EmacsPrefsController implementation - - ========================================================================== */ - - -@implementation EmacsPrefsController - -/* in Tiger+, can just do [popup selectItemWithTag: tag]; */ -static void selectItemWithTag (NSPopUpButton *popup, int tag) -{ - NSEnumerator *items = [[popup itemArray] objectEnumerator]; - NSMenuItem *item; - while (item = [items nextObject]) - { - if ([item tag] == tag) - { - [popup selectItem: item]; - return; - } - } -} - -- init -{ - [NSBundle loadNibNamed: @"preferences" owner: self]; - return self; -} - - -- (void) showForFrame: (struct frame *)f -{ - frame = f; - [self setPanelFromValues]; - [prefsWindow makeKeyAndOrderFront: self]; - [prefsWindow display]; -} - - -/* If you change this, change setPanelFromDefaultValues too. */ -- (void) setPanelFromValues -{ - int cursorType - = ns_lisp_to_cursor_type (get_frame_param (frame, Qcursor_type)); - prevExpandSpace = XFLOATINT (ns_expand_space); - -#ifdef NS_IMPL_COCOA - prevUseHighlightColor = ns_use_system_highlight_color; -#endif - - [expandSpaceSlider setFloatValue: prevExpandSpace]; - [cursorTypeMatrix selectCellWithTag: (cursorType == FILLED_BOX_CURSOR ? 1 : - (cursorType == BAR_CURSOR ? 2 : - (cursorType == HBAR_CURSOR ? 3 : 4)))]; - selectItemWithTag (alternateModMenu, - parse_solitary_modifier (ns_alternate_modifier)); - selectItemWithTag (commandModMenu, - parse_solitary_modifier (ns_command_modifier)); -#ifdef NS_IMPL_COCOA - selectItemWithTag (controlModMenu, - parse_solitary_modifier (ns_control_modifier)); - selectItemWithTag (functionModMenu, - parse_solitary_modifier (ns_function_modifier)); - [smoothFontsCheck setState: (NILP (ns_antialias_text) ? NO : YES)]; - [useQuickdrawCheck setState: (NILP (ns_use_qd_smoothing) ? NO : YES)]; - [useSysHiliteCheck setState: (NILP (prevUseHighlightColor) ? NO : YES)]; - [confirmQuitCheck setState: (NILP (ns_confirm_quit) ? NO : YES)]; -#endif -} - - -/* This and ns_set_default_prefs should be changed together. */ -- (void) setPanelFromDefaultValues -{ - [expandSpaceSlider setFloatValue: 0.0]; - [cursorTypeMatrix selectCellWithTag: 1]; /* filled box */ - selectItemWithTag (alternateModMenu, meta_modifier); - selectItemWithTag (commandModMenu, super_modifier); -#ifdef NS_IMPL_COCOA - selectItemWithTag (controlModMenu, ctrl_modifier); - selectItemWithTag (functionModMenu, 0); /* none */ - [smoothFontsCheck setState: YES]; - [useQuickdrawCheck setState: NO]; - [useSysHiliteCheck setState: YES]; -#endif -} - - -- (void) setValuesFromPanel -{ - int altTag = [[alternateModMenu selectedItem] tag]; - int cmdTag = [[commandModMenu selectedItem] tag]; -#ifdef NS_IMPL_COCOA - int ctrlTag = [[controlModMenu selectedItem] tag]; - int fnTag = [[functionModMenu selectedItem] tag]; -#endif - float expandSpace = [expandSpaceSlider floatValue]; - int cursorTag = [[cursorTypeMatrix selectedCell] tag]; - Lisp_Object cursor_type = ns_cursor_type_to_lisp - ( cursorTag == 1 ? FILLED_BOX_CURSOR - : cursorTag == 2 ? BAR_CURSOR - : cursorTag == 3 ? HBAR_CURSOR : HOLLOW_BOX_CURSOR); - - if (expandSpace != prevExpandSpace) - { - ns_expand_space = make_float (expandSpace); - /* TODO: more needed: store needed metrics in nsfont_info, update - frame default font max_bounds and fontp, recompute faces */ -/* FRAME_LINE_HEIGHT (frame) *= (expandSpace / prevExpandSpace); - x_set_window_size (frame, 0, frame->text_cols, frame->text_lines); */ - prevExpandSpace = expandSpace; - } - - store_frame_param (frame, Qcursor_type, cursor_type); - x_set_cursor_type (frame, cursor_type, Qnil); /* FIXME: do only if changed */ - - ns_alternate_modifier = ns_mod_to_lisp (altTag); - ns_command_modifier = ns_mod_to_lisp (cmdTag); -#ifdef NS_IMPL_COCOA - ns_control_modifier = ns_mod_to_lisp (ctrlTag); - ns_function_modifier = ns_mod_to_lisp (fnTag); - ns_antialias_text = [smoothFontsCheck state] ? Qt : Qnil; - ns_use_qd_smoothing = [useQuickdrawCheck state] ? Qt : Qnil; - ns_use_system_highlight_color = [useSysHiliteCheck state] ? Qt : Qnil; - ns_confirm_quit = [confirmQuitCheck state] ? Qt : Qnil; - if (! EQ (ns_use_system_highlight_color, prevUseHighlightColor)) - { - prevUseHighlightColor = ns_use_system_highlight_color; - if (EQ (ns_use_system_highlight_color, Qt)) - { - ns_selection_color = [[NSUserDefaults standardUserDefaults] - stringForKey: @"AppleHighlightColor"]; - if (ns_selection_color == nil) - ns_selection_color = NS_SELECTION_COLOR_DEFAULT; - } - else - ns_selection_color = NS_SELECTION_COLOR_DEFAULT; - } -#endif /* NS_IMPL_COCOA */ - Fcall_interactively (intern ("ns-save-preferences"), Qnil, Qnil); -} - - -/* buttons */ -- (IBAction)cancel: (id)sender -{ - [prefsWindow close]; -} - - -- (IBAction)ok: (id)sender -{ - [self setValuesFromPanel]; - [prefsWindow close]; -} - - -- (IBAction)resetToDefaults: (id)sender -{ - [self setPanelFromDefaultValues]; -} - - -- (IBAction)runHelp: (id)sender -{ - struct frame *emacsframe = frame; - if (!emacs_event) - return; - ns_raise_frame(frame); - emacs_event->kind = NS_NONKEY_EVENT; - emacs_event->code = KEY_NS_INFO_PREFS; - EV_TRAILER ((id)nil); -} - - -- (IBAction)setColors: (id)sender -{ - Lisp_Object lispFrame; - XSETFRAME (lispFrame, frame); - ns_raise_frame(frame); - Fns_popup_color_panel (lispFrame); -} - - -- (IBAction)setDefaultFont: (id)sender -{ - Lisp_Object lispFrame; - XSETFRAME (lispFrame, frame); - ns_raise_frame(frame); - Fns_popup_font_panel (lispFrame); -} - -@end /* EmacsPrefsController */ - - - /* ========================================================================== @@ -6492,11 +6250,6 @@ Set to control, meta, alt, super, or hyper means it is taken to be that key.\n\ Set to none means that the function key is not interpreted by Emacs at all,\n\ allowing it to be used at a lower level for accented character entry."); - DEFVAR_LISP ("ns-expand-space", &ns_expand_space, - "Amount by which spacing between lines is expanded (positive)\n\ -or shrunk (negative). Zero (the default) means standard line height.\n\ -(This variable should only be read, never set.)"); - DEFVAR_LISP ("ns-antialias-text", &ns_antialias_text, "Non-nil (the default) means to render text antialiased. Only has an effect on OS X Panther and above."); -- 2.11.4.GIT