• Anders Lindgren's avatar
    NextSten maximization and NSTRACE rewrite. · ba24d35a
    Anders Lindgren authored
    Full-height, full-width, and maximized windows now cover the
    entire screen (except the menu bar), including the part where the
    system dock is placed.  The system zoom animation is no longer
    Made NonMaximized->FullWidth->FullHeight->NonMaximized restore the
    original size.
    * nsterm.m (ns_menu_bar_height): New function, return height of
    the menu bar, or 0 when it's hidden.
    * nsterm.m (constrain_frame_rect): New function for constraining a
    * nsterm.m (ns_constrain_all_frames): Set frame size explicitly
    rather than relying on the system doing it for us by writing back
    the current frame size.
    * nsterm.m (windowWillUseStandardFrame): Register non-maximized
    width or height as new user size.  When entering full width or
    height, the other size component is taken from the user size.
    * nsterm.m (fullscreenState): New method for accessing the
    fullscreen state.
    * nsterm.m (constrainFrameRect): Restrict frame to be placed under
    the menu bar, if present.  The old version, sometimes, restricted
    the height of a frame to the screen, this version never does this.
    * nsterm.m (zoom): Perform zoom by setting the frame to the full
    size of the screen (minus the menu bar).  The default system
    function, with the zoom animation, is no longer used, as the final
    frame size doesn't cover the entire screen.
    Rework how to constrain resizing to the character grid.  The old
    system used "resizeIncrements" in NSWindows.  However, once a frame
    was resized so that it was not aligned to the text grid, it
    remained unaligned even after a resize.  In addition, it conflicted
    when resizing a fullheight window.
    * nsterm.m (windowWillResize): Restrict frame size to text grid,
    unless when pixelwise frame resizing is enabled.
    * nsterm.m (updateFrameSize, initFrameFromEmacs)
    (toggleFullScreen, handleFS): Don't set resizeIncrements.
    Redesign the NS trace system.  The call structure is represented
    using indentations and vertical lines.  The NSTRACE macro accepts
    printf-style arguments.  New macros for printing various
    * nsterm.h (NSTRACE_ENABLED): Macro to enable trace system.
    * nsterm.h (NSTRACE, NSTRACE_WHEN, NSTRACE_UNLESS): Macros to
    start a new block (typically a function), accept printf-style
    * nsterm.h (NSTRACE_MSG): Macro for extra information, accepts
    printf-style arguments.
    * nsterm.h (NSTRACE_what): Macros for printing various types.
    * nsterm.h (NSTRACE_FMT_what): Macro with printf format string
    * nsterm.h (NSTRACE_ARG_what): Macros for passing printf-style
    arguments, corresponds to NSTRACE_FMT_what.
    * nsterm.h (NSTRACE_RETURN): Macro to print return value, accept
    printf-style arguments.
    * nsterm.h (NSTRACE_RETURN_what): Macros to print return value for
    various types.
    * nsterm.m: Remove old NSTRACE macro.
    * nsterm.m (nstrace_num): Trace counter.
    * nsterm.m (nstrace_depth): Current call depth.
    * nsterm.m (nstrace_leave): NSTRACE support function, called when
    the local variable "nstrace_enabled" goes out of scope using the
    "cleanup" extension.
    * nsterm.m (ns_print_fullscreen_type_name): NSTRACE_FSTYPE support
    * nsterm.m (constrain_frame_rect, ns_constrain_all_frames)
    (ns_update_auto_hide_menu_bar, ns_update_begin)
    (ns_update_window_begin, update_window_end, ns_update_end)
    (ns_focus, ns_unfocus, ns_ring_bell, ns_frame_raise_lower)
    (ns_frame_rehighlight, x_make_frame_visible)
    (x_make_frame_invisible, x_iconify_frame, x_free_frame_resources)
    (x_destroy_window, x_set_offset, x_set_window_size)
    (ns_fullscreen_hook, ns_lisp_to_color, ns_color_to_lisp)
    (ns_defined_color, frame_set_mouse_pixel_position)
    (note_mouse_movement, ns_mouse_position, ns_frame_up_to_date)
    (ns_define_frame_cursor, x_get_keysym_name, ns_redraw_scroll_bars)
    (ns_clear_frame, ns_clear_frame_area, ns_scroll_run)
    (ns_after_update_window_line, ns_shift_glyphs_for_insert)
    (dumpcursor, ns_draw_vertical_window_border)
    (ns_draw_window_divider, ns_draw_relief)
    (ns_dumpglyphs_box_or_relief, ns_maybe_dumpglyphs_background)
    (ns_dumpglyphs_image, ns_draw_glyph_string, ns_send_appdefined)
    (ns_read_socket, ns_select, ns_set_vertical_scroll_bar)
    (ns_set_horizontal_scroll_bar, ns_condemn_scroll_bars)
    (ns_redeem_scroll_bar, ns_judge_scroll_bars, ns_delete_terminal)
    (ns_create_terminal, ns_term_init, sendEvent)
    (applicationDidFinishLaunching, applicationDidBecomeActive)
    (timeout_handler, fd_handler, EmacsView_dealloc, changeFont)
    (acceptsFirstResponder, resetCursorRects, keyDown, mouseDown)
    (deltaIsZero, rightMouseDown, otherMouseDown, mouseUp)
    (rightMouseUp, otherMouseUp, scrollWheel, mouseMoved)
    (mouse_autoselect_window, in_window, mouseDragged)
    (rightMouseDragged, otherMouseDragged, windowShouldClose)
    (updateFrameSize, windowWillResize, windowDidResize)
    (windowDidBecomeKey, windowDidResignKey, windowWillMiniaturize)
    (initFrameFromEmacs, windowDidMove, windowDidDeminiaturize)
    (windowDidExpose, windowDidMiniaturize, windowWillEnterFullScreen)
    (windowDidEnterFullScreen, windowWillExitFullScreen)
    (windowDidExitFullScreen, toggleFullScreen, handleFS, setFSValue)
    (mouseEntered, mouseExited, menuDown, toolbarClicked, drawRect)
    (draggingEntered, performDragOperation, validRequestorForSendType)
    (setMiniwindowImage, constrainFrameRect, performZoom, zoom)
    (EmacsScroller_initFrame, EmacsScroller_setFrame)
    (EmacsScroller_dealloc, condemn, reprieve, judge)
    (resetCursorRects, setPosition, EmacsScroller_mouseDown)
    (EmacsScroller_mouseDragged, syms_of_nsterm): Use new trace system.
    * nsfns.m: Remove old NSTRACE macro.
    * nsfns.m (x_set_icon_name, ns_set_name, x_explicitly_set_name)
    (x_implicitly_set_name, x_set_title, ns_set_name_as_filename)
    (ns_implicitly_set_icon_type, x_set_icon_type): Use new trace system.
    * nsimage.m: Remove old NSTRACE macro.
    * nsimage.m (ns_image_from_XBM, ns_image_for_XPM)
    (ns_image_from_bitmap_file, ns_load_image): Use new trace system.
    * nsmenu.m: Remove old NSTRACE macro.
    * nsmenu.m (ns_update_menubar, ns_menu_show, ns_popup_dialog):
    Use new trace system.
nsterm.h 35.9 KB