1. 12 Jul, 2014 1 commit
    • Eli Zaretskii's avatar
      Document the behavior of file selection dialogs on Windows 7 (bug #17950). · 47f63aa7
      Eli Zaretskii authored
       etc/PROBLEMS: Mention the problem from bug #17950.
      
       src/w32fns.c (Fx_file_dialog): Mention in the doc string the
       behavior on Windows 7 and later when the function is repeatedly
       invoked with the same value of DIR.
       src/xfns.c (Fx_file_dialog) [USE_MOTIF, USE_GTK]: Update the doc
       string to match the one in w32fns.c.
      47f63aa7
  2. 07 Jul, 2014 1 commit
    • Paul Eggert's avatar
      Minor fixups related to usage of the 'long' type. · cae17e36
      Paul Eggert authored
      * gnutls.c (emacs_gnutls_handshake):
      * xfaces.c (dump_realized_face):
      Work even if 'long' is narrower than 'void *'.
      * termcap.c (scan_file):
      * xselect.c (x_decline_selection_request)
      (x_reply_selection_request, x_get_window_property):
      * xterm.c (x_set_frame_alpha):
      Remove unnecessary 'L' suffixes of integer constants.
      * xfns.c (hack_wm_protocols):
      * xselect.c (x_fill_property_data):
      * xterm.c (x_set_offset, x_set_window_size_1, x_make_frame_invisible):
      Remove unnecessary casts to 'long'.
      (set_machine_and_pid_properties): Don't assume pid_t fits in 32 bits.
      cae17e36
  3. 04 Jul, 2014 1 commit
    • Jan Djärv's avatar
      Backport from trunk. · 8069993e
      Jan Djärv authored
      * xfns.c (create_frame_xic): Pass XNStatusAttributes to XCreateIC
      only if xic_style calls for it.  This change allows Emacs to work
      with ibus.  Also, don't leak resources if create_frame_xic fails,
      and stop caching xic_style across different displays.
      (supported_xim_styles): Make const.
      (best_xim_style): Remove first parameter: it's always just
      supported_xim_styles.  Change to look at supported_xim_styles
      directly.
      
      Fixes: debbugs:17928
      8069993e
  4. 29 Jun, 2014 1 commit
  5. 22 Jun, 2014 1 commit
    • Dmitry Antipov's avatar
      * xmenu.c (mouse_position_for_popup): · b0358ef8
      Dmitry Antipov authored
      * xselect.c (mouse_position_for_drop): Do not duplicate ...
      * xfns.c (x_relative_mouse_position): ... and prefer this function.
      * menu.c (Fx_popup_menu):
      * xselect.c (x_handle_dnd_message): Adjust users.
      * menu.h (mouse_position_for_popup): Remove prototype.
      * xterm.h (x_relative_mouse_position): Add prototype.
      * xterm.c (x_find_topmost_parent): Break from the loop and do not
      call XFree if XQueryTree returns zero.
      b0358ef8
  6. 17 Jun, 2014 1 commit
    • Paul Eggert's avatar
      Omit redundant extern decls. · 73bfe891
      Paul Eggert authored
      Most of this patch is from Dmitry Antipov, in:
      http://lists.gnu.org/archive/html/emacs-devel/2014-06/msg00263.html
      * configure.ac (WERROR_CFLAGS): Add -Wredundant-decls.
      * lib-src/emacsclient.c (getenv): Remove decl.
      * lib-src/make-docfile.c (write_globals): Add ATTRIBUTE_CONST for
      Fbyteorder, Ftool_bar_height, Fmax_char, Fidentity.
      * lwlib/lwlib-Xm.c (lw_motif_widget_p, xm_update_one_value)
      (xm_create_dialog, xm_destroy_instance, xm_popup_menu)
      (xm_set_keyboard_focus, xm_set_main_areas): Remove decls.
      * src/commands.h (update_mode_lines):
      * src/frame.h (Qbackground_color, Qforeground_color)
      (x_set_menu_bar_lines):
      * src/ftfont.c (ftfont_font_format):
      * src/intervals.h (Qkeymap, Qfont):
      * src/keyboard.c (timer_check, safe_run_hooks, Qregion_extract_function):
      * src/lisp.h (Ffboundp, Qnil, Qt, Qlambda, Qintegerp, Qwholenump)
      (Qsymbolp, Qlisp, Qconsp, Qstringp, Qarrayp, Qbufferp, Qmarkerp)
      (Qvectorp, Qbuffer_or_string_p, Qchar_table_p, Qvector_or_char_table_p)
      (Qfloatp, Qnumberp, Qfont_spec, Qfont_entity, Qfont_object)
      (Fbyteorder, wrong_type_argument, Fmax_char, syms_of_composite)
      (Fidentity, extract_float, init_display, syms_of_display, Qdisplay):
      (Qimage, Qbox, redisplay_preserve_echo_area, char_table_ref)
      (char_table_set, char_table_translate, Qautoload, Qbottom, Qtop)
      (Qvisible, Qfont, Qfront_sticky, Qrear_nonsticky, init_sigio)
      (Qtool_bar, Qheader_line):
      * src/macros.c (Fexecute_kbd_macro):
      * src/xdisp.c (Ftool_bar_height, Ftool_bar_height):
      * src/xterm.c (x_delete_terminal, XSetIMValues):
      * src/xterm.h (x_set_window_size, x_query_color, x_get_focus_frame)
      (x_implicitly_set_name, popup_activated)
      (widget_store_internal_border):
      Remove redundant decls.
      * src/frame.c [USE_X_TOOLKIT]: Include widget.h.
      * src/keyboard.c (Fexit_recursive_edit, Fabort_recursive_edit):
      Remove _Noreturn, as make-docfile now does that for us.
      * src/lisp.h (DEFUN): Don't declare fnname here; rely on make-docfile.
      (Qregion_extract_function): New decl.
      * src/window.c, src/xfns.c: Include menu.h.
      73bfe891
  7. 27 May, 2014 1 commit
  8. 24 May, 2014 1 commit
  9. 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
  10. 03 Apr, 2014 2 commits
  11. 23 Mar, 2014 3 commits
  12. 11 Mar, 2014 1 commit
  13. 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
  14. 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
  15. 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
  16. 01 Jan, 2014 1 commit
  17. 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
  18. 11 Dec, 2013 1 commit
    • 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
  19. 03 Dec, 2013 3 commits
    • Martin Rudalics's avatar
      Again fix last fix. · bab5c317
      Martin Rudalics authored
      bab5c317
    • 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
    • Paul Eggert's avatar
      Minor integer overflow fixes. · 25636e13
      Paul Eggert authored
      * window.c (Fset_window_new_pixel, grow_mini_window):
      * xdisp.c (Fwindow_text_pixel_size):
      Avoid undefined behavior on signed integer overflow.
      * xfns.c (x_set_mouse_color):
      Check that drag shape fits in 'unsigned', since that's what X wants.
      25636e13
  20. 30 Nov, 2013 1 commit
    • 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
  21. 14 Nov, 2013 1 commit
    • Paul Eggert's avatar
      Prefer tail calls. · d672ac3c
      Paul Eggert authored
      * lib-src/ebrowse.c (xstrdup):
      * lib-src/etags.c (savenstr):
      * lwlib/lwlib.c (safe_strdup):
      * src/xfns.c (xic_create_fontsetname):
      * src/xrdb.c (gethomedir): Prefer tail calls.
      * lib-src/etags.c (concat): Omit unnecessary assignment.
      d672ac3c
  22. 06 Nov, 2013 2 commits
  23. 29 Oct, 2013 1 commit
    • Dmitry Antipov's avatar
      * xterm.h (struct x_output): For 'black_relief' and 'white_relief' · 0085b9be
      Dmitry Antipov authored
      fields, drop 'allocated_p' member and use -1 for uninitialized value.
      * w32term.h (struct w32_output): Similarly but do not use -1 because...
      * xfaces.c (unload_color) [HAVE_X_WINDOWS]: ...this function is a no-op
      on MS-Windows anyway.
      (free_face_colors): Define only if HAVE_X_WINDOWS and...
      (free_realized_face): ...adjust user.
      * xfns.c (Fx_create_frame, x_create_tip_frame): Initialize black and
      white relief pixels to -1.
      * xterm.c (x_setup_relief_color, x_free_frame_resources): Adjust users.
      * w32term.c (w32_setup_relief_color, x_free_frame_resources): Likewise.
      * dispextern.h (unload_color): Move prototype under HAVE_X_WINDOWS.
      0085b9be
  24. 18 Oct, 2013 1 commit
    • Dmitry Antipov's avatar
      Remove port-specific display name lists to avoid extra · d141d701
      Dmitry Antipov authored
      complexity and data duplication with display info lists.
      * xterm.h (x_display_name_list): Remove declaration.
      * xterm.c (x_display_name_list): Remove.
      (x_term_init, x_delete_display, syms_of_xterm): Adjust users.
      * xfns.c (x_display_info_for_name, Fx_display_list):
      Likewise.  Use x_display_list where appropriate.
      * w32term.h (w32_display_name_list): Remove declaration.
      * w32term.c (w32_display_name_list): Remove.
      (w32_initialize_display_info, x_delete_display, syms_of_w32term):
      Adjust users.
      * w32fns.c (x_display_info_for_name, Fx_display_list):
      Likewise.  Use x_display_list where appropriate.
      * nsterm.h (ns_display_name_list): Remove declaration.
      * nsterm.m (ns_display_name_list): Remove.
      (ns_term_init, syms_of_nsterm): Adjust users.
      * nsfns.m (ns_display_info_for_name, Fx_display_list):
      Likewise.  Use x_display_list where appropriate.
      * termhooks.h (TERMINAL_FONT_CACHE): New macro.
      * alloc.c (toplevel) [HAVE_WINDOW_SYSTEM]: Include TERM_HEADER.
      (mark_terminals): Mark per-terminal font cache.
      d141d701
  25. 22 Sep, 2013 1 commit
  26. 15 Sep, 2013 2 commits
  27. 13 Sep, 2013 3 commits
    • Dmitry Antipov's avatar
      Unify Fx_focus_frame between all ports. · fcd42c11
      Dmitry Antipov authored
      * src/frame.h (x_focus_frame): New prototype.
      * src/xfns.c (Fx_focus_frame): Remove.
      (syms_of_xfns): Do not defsubr it.
      (x_focus_frame): X implementation.
      * src/nsfns.m (Fx_focus_frame): Remove.
      (syms_of_nsfns): Do not defsubr it.
      (x_focus_frame): NS implementation.
      * src/w32term.c (Fx_focus_frame): Remove.
      (x_focus_on_frame): Rename to...
      (x_focus_frame): W32 implementation.
      * src/w32term.h (x_focus_on_frame): Remove prototype.
      * src/w32fns.c (Fx_focus_frame): Remove.
      (syms_of_w32fns): Do not defsubr it.
      * src/frame.c (Fx_focus_frame): Define here.
      (syms_of_frame): Defsubr here.
      * src/gtkutil.c (xg_tool_bar_callback): Use x_focus_frame.
      * lisp/frame.el (x-focus-frame): Mark as declared in frame.c.
      fcd42c11
    • Dmitry Antipov's avatar
      Unify FRAME_window_system_DISPLAY_INFO macros between all ports. · aad3612f
      Dmitry Antipov authored
      All of them are replaced with FRAME_DISPLAY_INFO, defined in
      each port to reference the port-specific window system data.
      * msdos.h (FRAME_X_DISPLAY_INFO): Remove.
      (FRAME_DISPLAY_INFO): Define.
      * w32term.h (FRAME_W32_DISPLAY_INFO, FRAME_X_DISPLAY_INFO): Remove.
      (FRAME_DISPLAY_INFO): Define.  Adjust users.
      * xterm.h (FRAME_X_DISPLAY_INFO): Remove.
      (FRAME_DISPLAY_INFO): Define.  Adjust users.
      * frame.h (FRAME_RES_X, FRAME_RES_Y): Unify.
      * font.c, frame.c, gtkutil.c, image.c, menu.c, msdos.c, nsfns.m:
      * nsfont.m, nsterm.m, w32fns.c, w32font.c, w32menu.c, w32term.c:
      * w32xfns.c, widget.c, xdisp.c, xfaces.c, xfns.c, xfont.c, xmenu.c:
      * xselect.c, xterm.c: All related users changed.
      aad3612f
    • Dmitry Antipov's avatar
      * xterm.h (x_window_to_frame, x_any_window_to_frame) · 9a650e62
      Dmitry Antipov authored
      (x_menubar_window_to_frame): Remove prototypes.
      * xfns.c (x_window_to_frame, x_any_window_to_frame)
      (x_menubar_window_to_frame, x_top_window_to_frame):
      Move from here...
      * xterm.c (x_window_to_frame, x_any_window_to_frame)
      (x_menubar_window_to_frame, x_top_window_to_frame):
      ...to here and convert all but the last to static.
      9a650e62
  28. 11 Sep, 2013 3 commits
    • Glenn Morris's avatar
      * src/emacs.c (usage_message): Possessive apostrophe tweak. · 5ec0337a
      Glenn Morris authored
      Likewise in some comments.
      5ec0337a
    • Dmitry Antipov's avatar
      * nsterm.m (syms_of_nsterm): Use Qns. · 8d2db8be
      Dmitry Antipov authored
      * w32fns.c (Fx_open_connection): Remove old '#if 0' code.
      * w32term.c (w32_create_terminal, syms_of_w32term): Use Qw32.
      * xfns.c (x_display_info_for_name, Fx_open_connection):
      Remove old '#if 0' code.
      (syms_of_xfns): Use Qx.
      8d2db8be
    • Dmitry Antipov's avatar
      Ifdef away frame tool bar code when it is not really used. · 742516e0
      Dmitry Antipov authored
      * frame.h (struct frame) [HAVE_WINDOW_SYSTEM && !USE_GTK && !HAVE_NS]:
      Move tool_bar_window, desired_tool_bar_string, current_tool_bar_string
      and minimize_tool_bar_window_p under the above.
      (fset_current_tool_bar_string, fset_desired_tool_bar_string)
      (fset_tool_bar_window): Likewise.
      * dispnew.c (clear_current_matrices, clear_desired_matrices)
      (adjust_frame_glyphs_for_window_redisplay, free_glyphs, update_frame)
      (change_frame_size_1):
      * window.c (window_from_coordinates, Frecenter): Adjust users.
      * window.h (WINDOW_TOOL_BAR_P): Define to zero when frame tool bar
      code is not really used.
      * xdisp.c (build_desired_tool_bar_string, display_tool_bar_line)
      (tool_bar_lines_needed, MAX_FRAME_TOOL_BAR_HEIGHT, tool_bar_item_info)
      (get_tool_bar_item, handle_tool_bar_click, note_tool_bar_highlight)
      [!USE_GTK && !HAVE_NS]: Define as such.
      (Ftool_bar_lines_needed, redisplay_tool_bar, show_mouse_face)
      (note_mouse_highlight, expose_frame):
      * xfns.c (x_set_tool_bar_lines):
      * xterm.c (handle_one_xevent): Adjust users.
      742516e0
  29. 06 Sep, 2013 1 commit
    • Dmitry Antipov's avatar
      Attempt to make redisplay more selective when changing fonts. · bd0443bb
      Dmitry Antipov authored
      * frame.h (struct frame): New bitfield fonts_changed.
      * dispextern.h (fonts_changed_p, adjust_glyphs): Remove declaration.
      (adjust_frame_glyphs): Add prototype.
      * dispnew.c (fonts_changed_p): Remove.
      (adjust_glyphs): Remove becase we do not
      adjust matrices on all frames at once any more.
      (adjust_frame_glyphs): Block and unblock input here.
      (adjust_glyph_matrix): Use fonts_changed.
      (change_frame_size_1): Use adjust_frame_glyphs.
      * font.c (font_open_entity): Use fonts_changed.
      * frame.c (set_menu_bar_lines, Fmake_terminal_frame):
      * w32fns.c (x_set_menu_bar_lines, x_set_tool_bar_lines, Fx_show_tip):
      * window.c (Fdelete_other_windows_internal, Fwindow_resize_apply)
      (Fsplit_window_internal, Fdelete_window_internal, grow_mini_window)
      (shrink_mini_window, Fresize_mini_window_internal)
      (window_scroll_pixel_based, Fset_window_configuration)
      (apply_window_adjustment, Fset_window_vscroll):
      * xfns.c (x_set_menu_bar_lines, x_set_tool_bar_lines, Fx_show_tip):
      Use adjust_frame_glyphs.
      * xdisp.c (redisplay_tool_bar, redisplay_window, try_window)
      (try_window_reusing_current_matrix, try_window_id, display_line)
      (IT_EXPAND_MATRIX_WIDTH): Use fonts_changed.
      (redisplay_internal): Consider fonts_changed and adjust frame
      matrices for each frame only if the frame is visible.  If font
      has been changed on some frame during full redisplay, retry
      only visible frames where the font has been actually changed.
      bd0443bb