1. 13 May, 2014 1 commit
    • Dmitry Antipov's avatar
      If available, use Xfixes extension to do pointer blanking. · d3e5c0ea
      Dmitry Antipov authored
      * configure.ac (HAVE_XFIXES): Define if available.
      (XFIXES_CFLAGS, XFIXES_LIBS): New AC_SUBSTs.
      * src/Makefile.in (XFIXES_CFLAGS, XFIXES_LIBS): New var.
      * src/xfns.c (x_set_mouse_color): Do not call make_invisible_cursor here.
      (make_invisible_cursor): Move to...
      * src/xterm.c (make_invisible_cursor): ...here.
      (x_probe_xfixes_extension, xfixes_toggle_visible_pointer)
      (x_toggle_visible_pointer, x_setup_pointer_blanking): New functions.
      (x_term_init): Call to x_setup_pointer_blanking.
      (XTtoggle_invisible_pointer): Use blanking specific to this display.
      * src/xterm.h (struct x_display_info): New member toggle_visible_pointer.
      d3e5c0ea
  2. 17 Apr, 2014 1 commit
  3. 05 Apr, 2014 1 commit
    • Paul Eggert's avatar
      Prefer 'ARRAYELTS (x)' to 'sizeof x / sizeof *x'. · faa52174
      Paul Eggert authored
      * alloc.c (memory_full):
      * charset.c (syms_of_charset):
      * doc.c (Fsnarf_documentation):
      * emacs.c (main):
      * font.c (BUILD_STYLE_TABLE):
      * keyboard.c (make_lispy_event):
      * profiler.c (setup_cpu_timer):
      * xgselect.c (xg_select):
      * xterm.c (record_event, STORE_KEYSYM_FOR_DEBUG):
      Use ARRAYELTS.
      * font.c (FONT_PROPERTY_TABLE_SIZE): Remove.
      Replace the only use with ARRAYELTS (font_property_table).
      * xfaces.c (DIM): Remove.  All uses replaced by ARRAYELTS.
      faa52174
  4. 03 Apr, 2014 2 commits
  5. 02 Apr, 2014 2 commits
  6. 31 Mar, 2014 1 commit
  7. 28 Mar, 2014 1 commit
  8. 21 Mar, 2014 2 commits
  9. 20 Mar, 2014 1 commit
  10. 11 Mar, 2014 1 commit
  11. 06 Mar, 2014 1 commit
    • Dmitry Antipov's avatar
      * xterm.c (xim_initialize): Always pass a copy of resource name · 12e852a2
      Dmitry Antipov authored
      to XRegisterIMInstantiateCallback and eassert whether return
      value is True.  Passing copy is important because Xlib doesn't
      make its own copy and resource name argument usually points to
      SSDATA (Vx_resource_name), which may be changed from Lisp.
      (xim_close_display): For XUnregisterIMInstantiateCallback,
      always eassert return value and pass exactly the same values
      as were used for XRegisterIMInstantiateCallback.  Otherwise
      XUnregisterIMInstantiateCallback will always fail.  See Xlib
      sources to check why if you are interested.
      12e852a2
  12. 04 Mar, 2014 1 commit
  13. 03 Mar, 2014 1 commit
    • Dmitry Antipov's avatar
      Avoid crashes when X fonts are erroneously freed on reused X · 19dae293
      Dmitry Antipov authored
      'Display *' connection data (Bug#16069).  Note that X font
      resources still may be leaked, but currently there is no way
      to completely avoid it.
      * xterm.h (struct x_display_info): New member x_id.  Add comments.
      * xterm.c (x_display_id): New variable.
      (x_term_init): Assign identifier to each opened X connection.
      * xfont.c (struct xfont): New member x_display_id.
      (xfont_open): Initialize it with frame's display id.
      (xfont_close): Check whether font's display id matches the one
      recorded for the given display.  Adjust comment.
      * xftfont.c (struct xftfont_info):
      (xftfont_open, xftfont_close): Exactly as above with xfont stuff.
      19dae293
  14. 04 Feb, 2014 1 commit
    • Martin Rudalics's avatar
      Improve window dividers code. · 764ec9e5
      Martin Rudalics authored
      * faces.el (window-divider): New default value.  Rewrite
      doc-string.
      (window-divider-first-pixel, window-divider-last-pixel): New
      faces.
      * dispextern.h (face_id): Add WINDOW_DIVIDER_FIRST_PIXEL_FACE_ID
      and WINDOW_DIVIDER_LAST_PIXEL_FACE_ID.
      * w32term.c (w32_draw_window_divider): Handle first and last
      pixels specially.
      * w32term.h (w32_fill_area_abs): New function.
      * xdisp.c (x_draw_right_divider): Don't draw over bottom
      divider.
      * xfaces.c (realize_basic_faces): Handle new face ids.
      * xfns.c (Fx_create_frame): Call x_default_parameter for right
      and bottom divider width.
      * xterm.c (x_draw_window_divider): Handle first and last pixels
      specially.
      764ec9e5
  15. 26 Jan, 2014 1 commit
  16. 11 Jan, 2014 1 commit
    • Martin Rudalics's avatar
      Fix handling of internal borders (Bug#16348). · 7d7ccb88
      Martin Rudalics authored
      * dispnew.c (adjust_frame_glyphs_for_window_redisplay): Remove
      internal border width from pixel width of windows.
      (change_frame_size_1): Don't return early when frame's pixel
      size changes - we still have to record the new sizes in the
      frame structure.
      * w32fns.c (x_set_tool_bar_lines): Clear internal border width
      also when toolbar gets larger.
      * window.c (check_frame_size): Include internal_border_width in
      check.
      * xdisp.c (Ftool_bar_height): Fix doc-string typo.
      * xfns.c (x_set_menu_bar_lines, x_set_tool_bar_lines): In
      non-toolkit/non-GTK version clear internal border.
      * xterm.c (x_clear_under_internal_border): New function for
      non-toolkit/non-GTK version.
      (x_after_update_window_line): In non-toolkit/non-GTK version
      don't do that.
      (handle_one_xevent, x_set_window_size): Call
      x_clear_under_internal_border in non-toolkit/non-GTK version.
      * xterm.h (x_clear_under_internal_border): Extern it.
      7d7ccb88
  17. 02 Jan, 2014 1 commit
    • Martin Rudalics's avatar
      Further adjust frame/window scrollbar width calculations. · 44c5e192
      Martin Rudalics authored
      * window.c (apply_window_adjustment): Set
      windows_or_buffers_changed.
      (Fwindow_scroll_bars): Return actual scrollbar width.
      * xfns.c (x_set_scroll_bar_default_width): Rename wid to unit.
      For non-toolkit builds again use 14 as minimum width and set
      FRAME_CONFIG_SCROLL_BAR_WIDTH accordingly.
      * xterm.c (XTset_vertical_scroll_bar): Take width from
      WINDOW_SCROLL_BAR_AREA_WIDTH.
      (x_new_font): Rename wid to unit.  Base calculation of new
      scrollbar width on toolkit used and make it analogous to that of
      x_set_scroll_bar_default_width.
      * w32fns.c (x_set_scroll_bar_default_width): Rename wid to unit.
      (Fx_create_frame): Call x_set_scroll_bar_default_width instead
      of GetSystemMetrics.
      * w32term.c (w32_set_vertical_scroll_bar): Take width from
      WINDOW_SCROLL_BAR_AREA_WIDTH.
      (x_new_font): Make it correspond to changes in xterm.c.
      44c5e192
  18. 01 Jan, 2014 1 commit
  19. 31 Dec, 2013 1 commit
    • Martin Rudalics's avatar
      Some more fixes following pixelwise resize changes including one for Bug#16306. · 9b3c0a16
      Martin Rudalics authored
      * gtkutil.c (x_wm_set_size_hint): Have size hints respect value
      of frame_resize_pixelwise.
      * widget.c (pixel_to_text_size): New function.
      (update_wm_hints): Have size hints respect value of
      frame_resize_pixelwise.
      (EmacsFrameResize): Alway process resize requests pixelwise.
      * window.c (grow_mini_window): Make sure mini window is at least
      one line tall.
      * xdisp.c (display_menu_bar): Make sure menubar extends till
      right end of frame.
      * xfns.c (x_set_menu_bar_lines): Resize frame windows pixelwise.
      (x_set_tool_bar_lines): Calculate pixelwise.
      * xterm.c (x_wm_set_size_hint): Have size hints respect value of
      frame_resize_pixelwise.
      9b3c0a16
  20. 20 Dec, 2013 1 commit
    • Martin Rudalics's avatar
      Some more fixes for pixelwise resizing. · c44de18d
      Martin Rudalics authored
      Remove scroll_bar_actual_width from frames.
      * frame.h (struct frame): Remove scroll_bar_actual_width slot.
      * frame.c (Fscroll_bar_width): Return scroll bar area width.
      (x_figure_window_size):
      * nsterm.m (x_set_window_size):
      * widget.c (set_frame_size):
      * w32term.c (x_set_window_size):
      * xterm.c (x_set_window_size, x_set_window_size_1): Don't set
      scroll_bar_actual_width.
      
      Convert scroll_bar members to integers on Windows.
      * w32term.h (struct scroll_bar): Convert top, left, width,
      height, start, end and dragging to integers.
      * w32fns.c (w32_createscrollbar): Remove XINT conversions for
      scroll_bar members.
      * w32term.c (w32_set_scroll_bar_thumb)
      (w32_scroll_bar_handle_click): Remove XINT conversions for
      scroll_bar members.  Treat bar->dragging as integer.
      (x_scroll_bar_create): Call ALLOCATE_PSEUDOVECTOR with "top" as
      first element.  Remove XINT conversions for scroll_bar members.
      (w32_set_vertical_scroll_bar, x_scroll_bar_report_motion):
      Remove XINT conversions for scroll_bar members.
      
      Fix assignment for new window total sizes.
      * window.c (Fwindow_resize_apply_total): Assign values for
      minibuffer window.
      * window.el (window--pixel-to-size): Remove function.
      (window--pixel-to-total-1, window--pixel-to-total): Fix
      calculation of new total sizes.
      c44de18d
  21. 14 Dec, 2013 1 commit
    • Paul Eggert's avatar
      Use bool for boolean, focusing on headers. · 96c06863
      Paul Eggert authored
      * configure.ac (PTY_OPEN, GC_MARK_SECONDARY_STACK):
      Use bool for boolean.
      * lib-src/emacsclient.c, lib-src/etags.c, lib-src/hexl.c (FALSE, TRUE):
      Remove.  All uses replaced with uncapitalized version.
      * lib-src/emacsclient.c (message):
      * lib-src/etags.c (make_tag, pfnote, consider_token, make_C_tag, lang_names):
      * lib-src/hexl.c (un_flag, iso_flag, endian):
      * lib-src/pop.c (pop_debug, pop_open, pop_multi_first, pop_multi_next)
      (pop_trash):
      Use bool for boolean.
      * lib-src/etags.c (bool): Remove.
      * lib-src/etags.c (globals, members, declarations, no_line_directive)
      (no_duplicates): Use 'int' for boolean values that getopt requires
      to be 'int'.  Formerly, these were 'bool' and 'bool' was 'int',
      but we can no longer rely on this implementation.
      * lib-src/pop.h (struct _popserver): Use bool_bf for boolean bit-fields.
      * lwlib/xlwmenuP.h (XlwMenu_part): Use bool_bf for boolean bit-fields.
      * src/atimer.h, src/lisp.h, src/syssignal.h, src/syswait.h, src/unexelf.c:
      No need to include <stdbool.h>, since conf_post.h does it now.
      * src/buffer.h (BUF_COMPUTE_UNCHANGED, DECODE_POSITION)
      (BUFFER_CHECK_INDIRECTION, GET_OVERLAYS_AT, PER_BUFFER_VALUE_P)
      (SET_PER_BUFFER_VALUE_P):
      * src/ccl.c, src/ccl.h (setup_ccl_program):
      * src/ccl.h (CHECK_CCL_PROGRAM):
      * src/character.h (MAKE_CHAR_UNIBYTE, CHECK_CHARACTER_CAR)
      (CHECK_CHARACTER_CDR, CHAR_STRING_ADVANCE, NEXT_CHAR_BOUNDARY)
      (PREV_CHAR_BOUNDARY, FETCH_STRING_CHAR_ADVANCE)
      (FETCH_STRING_CHAR_AS_MULTIBYTE_ADVANCE)
      (FETCH_STRING_CHAR_ADVANCE_NO_CHECK, FETCH_CHAR_ADVANCE)
      (FETCH_CHAR_ADVANCE_NO_CHECK, INC_POS, DEC_POS, INC_BOTH)
      (DEC_BOTH, BUF_INC_POS, BUF_DEC_POS):
      * src/charset.h (CHECK_CHARSET, CHECK_CHARSET_GET_ID)
      (CHECK_CHARSET_GET_ATTR, CHECK_CHARSET_GET_CHARSET)
      (CHARSET_FAST_MAP_SET):
      * src/coding.c (decode_coding_ccl, encode_coding_ccl):
      * src/coding.h (CHECK_CODING_SYSTEM, CHECK_CODING_SYSTEM_GET_SPEC)
      (CHECK_CODING_SYSTEM_GET_ID, SJIS_TO_JIS, SJIS_TO_JIS2)
      (JIS_TO_SJIS, JIS_TO_SJIS2, ENCODE_FILE, DECODE_FILE)
      (ENCODE_SYSTEM, DECODE_SYSTEM, ENCODE_UTF_8)
      (decode_coding_c_string):
      * src/composite.h (COMPOSITION_DECODE_REFS, COMPOSITION_DECODE_RULE):
      * src/conf_post.h (has_attribute):
      * src/dispextern.h (trace_redisplay_p):
      (INC_TEXT_POS, DEC_TEXT_POS, SET_GLYPH_FROM_GLYPH_CODE)
      (SET_CHAR_GLYPH, SET_CHAR_GLYPH_FROM_GLYPH)
      (SET_GLYPH_FROM_CHAR_GLYPH):
      (WINDOW_WANTS_MODELINE_P, WINDOW_WANTS_HEADER_LINE_P)
      (FACE_SUITABLE_FOR_ASCII_CHAR_P, FACE_SUITABLE_FOR_CHAR_P)
      (PRODUCE_GLYPHS, reset_mouse_highlight, in_display_vector_p)
      (cursor_in_mouse_face_p):
      * src/dispnew.c (adjust_glyph_matrix, clear_glyph_matrix_rows)
      (blank_row, prepare_desired_row)
      (build_frame_matrix_from_leaf_window, make_current)
      (mirror_make_current, mirrored_line_dance, mirror_line_dance)
      (update_window, scrolling_window, update_frame_line):
      * src/disptab.h (GLYPH_FOLLOW_ALIASES):
      * src/editfns.c (Fformat):
      * src/font.h (FONT_WEIGHT_SYMBOLIC, FONT_SLANT_SYMBOLIC)
      (FONT_WIDTH_SYMBOLIC, FONT_WEIGHT_FOR_FACE, FONT_SLANT_FOR_FACE)
      (FONT_WIDTH_FOR_FACE, FONT_WEIGHT_NAME_NUMERIC)
      (FONT_SLANT_NAME_NUMERIC, FONT_WIDTH_NAME_NUMERIC)
      (FONT_SET_STYLE, CHECK_FONT, CHECK_FONT_SPEC, CHECK_FONT_ENTITY)
      (CHECK_FONT_OBJECT, CHECK_FONT_GET_OBJECT, FONT_ADD_LOG)
      (FONT_DEFERRED_LOG):
      * src/frame.h (FRAME_W32_P, FRAME_MSDOS_P, FRAME_WINDOW_P):
      (FRAME_EXTERNAL_TOOL_BAR, FRAME_EXTERNAL_MENU_BAR, FOR_EACH_FRAME)
      (FRAME_MOUSE_UPDATE):
      * src/fringe.c (Fdefine_fringe_bitmap):
      * src/image.c (x_create_bitmap_from_data, x_create_bitmap_mask)
      (x_create_bitmap_from_xpm_data, xpm_load_image):
      * src/intervals.h (INTERVAL_HAS_PARENT, INTERVAL_PARENT)
      (set_interval_parent, RESET_INTERVAL, COPY_INTERVAL_CACHE)
      (MERGE_INTERVAL_CACHE):
      * src/keymap.h (KEYMAPP):
      * src/lisp.h (eassert, USE_LSB_TAG, CHECK_LISP_OBJECT_TYPE)
      (STRING_SET_UNIBYTE, STRING_SET_MULTIBYTE, DEFSYM, PSEUDOVECTORP)
      (CHECK_RANGED_INTEGER, CHECK_TYPE_RANGED_INTEGER)
      (CHECK_NUMBER_COERCE_MARKER, CHECK_NUMBER_OR_FLOAT_COERCE_MARKER)
      (DEFVAR_LISP, DEFVAR_LISP_NOPRO, DEFVAR_BOOL, DEFVAR_INT)
      (DEFVAR_BUFFER_DEFAULTS, DEFVAR_KBOARD, QUIT)
      (RETURN_UNGCPRO, USE_SAFE_ALLOCA, SAFE_NALLOCA, SAFE_FREE)
      (SAFE_ALLOCA_LISP, FOR_EACH_ALIST_VALUE, functionp):
      * src/syntax.h (SYNTAX_ENTRY, SYNTAX_WITH_FLAGS, SYNTAX)
      (UPDATE_SYNTAX_TABLE_FORWARD, UPDATE_SYNTAX_TABLE_BACKWARD)
      (SETUP_BUFFER_SYNTAX_TABLE):
      * src/systime.h (timespec_valid_p):
      * src/term.c (save_and_enable_current_matrix):
      * src/window.h (WINDOW_MENU_BAR_P, WINDOW_TOOL_BAR_P):
      * src/xdisp.c (in_display_vector_p, display_tool_bar_line)
      (redisplay_internal, try_window_reusing_current_matrix)
      (sync_frame_with_window_matrix_rows, try_window_id)
      (display_menu_bar, display_tty_menu_item, display_mode_line)
      (coords_in_mouse_face_p, cursor_in_mouse_face_p):
      * src/xmenu.c (xmenu_show):
      * src/xterm.c (use_xim, x_term_init):
      * src/xterm.h (XSync, GTK_CHECK_VERSION, use_xim, SET_SCROLL_BAR_X_WIDGET)
      (struct x_bitmap_record):
      Use bool for booleans.
      * src/ccl.c (struct buffer_text):
      * src/ccl.h (struct ccl_program):
      * src/charset.h (struct charset):
      * src/cm.h (struct cm):
      * src/coding.h (struct iso_2022_spec, struct coding_system):
      * src/dispextern.h (struct glyph, struct glyph_matrix, struct glyph_row)
      (struct glyph_string, struct face, struct face_cache)
      (struct bidi_string_data, struct bidi_it)
      (struct draw_fringe_bitmap_params, struct it, Mouse_HLInfo)
      (struct image):
      * src/editfns.c (Fformat):
      * src/frame.h (struct frame):
      * src/fringe.c (struct fringe_bitmap):
      * src/intervals.h (struct interval):
      * src/keyboard.h (struct kboard):
      * src/lisp.h (struct Lisp_Symbol, struct Lisp_Misc_Any, struct Lisp_Marker)
      (struct Lisp_Overlay, struct Lisp_Save_Value, struct Lisp_Free)
      (struct Lisp_Buffer_Local_Value, union specbinding):
      * src/macfont.m (struct macfont_info):
      * src/process.h (struct Lisp_Process):
      * src/termchar.h (struct tty_display_info):
      * src/window.h (struct window):
      * src/xterm.h (struct x_output):
      Use bool_bf for boolean bit-fields.
      * src/ccl.c (setup_ccl_program): Now returns bool instead of -1 or 0.
      All callers changed.
      * src/ccl.h (struct ccl_program): Remove unused members private_state,
      src_multibyte, dst_multibyte, cr_consumed, suppress_error,
      eight_bit_control.
      (struct ccl_spec): Remove unused members cr_carryover,
      eight_bit_carryover.
      * src/conf_post.h: Include <stdbool.h>.
      (bool_bf): New type.
      * src/dispextern.h (TRACE, PREPARE_FACE_FOR_DISPLAY):
      * src/interval.h (RESET_INTERVAL, COPY_INTERVAL_CACHE, MERGE_INTERVAL_CACHE)
      Surround statement macro with proper 'do { ... } while (false)' brackets.
      (SET_MATRIX_ROW_ENABLED_P): Assume 2nd arg is bool.
      (PRODUCE_GLYPHS): Simplify use of boolean.
      * src/fileio.c (Fcopy_file):
      If I is an integer, prefer 'if (I != 0)' to 'if (I)'.
      * src/lisp.h (UNGCPRO): Return void, not int.
      (FOR_EACH_TAIL): Use void expression, not int expression.
      * src/region-cache.c: Reindent.
      * src/region-cache.h: Copy comments from region-cache.c, to fix
      incorrect remarks about booleans.
      96c06863
  22. 12 Dec, 2013 1 commit
  23. 11 Dec, 2013 2 commits
    • Dmitry Antipov's avatar
      * nsterm.m (x_free_frame_resources): · 5a80236f
      Dmitry Antipov authored
      * term.c (tty_free_frame_resources):
      * xterm.c (x_free_frame_resources): Do not check for non-NULL
      face cache because it's implied by free_frame_faces anyway.
      * w32term.c (x_free_frame_resources): Likewise.  Do not call
      free_frame_faces twice.
      5a80236f
    • Martin Rudalics's avatar
      Various fixes around Bug#16013. · d94c40c1
      Martin Rudalics authored
      * window.c (resize_frame_windows): Don't return immediately when
      the root window's size doesn't change - the minibuffer window
      may still have to be repositioned/resized.
      * xfns.c (Fx_create_frame): Always change the frame size after
      initializing the frame's faces.
      * xterm.c (handle_one_xevent): Don't set pixel sizes here,
      change_frame_size should already have done it.
      (x_new_font): Assign new tool- and menu-bar heights.
      (x_set_window_size_1): Account for tool- and menu-bar heights
      (Bug#16013). Don't set pixel sizes since change_frame_size
      should already have done it.
      d94c40c1
  24. 07 Dec, 2013 1 commit
    • Paul Eggert's avatar
      Fix minor problems found by static checking. · 67840e66
      Paul Eggert authored
      * keyboard.c (poll_for_input_1, input_polling_used):
      Define only if HAVE_NTGUI.
      * xmenu.c (popup_activate_callback): Omit unnecessary
      check against USE_X_TOOLKIT, which must be defined here anyway.
      * xterm.c, xterm.h (x_dispatch_event) [! (USE_X_TOOLKIT || USE_MOTIF)]:
      Now static.
      67840e66
  25. 06 Dec, 2013 1 commit
    • Dmitry Antipov's avatar
      * xterm.c (input_signal_count): Remove. · 64ed4306
      Dmitry Antipov authored
      (x_dispatch_event): Define unconditionally.
      (x_make_frame_visible): Process X events until the frame
      is really visible (Bug#16027).
      * xterm.h (x_dispatch_event): Declare unconditionally.
      64ed4306
  26. 05 Dec, 2013 1 commit
  27. 04 Dec, 2013 1 commit
  28. 03 Dec, 2013 2 commits
    • Martin Rudalics's avatar
      Fix last fix (Bug#16036) · 4525072b
      Martin Rudalics authored
      4525072b
    • Martin Rudalics's avatar
      Fix issues related to pixelwise resizing. (Bug#16013) (Bug#16033) · 7303a0ae
      Martin Rudalics authored
      * window.c (Fset_window_new_pixel): Don't choke at negative
      argument value (Bug#16033).
      
      * xfns.c (Fx_create_frame): Add another call to change_frame_size
      to avoid crash in window_box_height.
      
      * gtkutil.h: Fix external declaration of xg_frame_set_char_size.
      * gtkutil.c (xg_frame_set_char_size, style_changed_cb): Fix size
      calculation.
      * xterm.c (x_set_window_size): Fix size calculation (Bug#16013).
      7303a0ae
  29. 02 Dec, 2013 1 commit
    • YAMAMOTO Mitsuharu's avatar
      Remove fringe background extension code on X11. · e0e0af3b
      YAMAMOTO Mitsuharu authored
      * xterm.h (struct scroll_bar): Remove member `fringe_extended_p'.
      
      * xterm.c (x_draw_fringe_bitmap, x_scroll_run): Remove code for
      fringe background extension.
      (x_scroll_bar_create): Remove variables `sb_left' and `sb_width',
      because they are now always the same as `left' and `width',
      respectively.  Remove code for the case that `width' and
      `sb_width' are different.
      e0e0af3b
  30. 30 Nov, 2013 3 commits
    • Martin Rudalics's avatar
      Remove some unused items introduced during pixelwise change. · 90caab3f
      Martin Rudalics authored
      * window.c (window_resize_total_check): Remove unused function.
      * xdisp.c (remember_mouse_glyph): Remove unused label.
      (Ftool_bar_height): Move declaration inside #if.
      * xterm.c (x_set_window_size): Don't use r and c.
      90caab3f
    • Martin Rudalics's avatar
      Support resizing frames and windows pixelwise. · 880e6158
      Martin Rudalics authored
      * dispextern.h (enum window_part): Add ON_SCROLL_BAR,
      ON_RIGHT_DIVIDER and ON_BOTTOM_DIVIDER.
      (struct glyph_matrix): Replace window_left_col and
      window_top_line by window_pixel_left and window_pixel_top.
      (WINDOW_WANTS_MODELINE_P, WINDOW_WANTS_HEADER_LINE_P): Minor
      rewrite.
      (enum face_id): Add WINDOW_DIVIDER_FACE_ID.
      (draw_window_divider, move_it_to, x_draw_right_divider)
      (x_draw_bottom_divider, change_frame_size): Add or fix
      declarations.
      * dispnew.c (change_frame_size_1): Change prototype.
      (adjust_glyph_matrix, required_matrix_width)
      (adjust_frame_glyphs_for_window_redisplay): Use pixel
      values instead of lines and columns.
      (marginal_area_string): Use WINDOW_FRINGES_WIDTH instead of
      WINDOW_TOTAL_FRINGE_WIDTH.
      (handle_window_change_signal, do_pending_window_change)
      (init_display): Adjusts calls of change_frame_size.
      (change_frame_size, change_frame_size_1): Handle pixelwise
      changes.
      * frame.c (Qright_divider_width, Qbottom_divider_width): New
      Lisp objects.
      (set_menu_bar_lines_1, set_menu_bar_lines, make_frame)
      (make_terminal_frame, Fmake_terminal_frame, Fframe_parameters)
      (x_set_internal_border_width, x_set_vertical_scroll_bars)
      (x_set_scroll_bar_width, x_figure_window_size): Handle pixel
      values.
      (set_frame_param): New function.
      (Fframe_text_cols, Fframe_text_lines, Fframe_total_cols)
      (Fframe_text_width, Fframe_text_height, Fscroll_bar_width)
      (Ffringe_width, Fborder_width, Fright_divider_width)
      (Fbottom_divider_width): New functions, defsubr them.
      (Fset_frame_height, Fset_frame_width, Fset_frame_size): New
      argument pixelwise.
      (struct frame_parm_table): New members Qright_divider_width and
      Qbottom_divider_width.
      (x_set_frame_parameters): Handle parameters for pixelwise sizes.
      (x_report_frame_params): Handle Qright_divider_width and
      Qbottom_divider_width.
      (x_set_right_divider_width, x_set_bottom_divider_width): New
      functions.
      (frame_resize_pixelwise): New option.
      * frame.h (struct frame): Add tool_bar_height, menu_bar_height,
      new_pixelwise, right_divider_width and bottom_divider_width;
      remove total_lines; rename text_lines, text_cols, new_text_lines
      and new_text_cols to text_height, text_width, new_height and
      new_width respectively.
      (FRAME_LINES, FRAME_COLS): Rename to FRAME_TEXT_HEIGHT and
      FRAME_TEXT_WIDTH respectively.
      (FRAME_MENU_BAR_HEIGHT, FRAME_TOOL_BAR_HEIGHT)
      (FRAME_RIGHT_DIVIDER_WIDTH, FRAME_BOTTOM_DIVIDER_WIDTH)
      (FRAME_TEXT_TO_PIXEL_WIDTH, FRAME_PIXEL_TO_TEXT_WIDTH): New
      macros.
      (FRAME_TOP_MARGIN_HEIGHT, FRAME_LEFT_SCROLL_BAR_AREA_WIDTH)
      (FRAME_RIGHT_SCROLL_BAR_AREA_WIDTH, FRAME_SCROLL_BAR_AREA_WIDTH)
      (SET_FRAME_COLS, SET_FRAME_WIDTH, SET_FRAME_HEIGHT)
      (FRAME_TEXT_COLS_TO_PIXEL_WIDTH, FRAME_PIXEL_WIDTH_TO_TEXT_COLS)
      (FRAME_TEXT_COLS_TO_PIXEL_WIDTH): Rewrite macros.
      (FRAME_TOTAL_COLS_ARG): Remove macro.
      * fringe.c (draw_fringe_bitmap_1): Handle right divder.
      * gtkutil.c (xg_frame_resized, xg_frame_set_char_size)
      (x_wm_set_size_hint): Handle frame pixel sizes.
      * indent.c (compute_motion, Fcompute_motion): Call
      window_body_width instead of window_body_cols.
      * keyboard.c (Qright_divider, Qbottom_divider): New symbols.
      (make_lispy_position): Handle right and bottom dividers.
      (Fsuspend_emacs): Pixelize call of change_frame_size.
      * keyboard.h: Extern Qright_divider, Qbottom_divider.
      * lisp.h: Extern set_frame_param.
      * nsfns.m (x_set_tool_bar_lines): Pixelize call of
      x_set_window_size.
      (Fx_create_frame): Add entry for vertical_drag_cursor.  Pixelize
      call of change_frame_size.
      * nsterm.h (struct ns_output): Add vertical_drag_cursor.
      * nsterm.m (ns_update_window_end): Optionally draw right
      divider.
      (x_set_window_size): Add argument pixelwise.  Call
      check_frame_size and change_frame_size with pixelwise zero.
      (ns_draw_window_divider): New function.
      (ns_redisplay_interface): Add ns_draw_window_divider.
      (updateFrameSize:): Call change_frame_size with pixelwise zero.
      (x_new_font): Call x_set_window_size with pixelwise zero.
      * print.c (print_object): For a window print its sequence
      number again.
      * term.c (Fresume_tty): Pixelize call of change_frame_size.
      * w32fns.c (x_set_mouse_color): Handle vertical drag cursor.
      (x_set_menu_bar_lines, x_set_tool_bar_lines): Calculate pixelwise.
      (w32_createwindow): Use scroll bar area width.
      (w32_wnd_proc): Handle bottom divider width.  For
      WM_WINDOWPOSCHANGING return zero if we resize pixelwise.
      (Fx_create_frame): Default divider width parameters.  Caclulate
      sizes pixelwise.  Add vertical drag cursor support.
      (x_create_tip_frame): Default divider widths to zero.  Pixelize
      call to change_frame_size.
      (Fx_show_tip): Add handling of divider widths.  Pixelize window
      position and sizes.
      (Fw32_frame_rect): New function.
      (frame_parm_handler w32_frame_parm_handlers): Add divider
      widths.
      (Vx_window_vertical_drag_shape): Add variable.
      * w32inevt.c (resize_event, maybe_generate_resize_event):
      Pixelize change_frame_size calls.
      * w32menu.c (set_frame_menubar): Pixelize x_set_window_size
      call.
      * w32term.c (w32_draw_window_divider): New function.
      (x_update_window_end): Handle right divider.
      (w32_draw_fringe_bitmap, x_scroll_run)
      (w32_set_vertical_scroll_bar): Pixelize scrollbar widths.
      (w32_read_socket): Handle SIZE_MAXIMIZED separately.  Calculate
      new frame sizes pixelwise.
      (x_new_font): Pixelize call to x_set_window_size.
      (x_check_fullscreen): Pixelize call to change_frame_size.
      (x_set_window_size_1, x_set_window_size): New argument
      pixelwise.  Calculate pixelwise.
      (x_wm_set_size_hint): Use scroll bar area width.
      (w32_redisplay_interface): Add w32_draw_window_divider.
      * w32term.h (struct w32_output): Add vertical drag cursor.
      * widget.c (set_frame_size, update_wm_hints)
      (EmacsFrameResize, EmacsFrameSetValues): Pixelize calls of
      change_frame_size.
      (EmacsFrameSetCharSize): Pixelize call of x_set_window_size.
      * window.c (sequence_number): Restore.
      (Fwindow_pixel_width, Fwindow_pixel_height)
      (Fwindow_mode_line_height, Fwindow_header_line_height)
      (window_pixel_to_total, Frun_window_scroll_functions)
      (Fset_window_new_pixel, window_resize_apply_total)
      (Fwindow_resize_apply_total): New functions.
      (window_body_height, window_body_width): Rename from
      window_body_lines.  New argument PIXELWISE.  Calculate
      pixelwise.
      (Fwindow_body_height, Fwindow_body_width): New argument
      PIXELWISE.
      (coordinates_in_window, window_relative_x_coord): Use window's
      pixel width instead of total width.
      (replace_window, recombine_windows): Initialize pixel values.
      (resize_root_window, resize_frame_windows, grow_mini_window)
      (shrink_mini_window): New argument PIXELWISE.  Calculate
      pixelwise.
      (Fdelete_other_windows_internal, adjust_window_margins)
      (window_resize_check, window_resize_apply)
      (Fdelete_window_internal, Fresize_mini_window_internal)
      (Fwindow_text_width, Fwindow_text_height): Calculate pixelwise.
      (check_frame_size): Rename arguments.  New argument PIXELWISE.
      Calculate pixelwise.
      (set_window_buffer): Make samebuf bool.  Run configuration change
      hook only if buffer changed.
      (Fset_window_buffer): Rewrite doc-string.
      (make_window): Initialize new_pixel slot.
      (Fwindow_resize_apply): Check pixel size of root window.
      (Fsplit_window_internal): Call 2nd argument pixel_size.
      Calculate pixelwise.
      (Fscroll_left, Fscroll_right): Call window_body_width instead of
      window_body_cols.
      (save_window_data): New slots frame_text_width,
      frame_text_height, frame_menu_bar_height, frame_tool_bar_height.
      (saved_window): New slots pixel_left, pixel_top, pixel_height,
      pixel_width.
      (Fcurrent_window_configuration, Fset_window_configuration)
      (save_window_save, compare_window_configurations): Handle new
      slots in save_window_data and saved_window.
      (Fset_window_scroll_bars): Fix doc-string.
      (window_resize_pixelwise): New variable.
      (coordinates_in_window, Fcoordinates_in_window_p): Handle
      dividers.
      (make_parent_window): Adjust sequence_number.
      (Fwindow_right_divider_width, Fwindow_bottom_divider_width): New
      functions.
      * window.h (struct window): New members new_pixel, pixel_left,
      pixel_top, pixel_width, pixel_height.  Restore sequence_number.
      (wset_new_pixel): New function.
      (WINDOW_PIXEL_WIDTH, WINDOW_PIXEL_HEIGHT)
      (MIN_SAFE_WINDOW_PIXEL_WIDTH, MIN_SAFE_WINDOW_PIXEL_HEIGHT)
      (WINDOW_LEFT_PIXEL_EDGE, WINDOW_RIGHT_PIXEL_EDGE)
      (WINDOW_TOP_PIXEL_EDGE, WINDOW_BOTTOM_PIXEL_EDGE)
      (WINDOW_BOTTOMMOST_P, WINDOW_BOX_LEFT_PIXEL_EDGE)
      (WINDOW_BOX_RIGHT_PIXEL_EDGE, WINDOW_MARGINS_COLS)
      (WINDOW_MARGINS_WIDTH, WINDOW_RIGHT_DIVIDER_WIDTH)
      (WINDOW_BOTTOM_DIVIDER_WIDTH): New macros.
      (WINDOW_TOTAL_FRINGE_WIDTH): Rename to WINDOW_FRINGES_WIDTH.
      (WINDOW_TOTAL_WIDTH, WINDOW_TOTAL_HEIGHT): Remove macros.
      (WINDOW_RIGHT_EDGE_X, WINDOW_LEFT_EDGE_X, WINDOW_TOP_EDGE_Y)
      (WINDOW_BOTTOM_EDGE_Y, WINDOW_FULL_WIDTH_P, WINDOW_LEFTMOST_P)
      (WINDOW_RIGHTMOST_P, WINDOW_BOX_LEFT_EDGE_X)
      (WINDOW_BOX_RIGHT_EDGE_X, WINDOW_FRINGE_COLS)
      (WINDOW_BOX_HEIGHT_NO_MODE_LINE, WINDOW_BOX_TEXT_HEIGHT):
      Rewrite.
      (resize_frame_windows, grow_mini_window, shrink_mini_window)
      (window_body_width, check_frame_size): Adapt external declarations.
      * xdisp.c (last_max_ascent): New integer.
      (window_text_bottom_y): Handle bottom divider.
      (window_box_width, window_box_height): Calculate pixelwise.
      (get_glyph_string_clip_rects): Handle right divider.
      (remember_mouse_glyph): When windows are resized pixelwise
      proceed with width and height set to 1.
      (init_iterator): Use WINDOW_PIXEL_WIDTH instead of
      WINDOW_TOTAL_WIDTH.
      (move_it_to): Calculate and return maximum x position
      encountered.
      (Fwindow_text_pixel_size): New function.
      (resize_mini_window, update_tool_bar): Calculate pixelwise.
      (tool_bar_lines_needed): Rename to tool_bar_height.  Calculate
      pixelwise.
      (Ftool_bar_lines_needed): Rename to Ftool_bar_height.  Calculate
      pixelwise.
      (redisplay_tool_bar): Calculate pixelwise.
      (redisplay_window): Calculate pixelwise.  Handle dividers.
      (draw_glyphs, x_clear_end_of_line, note_mouse_highlight)
      (x_draw_vertical_border): Handle dividers.
      (define_frame_cursor1): Handle vertical drag cursor.
      (x_draw_right_divider, x_draw_bottom_divider): New functions.
      (expose_window): Calculate pixelwise.  Handle dividers.
      (init_xdisp): Initialize pixel values.
      * xfaces.c (Qwindow_divider): New face.
      (realize_basic_faces): Realize it.
      * xfns.c (x_set_mouse_color): Handle vertical_drag_cursor.
      (x_set_menu_bar_lines, x_set_tool_bar_lines): Calculate pixelwise.
      (x_set_scroll_bar_default_width): Default actual width to 16.
      (Fx_create_frame): Set sizes pixelwise.
      (x_create_tip_frame): Default divider widths to zero.  Pixelize
      call of change_frame_size.
      (Fx_show_tip): Handle divider widths.  Initial pixel position
      and sizes.
      (frame_parm_handler x_frame_parm_handlers): Add divider widths.
      (Vx_window_vertical_drag_shape): New option.
      * xmenu.c (free_frame_menubar): Pixelize call of
      x_set_window_size.
      * xterm.c (x_draw_window_divider): New function.
      (x_update_window_end): Optionally draw right divider.
      (x_draw_fringe_bitmap, x_scroll_run, x_scroll_bar_create)
      (XTset_vertical_scroll_bar): Use scroll bar pixel width.
      (handle_one_xevent, x_new_font): Calculate pixelwise.
      (x_set_window_size_1, x_set_window_size): New argument
      pixelwise.  Calculate pixelwise.
      (x_wm_set_size_hint): Pixelize call of check_frame_size.
      (struct x_redisplay_interface): Add x_draw_window_divider.
      * xterm.h (struct x_output): Add vertical_drag_cursor.
      
      * cus-start.el (frame-resize-pixelwise)
      (window-resize-pixelwise): New entries.
      * emacs-lisp/debug.el (debug): Use window-total-height instead
      of window-total-size.
      * frame.el (tool-bar-lines-needed): Defalias to tool-bar-height.
      * help.el (describe-bindings-internal): Call help-buffer
      (temp-buffer-max-width): New option.
      (resize-temp-buffer-window, help-window-setup)
      (with-help-window): Rewrite.
      * mouse.el (mouse-drag-line): Rewrite.  Add key bindings for
      dragging dividers.
      * window.el (frame-char-size, window-min-pixel-height)
      (window-safe-min-pixel-height, window-safe-min-pixel-width)
      (window-min-pixel-width, window-safe-min-pixel-size)
      (window-combination-p, window-safe-min-size)
      (window-resizable-p, window--size-to-pixel)
      (window--pixel-to-size, window--resize-apply-p): New functions.
      (window-safe-min-height): Fix doc-string.
      (window-size, window-min-size, window--min-size-1)
      (window-sizable, window-sizable-p, window--min-delta-1)
      (window-min-delta, window--max-delta-1, window-max-delta)
      (window--resizable, window--resizable-p, window-resizable)
      (window-full-height-p, window-full-width-p, window-at-side-p)
      (window--in-direction-2, window-in-direction)
      (window--resize-reset-1, window--resize-mini-window)
      (window-resize, window-resize-no-error)
      (window--resize-child-windows-normal)
      (window--resize-child-windows, window--resize-siblings)
      (window--resize-this-window, window--resize-root-window)
      (window--resize-root-window-vertically)
      (adjust-window-trailing-edge, enlarge-window, shrink-window)
      (maximize-window, minimize-window, delete-window)
      (quit-restore-window, window-split-min-size, split-window)
      (balance-windows-2, balance-windows)
      (balance-windows-area-adjust, balance-windows-area)
      (window--state-get-1, window-state-get, window--state-put-1)
      (window--state-put-2, window-state-put)
      (display-buffer-record-window, window--display-buffer): Make
      functions handle pixelwise sizing of windows.
      (display-buffer--action-function-custom-type)
      (display-buffer-fallback-action): Add
      display-buffer-in-previous-window.
      (display-buffer-use-some-window): Resize window to height it had
      before.
      (fit-window-to-buffer-horizontally): New option.
      (fit-frame-to-buffer): Describe new values.
      (fit-frame-to-buffer-bottom-margin): Replace with
      fit-frame-to-buffer-margins.
      (window--sanitize-margin): New function.
      (fit-frame-to-buffer, fit-window-to-buffer): Rewrite completely
      using window-text-pixel-size.
      880e6158
    • Stefan Monnier's avatar
      * src/xdisp.c (redisplay_internal): Don't call set_window_update_flags. · 44ad1cf7
      Stefan Monnier authored
      Set invisible frames's `redisplay' when a full redisplay is requested.
      (redisplay_window): Set must_be_updated_p instead.
      (redisplay_mode_lines): Don't set must_be_updated_p any more.
      (display_mode_lines): Set it here instead.
      * src/dispextern.h (set_window_update_flags): Remove.
      * src/dispnew.c (set_window_update_flags): Remove `b' argument; make static.
      
      Fixes: debbugs:15999
      44ad1cf7
  31. 29 Nov, 2013 1 commit
    • Stefan Monnier's avatar
      * configure.ac (HAVE_MENUS): Remove. · 7cdf484b
      Stefan Monnier authored
      * src/xmenu.c (Fmenu_or_popup_active_p):
      * src/window.c (Fset_window_configuration):
      * src/menu.c (Fx_popup_menu, Fx_popup_dialog):
      * src/keyboard.c (record_menu_key, read_char_x_menu_prompt):
      * src/fns.c (Fyes_or_no_p):
      * src/editfns.c (Fmessage_box, Fmessage_or_box):
      * src/alloc.c (make_save_ptr_ptr):
      * src/xdisp.c, src/w32menu.c, src/term.c, src/xterm.h, src/xterm.c:
      Remove HAVE_MENUS.
      7cdf484b
  32. 28 Nov, 2013 1 commit
    • Stefan Monnier's avatar
      Refine redisplay optimizations to only redisplay *some* frames/windows · 655ab9a3
      Stefan Monnier authored
      rather than all of them.
      * src/xdisp.c (REDISPLAY_SOME): New constant.
      (redisplay_other_windows, wset_redisplay, fset_redisplay)
      (bset_redisplay, bset_update_mode_line): New functions.
      (message_dolog): Use bset_redisplay.
      (clear_garbaged_frames): Use fset_redisplay.
      (echo_area_display): Use wset_redisplay.
      (buffer_shared_and_changed): Remove.
      (prepare_menu_bars): Call Vpre_redisplay_function before updating
      frame titles.  Compute the actual set of windows redisplayed.
      Don't update frame titles and menu bars for frames that don't need to
      be redisplayed.
      (propagate_buffer_redisplay): New function.
      (AINC): New macro.
      (redisplay_internal): Use it.  Be more selective in the set of windows
      we redisplay.  Propagate windows_or_buffers_changed to
      update_mode_lines a bit later to simplify the code.
      (mark_window_display_accurate_1): Reset window and buffer's
      `redisplay' flag.
      (redisplay_window): Do nothing if neither the window nor the buffer nor
      the frame needs redisplay.
      * src/window.h (struct window): Add `redisplay' field.
      (wset_redisplay, fset_redisplay, bset_redisplay, bset_update_mode_line)
      (redisplay_other_windows, window_list): New declarations.
      * src/window.c (select_window, Fset_window_start): Use wset_redisplay.
      (window_list): Not static any more.
      (grow_mini_window, shrink_mini_window): Use fset_redisplay.
      * src/minibuf.c (read_minibuf_unwind): Don't redisplay everything.
      * src/insdel.c (prepare_to_modify_buffer_1): Use bset_redisplay.
      * src/frame.c (Fmake_frame_visible): Don't redisplay everything.
      * src/frame.h (struct frame): Add `redisplay' field.
      Move `external_menu_bar' bitfield next to other bit-fields.
      (SET_FRAME_GARBAGED): Use fset_redisplay.
      (SET_FRAME_VISIBLE): Don't garbage the frame;
      Use redisplay_other_windows.
      * src/buffer.h (struct buffer): Add `redisplay' field.
      * src/buffer.c (Fforce_mode_line_update): Pay attention to the `all' flag.
      (modify_overlay): Use bset_redisplay.
      * src/alloc.c (gc_sweep): Don't unmark strings while sweeping symbols.
      
      * lisp/doc-view.el (doc-view-goto-page): Update mode-line.
      655ab9a3
  33. 24 Nov, 2013 1 commit