X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/1d3710228bb29e020ab4f179b0b14362bb5691b4..aac6be13316f360bb2df46d6708ad9eea6059dc5:/src/ChangeLog diff --git a/src/ChangeLog b/src/ChangeLog index 84fe1f0256..af0589257d 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,7 +1,714 @@ +2014-08-09 Reuben Thomas + + * process.c: Fix a comment typo. + * msdos.c: + * dosfns.c (init_dosfns): Remove support for DJGPP < 2.02. + +2014-08-09 Jan Djärv + + * widgetprv.h (EmacsFramePart): Remove font. + + * widget.c (DEFAULT_FACE_FONT, EmacsFrameSetValues, setup_frame_gcs) + (resources, setup_frame_cursor_bits): Remove unused variables and + functions, esp. wrt. font (Bug#18227). + +2014-08-07 Paul Eggert + + * xterm.c (x_delete_terminal): Plug file descriptor leak (Bug#17691). + +2014-08-07 Reuben Thomas + + Refer to MS-DOS using the same name everywhere. + + * editfns.c: Fix a couple of ``MS-DOG''s missed in the previous + commit. + * xfaces.c: ditto. + +2014-08-05 Martin Rudalics + + * w32term.c (w32_redeem_scroll_bar): + * xterm.c (XTredeem_scroll_bar): Revert part of last change by + not redeeming scroll bars that have been turned off. + +2014-08-05 Dmitry Antipov + + * keyboard.c (safe_run_hooks): Follow the convenient style to bind + inhibit-quit to t and pass 2 args to safe_run_hook_funcall. See + . + (safe_run_hook_funcall): Adjust accordingly. + +2014-08-04 Martin Rudalics + + * frame.h (FRAME_HAS_HORIZONTAL_SCROLL_BARS): Condition + correctly according to toolkit used. + * frame.c (make_initial_frame, make_terminal_frame) + (x_set_horizontal_scroll_bars, x_set_scroll_bar_height) + (Vdefault_frame_horizontal_scroll_bars): Correctly condition + assignments according to presence of toolkit scrollbars. + * window.h (WINDOW_HAS_HORIZONTAL_SCROLL_BAR): Condition + correctly according to toolkit used. + * window.c (set_window_scroll_bars): Set horizontal scroll bar + only if toolkit supports it. + * w32term.c (w32_redeem_scroll_bar): Always redeem scroll bar if + present. + * xterm.c (x_scroll_bar_create): Initialize horizontal slot for + non-toolkit builds. + (XTredeem_scroll_bar): Always redeem scroll bar if present. + +2014-08-04 Dmitry Antipov + + * keyboard.c (safe_run_hook_funcall): Avoid consing around + Vinhibit_quit and prefer internal_condition_case_n to pass args. + (safe_run_hooks_error, safe_run_hooks_1): Adjust accordingly. + (safe_run_hooks): Remove comment which is not relevant any more. + +2014-08-03 Paul Eggert + + Don't let big frames overrun the stack. + * dispnew.c (mirrored_line_dance, mirror_line_dance, scrolling): + Use SAFE_NALLOCA, not alloca. + + Fix bug with clang + directory_files_internal + GC (Bug#16986). + * dired.c (directory_files_internal): Use a volatile variable + to prevent the compiler from optimizing away all copies of a local. + I wonder how many other GC-related bugs like this lurk elsewhere? + + Avoid 100% CPU utilization on ssh session exit (Bug#17691). + * xterm.h (struct x_display_info): New member 'connection'. + * xterm.c (x_term_init, x_delete_terminal): Set and use it, + so that x_delete_terminal has a file descriptor to pass to + delete_keyboard_wait_descriptor. + + Don't mishandle year-9999 dates (Bug#18176). + * editfns.c (decode_time_components): Store an invalid timespec + on overflow, instead of returning false, so that the caller can + distinguish overflow from other errors. + (lisp_time_argument, lisp_seconds_argument): If the time is out + of range, signal a time overflow instead of an invalid time spec. + * keyboard.c (decode_timer): Treat time overflow like other + timespec errors. + + Avoid undefined behavior with signed left shift. + Caught by 'gcc -fsanitize=undefined'. + * dispextern.h, scroll.c (scrolling_max_lines_saved, scrolling_1): + * dispnew.c (line_hash_code, scrolling): + * scroll.c (calculate_scrolling, calculate_direct_scrolling): + Use 'unsigned', not 'int', for line hashes. + (scrolling_max_lines_saved): Avoid mystery constants for hash sizes. + +2014-08-02 Paul Eggert + + Make compare-strings more compatible with old behavior (Bug#17903). + * fns.c (Fcompare_strings): Silently bring too-large ends into range. + +2014-08-02 Jan Djärv + + * gtkutil.c (create_dialog): Force min spacing 10 between buttons. + Don't add label between left and right buttons (Bug#18129). + +2014-08-01 Paul Eggert + + Make functions static that no longer need to be extern. + * frame.c, frame.h (set_menu_bar_lines): + * keyboard.c (Qleftmost, Qrightmost): + * xfns.c, frame.h, menu.h (x_set_menu_bar_lines, x_set_tool_bar_lines) + (x_set_internal_border_width): + Now static. + +2014-08-01 Eli Zaretskii + + Fix display of R2L lines when the last character fits only partially. + See http://lists.gnu.org/archive/html/emacs-devel/2014-07/msg00476.html + for the details. + * xdisp.c (extend_face_to_end_of_line): If the last glyph of an + R2L row is visible only partially, give the row a negative x + offset. + (display_line): Fix the calculation of the glyph whose pixel width + is used to decide whether the last produced glyph fits on the + line. When the last glyph fits only partially, give the row a + negative x offset. + + Fix hscroll of R2L lines that begin with a TAB or another wide glyph. + * xdisp.c (append_stretch_glyph): In a R2L glyph row, decrease the + pixel width of the first glyph that is hscrolled from display. + (display_line): In R2L glyph rows, don't give a negative offset to + row->x when the first glyph begins before first_visible_x. + + * xdisp.c (display_line): If called with iterator set up to write + to a marginal area, delay the call to handle_line_prefix until we + switch back to the text area. (Bug#18035) + + * .gdbinit (xwindow): The members total_cols, total_lines, + left_col, and top_line are C integers (and has been so for the + last 1.5 years). + +2014-08-01 Andreas Schwab + + * macros.c (Fstart_kbd_macro): Initialize kbd_macro_ptr and + kbd_macro_end together with kbd_macro_buffer. (Bug#18140) + +2014-08-01 Dmitry Antipov + + * atimer.c (toplevel) [HAVE_TIMERFD]: Include errno.h. + (timerfd_callback): Ignore weird events with no data. Add tight + assertions and comments. + (init_atimer) [HAVE_TIMERFD]: Add environment variable to optionally + disable timerfd-based timer. Use TFD_NONBLOCK for timer descriptor. + +2014-08-01 Paul Eggert + + * frame.c (x_set_frame_parameters): Fix typo in previous patch. + I had confused && with ||. + +2014-07-31 Paul Eggert + + Simplify timerfd configuration and fix some minor glitches. + * atimer.c (TIMERFD_CREATE_FLAGS): Remove; we now assume TFD_CLOEXEC. + (alarm_timer, alarm_timer_ok, set_alarm, init_atimer): + Fall back on timer_create if timerfd_create fails at runtime. + (resolution) [HAVE_CLOCK_GETRES]: Remove; we now rely on the + kernel primitives to do resolution. All uses removed. + (timerfd) [!HAVE_TIMERFD]: Define to be -1, for convenience. + (turn_on_atimers): Clear timer_create-based timers too, + for consistency. + + * frame.c (x_set_frame_parameters): Don't use uninitialized locals. + Without this change, the code can access the local variable 'width' + even when it has not been initialized, and likewise for 'height'; + in either case this leads to undefined behavior. + +2014-07-30 Dmitry Antipov + + * xrdb.c (x_load_resources) [USE_MOTIF]: Although not strictly + necessary, put horizontal scroll bar resources as well. See + . + * xterm.c (x_sync_with_move): Really wait 0.5s, not 0.0005s. + +2014-07-29 Dmitry Antipov + + * xrdb.c (x_load_resources) [!USE_MOTIF]: Put horizontal scroll bar + background value to match the resource of its vertical counterpart. + +2014-07-29 Martin Rudalics + + * frame.c (adjust_frame_size): Use FRAME_WINDOW_P instead of + FRAME_X_WINDOW when calling x_set_window_size (Bug#18138). + +2014-07-28 Martin Rudalics + + * frame.c (x_set_frame_parameters): Revert part of 2014-07-24 + change that added the top margin height to the requested height + and revert (undocumented) part of 2014-07-28 change that changed + the logic of whether a size change occurred. + +2014-07-28 Eli Zaretskii + + * .gdbinit (xwindow): The members total_cols, total_lines, + left_col, and top_line are C integers (and has been so for the + last 1.5 years). + + * .gdbinit (xsubchartable): The members 'depth' and 'min_char' are + now C integers. + +2014-07-28 Dmitry Antipov + + On GNU/Linux, use timerfd for asynchronous timers. + * atimer.c (toplevel) [HAVE_TIMERFD]: Include sys/timerfd.h. + (toplevel): Rename alarm_timer_ok to special_timer_available. + [HAVE_TIMERFD]: Declare timerfd. + [HAVE_CLOCK_GETRES]: Declare resolution. + (start_atimer) [HAVE_CLOCK_GETRES]: Round up timestamp to + system timer resolution. + (set_alarm) [HAVE_TIMERFD]: Use timerfd_settime. + (timerfd_callback) [HAVE_TIMERFD]: New function. + (atimer_result, debug_timer_callback, Fdebug_timer_check) + [ENABLE_CHECKING]: New function for the sake of automated tests. + (init_atimer) [HAVE_TIMERFD]: Setup timerfd. + [HAVE_CLOCK_GETRES]: Likewise for system timer resolution. + [ENABLE_CHECKING]: Defsubr test function. + * atimer.h (timerfd_callback) [HAVE_TIMERFD]: Add prototype. + * lisp.h (add_timer_wait_descriptor) [HAVE_TIMERFD]: Likewise. + * process.c (add_timer_wait_descriptor) [HAVE_TIMERFD]: New function. + + Fix --without-x build and pacify --enable-gcc-warnings. + Problems reported in Bug#18122 and Bug#18124. + * frame.c (get_frame_param): Define even if !HAVE_WINDOW_SYSTEM. + (frame_windows_min_size): Now static. + * frame.h (FRAME_HAS_HORIZONTAL_SCROLL_BARS) [!HAVE_WINDOW_SYSTEM]: + Define as no-op. + (adjust_frame_size): Always declare prototype. + + Fix Gnus-related issues reported by David Kastrup in + . + * atimer.c (timerfd_callback): Always read expiration data. + Add comment. + (turn_on_atimers) [HAVE_TIMERFD]: Disarm timerfd timer. + * process.c (add_timer_wait_descriptor): Add timer descriptor + to input_wait_mask and non_process_wait_mask as well. + +2014-07-28 Paul Eggert + + * frame.c (x_set_frame_parameters): Don't use uninitialized locals. + +2014-07-27 Jan Djärv + + * nsterm.m (applicationDidFinishLaunching antialiasThresholdDidChange): + Reinstate code removed by the prevoius commit to this file. + +2014-07-27 Martin Rudalics + + * buffer.h (struct buffer): New fields scroll_bar_height and + horizontal_scroll_bar_type. + * buffer.c (bset_scroll_bar_height) + (bset_horizontal_scroll_bar_type): New functions. + (Fbuffer_swap_text): Handle old_pointm field. + (init_buffer_once): Set defaults for scroll_bar_height and + horizontal_scroll_bar_type. + (syms_of_buffer): New variables scroll_bar_height and + horizontal_scroll_bar_type. + * dispextern.h (window_part): Rename ON_SCROLL_BAR to + ON_VERTICAL_SCROLL_BAR. Add ON_HORIZONTAL_SCROLL_BAR. + (set_vertical_scroll_bar): Remove prototype. + (x_change_tool_bar_height): Add prototype. + * dispnew.c (adjust_frame_glyphs_for_frame_redisplay) + (window_to_frame_vpos, update_frame_1, scrolling, init_display): + Use FRAME_TOTAL_COLS and FRAME_TOTAL_LINES instead of FRAME_COLS + and FRAME_LINES. + (adjust_frame_glyphs_for_window_redisplay): Rearrange lines. + (update_window): Start mode_line_row->y after horizontal scroll + bar. + (change_frame_size_1): Call adjust_frame_size. + (init_display): When changing the size of a tty frame do not + pass height of menu bar. + (Qframe_windows_min_size): New symbol. + * frame.h (struct frame): List tool bar fields after menu bar + fields. Add official, total_lines, horizontal_scroll_bars, + config_scroll_bar_height and config_scroll_bar_lines fields. + (FRAME_HAS_HORIZONTAL_SCROLL_BARS) + (FRAME_CONFIG_SCROLL_BAR_HEIGHT, FRAME_CONFIG_SCROLL_BAR_LINES) + (FRAME_SCROLL_BAR_AREA_HEIGHT, FRAME_SCROLL_BAR_COLS) + (FRAME_SCROLL_BAR_LINES, FRAME_TOTAL_LINES, SET_FRAME_LINES) + (FRAME_WINDOWS_HEIGHT): New macros. + (SET_FRAME_HEIGHT, FRAME_TEXT_LINES_TO_PIXEL_HEIGHT) + (FRAME_PIXEL_Y_TO_LINE, FRAME_PIXEL_HEIGHT_TO_TEXT_LINES) + (FRAME_TEXT_TO_PIXEL_HEIGHT): Separately count top margin and + horizontal scroll bar. + (frame_inhibit_resize, adjust_frame_size) + (frame_windows_min_size): Add declarations. + (Qscroll_bar_height, Qhorizontal_scroll_bars) + (x_set_scroll_bar_default_height, x_set_left_fringe) + (x_set_right_fringe, x_set_vertical_scroll_bars) + (x_set_horizontal_scroll_bars, x_set_scroll_bar_width) + (x_set_scroll_bar_height): Add external declarations. + * frame.c: (frame_inhibit_resize, frame_windows_min_size) + (adjust_frame_size): New functions. + (make_frame): Initial horizontal_scroll_bars field. Use + SET_FRAME_LINES. Don't allow horizontal scroll bar in + minibuffer window. + (make_initial_frame, make_terminal_frame): No horizontal scroll + bar in initial and terminal frames. Use adjust_frame_size. + (Fframe_total_cols): Fix doc-string. + (Fframe_total_lines, Fscroll_bar_height): New Lisp functions. + (Fset_frame_height, Fset_frame_width, Fset_frame_size): Rewrite + using adjust_frame_size. + (Qscroll_bar_height, Qhorizontal_scroll_bars) + (Qframe_windows_min_size): New symbols. + (x_set_frame_parameters): Remove call of check_frame_size. + (x_report_frame_params): Return scroll_bar_height value. + (x_set_left_fringe, x_set_right_fringe): New functions. + (adjust_frame_height, x_set_internal_border_width) + (x_set_fringe_width): Remove. + (x_set_internal_border_width, x_set_vertical_scroll_bars) + (x_set_scroll_bar_width, x_set_right_divider_width) + (x_set_bottom_divider_width): Rewrite using adjust_frame_size. + (x_set_horizontal_scroll_bars, x_set_scroll_bar_height): New + functions. + (x_figure_window_size): Rewrite to make frame display the + expected number of lines. + (Vdefault_frame_scroll_bars): Rewrite doc-string. + (Vdefault_frame_horizontal_scroll_bars) + (Vframe_initial_frame_tool_bar_height) + (frame_inhibit_implied_resize): New variables. + * fringe.c (compute_fringe_widths): Remove. + * gtkutil.h (YG_SB_MIN, YG_SB_MAX, YG_SB_RANGE): Define. + (xg_create_horizontal_scroll_bar) + (xg_update_horizontal_scrollbar_pos) + (xg_set_toolkit_horizontal_scroll_bar_thumb) + (xg_get_default_scrollbar_height) + (xg_clear_under_internal_border): Extern. + * gtkutil.c (xg_frame_resized): Don't call + do_pending_window_change. + (xg_frame_set_char_size): Use adjust_frame_size. + (style_changed_cb): Call update_theme_scrollbar_height and + x_set_scroll_bar_default_height. + (x_wm_set_size_hint): Don't call check_frame_size. + (update_theme_scrollbar_height) + (xg_get_default_scrollbar_height) + (xg_create_horizontal_scroll_bar) + (xg_update_horizontal_scrollbar_pos) + (xg_set_toolkit_horizontal_scroll_bar_thumb): New functions. + (xg_create_scroll_bar): Set horizontal slot of bar. + (xg_initialize): Call update_theme_scrollbar_height. + (xg_clear_under_internal_border): No more static. + * insdel.c (adjust_suspend_auto_hscroll): New function. + (adjust_markers_for_delete, adjust_markers_for_insert) + (adjust_markers_for_replace): Call adjust_suspend_auto_hscroll. + * keyboard.c (readable_events, discard_mouse_events) + (make_lispy_event): Handle horizontal scroll bar click events. + (Fsuspend_emacs): When changing the size of a tty frame do not + pass height of menu bar. + (Qbefore_handle, Qhorizontal_handle, Qafter_handle, Qleft) + (Qright, Qleftmost, Qrightmost): New symbols. + * menu.c (Fx_popup_dialog): Use FRAME_TOTAL_LINES instead of + FRAME_LINES. + * minibuf.c (read_minibuf): Initialize suspend_auto_hscroll. + * nsfns.m (x_set_internal_border_width): New function. + * nsterm.m (ns_draw_fringe_bitmap, ns_set_vertical_scroll_bar): + Remove extended fringe code. + (x_set_window_size, x_new_font): Don't call + compute_fringe_widths. + * term.c (Fresume_tty): When changing the size of a tty frame do + not pass height of menu bar. + (clear_tty_hooks, set_tty_hooks): Clear + horizontal_scroll_bar_hook. + (init_tty): Frame has no horizontal scroll bars. + * termhooks.h (enum scroll_bar_part): Add scroll_bar_move_ratio, + scroll_bar_before_handle, scroll_bar_horizontal_handle, + scroll_bar_after_handle, scroll_bar_left_arrow, + scroll_bar_right_arrow, scroll_bar_to_leftmost and + scroll_bar_to_rightmost entries. + (enum event_kind): Add HORIZONTAL_SCROLL_BAR_CLICK_EVENT + (struct terminal): Add set_horizontal_scroll_bar_hook. + * w32console.c (initialize_w32_display): Clear + horizontal_scroll_bar_hook. + * w32fns.c (x_set_mouse_color): Use FRAME_W32_DISPLAY instead of + FRAME_X_DISPLAY. + (x_clear_under_internal_border, x_set_internal_border_width): + New functions. + (x_set_menu_bar_lines): Rewrite using frame_inhibit_resize. Set + windows_or_buffers_changed when adding the menu bar. + (x_set_tool_bar_lines): Rewrite using adjust_frame_size. + (x_change_tool_bar_height, x_set_scroll_bar_default_height) + (w32_createhscrollbar): New functions. + (w32_createscrollbar): Rename to w32_createvscrollbar. + (w32_createwindow): Init WND_HSCROLLBAR_INDEX. + (w32_name_of_message): Replace WM_EMACS_CREATESCROLLBAR by + WM_EMACS_CREATEVSCROLLBAR and WM_EMACS_CREATEHSCROLLBAR. Add + WM_EMACS_SHOWCURSOR. + (w32_wnd_proc): Handle WM_HSCROLL case. In WM_WINDOWPOSCHANGING + case do not artificially impose WM size hints. Handle + WM_EMACS_SHOWCURSOR case. Replace WM_EMACS_CREATESCROLLBAR case + by WM_EMACS_CREATEVSCROLLBAR and WM_EMACS_CREATEHSCROLLBAR + cases. + (my_create_tip_window): Replace WND_SCROLLBAR_INDEX by + WND_VSCROLLBAR_INDEX and WND_HSCROLLBAR_INDEX. + (unwind_create_frame_1): Remove. + (Fx_create_frame): Make both scrollbars the system standard + width and height. Use official field of frame structure to + inhibit running window-configuration-change-hook. + (x_create_tip_frame): Call SET_FRAME_LINES and change_frame_size + pixelwise. Handle frame's official field. + (w32_frame_parm_handlers): Remove x_set_fringe_width + entries. Add x_set_scroll_bar_height, + x_set_horizontal_scroll_bars, x_set_left_fringe and + x_set_right_fringe. + * w32inevt.c (resize_event, maybe_generate_resize_event): Do not + pass height of menu bar to change_frame_size. + * w32menu.c (set_frame_menubar): Rewrite using + frame_inhibit_resize. + * w32term.h (struct w32_display_info): Add + horizontal_scroll_bar_cursor and cursor_display_counter. + (struct scroll_bar): Add horizontal. + (HORIZONTAL_SCROLL_BAR_INSIDE_HEIGHT) + (HORIZONTAL_SCROLL_BAR_LEFT_RANGE) + (HORIZONTAL_SCROLL_BAR_INSIDE_WIDTH) + (HORIZONTAL_SCROLL_BAR_LEFT_BORDER) + (HORIZONTAL_SCROLL_BAR_RIGHT_BORDER) + (HORIZONTAL_SCROLL_BAR_TOP_BORDER) + (HORIZONTAL_SCROLL_BAR_BOTTOM_BORDER) + (HORIZONTAL_SCROLL_BAR_MIN_HANDLE): New macros. + (WM_EMACS_CREATEVSCROLLBAR, WM_EMACS_CREATEHSCROLLBAR): Define + instead of WM_EMACS_CREATESCROLLBAR. + (WND_VSCROLLBAR_INDEX, WND_HSCROLLBAR_INDEX): Define instead of + WND_SCROLLBAR_INDEX. + * w32term.c (horizontal_scroll_bar_min_handle) + (horizontal_scroll_bar_left_border) + (horizontal_scroll_bar_right_border): New integers. + (x_set_frame_alpha): Replace x_highlight_frame by + w32_focus_frame. + (x_window_to_scroll_bar): New argument "type". Update callers + accordingly. + (w32_set_horizontal_scroll_bar_thumb) + (x_horizontal_scroll_bar_report_motion) + (w32_set_horizontal_scroll_bar) + (w32_horizontal_scroll_bar_handle_click) + (x_horizontal_scroll_bar_report_motion): New functions. + (w32_mouse_position): Discriminate horizontal and vertical + scrollbar cases. + (my_create_scrollbar): Replace with two new functions + my_create_vscrollbar and my_create_hscrollbar. + (x_scroll_bar_create): New argument "horizontal". Update + callers accordingly. + (x_scroll_bar_remove, w32_condemn_scroll_bars) + (w32_redeem_scroll_bar, x_scroll_bar_clear): Handle horizontal + scroll bar case. + (w32_read_socket): Handle WM_HSCROLL cae. + (x_new_font): Don't recompute fringe widths. Use + frame_inhibit_resize. Calculate new menu bar height iff we + build without toolkit. Always clear under internal border. + (x_set_window_size): Don't check frame size or recompute + fringes. Reset fullscreen status before applying sizes. Always + resize as requested by pixelwise argument. Don't call + do_pending_window_change. + (x_wm_set_size_hint): Add call for FRAME_SCROLL_BAR_AREA_HEIGHT. + (w32_initialize_display_info): Initialize dpyinfo's + horizontal_scroll_bar_cursor entry. + (w32_create_terminal): Add set_horizontal_scroll_bar_hook. + (w32_initialize): Init horizontal_scroll_bar_min_handle and + horizontal_scroll_bar_left_border. + (w32fullscreen_hook): Intermittently resize window to normal + when switching from fullscreen to maximized state. + (run_window_configuration_change_hook): Don't run it if frame is + not official yet. + (unwind_change_frame): Remove. + (Fset_window_configuration): Rewrite using frame's official field. + * widget.c (set_frame_size): Don't call compute_fringe_widths. + (EmacsFrameSetCharSize): Obey frame_inhibit_resize. + * window.h (struct window): New fields old_pointm, + horizontal_scroll_bar, horizontal_scroll_bar_type, hscroll_whole, + scroll_bar_height and suspend_auto_hscroll. + (wset_horizontal_scroll_bar, wset_horizontal_scroll_bar_type): + New functions. + (sanitize_window_sizes): Extern. + (MINI_NON_ONLY_WINDOW_P, MINI_ONLY_WINDOW_P, WINDOW_PSEUDO_P) + (WINDOW_TOPMOST_P, WINDOW_HAS_HORIZONTAL_SCROLL_BAR) + (WINDOW_CONFIG_SCROLL_BAR_HEIGHT) + (WINDOW_CONFIG_SCROLL_BAR_LINES) + (WINDOW_SCROLL_BAR_LINES, WINDOW_SCROLL_BAR_AREA_HEIGHT): New + macros. + (WINDOW_LEFT_FRINGE_COLS, WINDOW_RIGHT_FRINGE_COLS) + (WINDOW_FRINGE_COLS, WINDOW_FRINGE_EXTENDED_P): Remove macros. + (WINDOW_VERTICAL_SCROLL_BAR_TYPE) + (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT) + (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT) + (WINDOW_HAS_VERTICAL_SCROLL_BAR): Minor rewrite. + (WINDOW_BOX_HEIGHT_NO_MODE_LINE, WINDOW_BOX_TEXT_HEIGHT) + (WINDOW_SCROLL_BAR_AREA_Y): Count in scroll bar height. + * window.c (wset_old_pointm, Fwindow_scroll_bar_height) + (Fwindow_old_point, sanitize_window_sizes): New functions. + (Qwindow_sanitize_window_sizes): New symbol. + (window_body_height): Count in horizontal scroll bar. + (set_window_hscroll, Fscroll_left, Fscroll_right): Set + suspend_auto_hscroll slot. + (Fwindow_inside_edges): Count fringes pixelwise. + (coordinates_in_window, Fcoordinates_in_window_p): Consider + horizontal scroll bar. + (check_frame_size, adjust_window_margins): Remove functions and + corresponding calls. + (set_window_buffer): Initialize old_pointm and horizontal scroll + bars. + (temp_output_buffer_show): Reset hscroll related fields. + Initialize old_pointm. + (make_parent_window): Initialize old_pointm. + (make_window): Initialize old_pointm, horizontal scroll bar type, + and scroll bar height. + (resize_frame_windows): Don't count top margin in new sizes. + Don't use safe sizes when shrinking a frame; let the window + manager do the clipping. + (Fsplit_window_internal): Inherit horizontal scroll bar type and + height. + (Fdelete_window_internal): Unchain old_pointm marker. + (window_scroll_pixel_based, Fscroll_other_window): Adjust + old_pointm. + (Fwindow_text_width, Fwindow_text_height): New argument + "pixelwise". + (struct saved_window): New fields, old_pointm, hscroll_whole, + suspend_auto_hscroll, scroll_bar_height and + horizontal_scroll_bar_type. + (Fset_window_configuration, save_window_save): Set new fields of + saved_window. + (apply_window_adjustment): Don't call adjust_window_margins. + (set_window_margins): Don't change margins if new sizes don't + fit into window. + (set_window_scroll_bars): New argument "horizontal_type". + Handle horizontal scroll bars. Don't change scroll bars if they + don't fit into window. + (Fset_window_scroll_bars): New argument "horizontal_type". + (Fwindow_scroll_bars): Return values for horizontal scroll bars. + (compare_window_configurations): Compare horizontal scroll bar + settings. + * xdisp.c (window_text_bottom_y, window_box_height): Count in + horizontal scroll bar height. + (pixel_to_glyph_coords, init_xdisp): Use FRAME_TOTAL_LINES + instead of FRAME_LINES. + (remember_mouse_glyph): Case ON_SCROLL_BAR changed to + ON_VERTICAL_SCROLL_BAR. + (with_echo_area_buffer): Initialize old_pointm. + (with_echo_area_buffer_unwind_data): Store old_pointm values in + vector. + (unwind_with_echo_area_buffer): Handle old_pointm. + (update_tool_bar): Set do_update when the tool bar window has at + least one line (since this is what the user sets). + (MAX_FRAME_TOOL_BAR_HEIGHT): Remove macro. + (redisplay_tool_bar): Return early when toolbar has zero lines. + Call x_change_tool_bar_height. Don't use max_tool_bar_height. + (hscroll_window_tree): Handle suspension of auto_hscroll and + old_pointm. + (set_horizontal_scroll_bar): New function. + (redisplay_window): Set ignore_mouse_drag_p when tool bar has + more than one line. Handle horizontal scroll bars. + (note_mouse_highlight): Handle horizontal scrol bars. + (expose_frame): Set dimensions of XRectangle from frame's text + sizes. + (Vvoid_text_area_pointer): Update doc-string. + * xfns.c (x_set_menu_bar_lines): Use adjust_frame_size. + (x_change_tool_bar_height, x_set_scroll_bar_default_height) + (x_set_internal_border_width): New functions. + (x_set_tool_bar_lines): Call x_change_tool_bar_height. + (unwind_create_frame_1): Remove. + (Fx_create_frame): Handle horizontal scroll bars. Use official + field of frame structure to inhibit running + window-configuration-change-hook. + (x_create_tip_frame): Call SET_FRAME_LINES and change_frame_size + pixelwise. Handle frame's official field. + (x_frame_parm_handlers): Add x_set_scroll_bar_height, + x_set_horizontal_scroll_bars, x_set_left_fringe, + x_set_right_fringe. + * xmenu.c (update_frame_menubar, free_frame_menubar): Use + adjust_frame_size. + * xterm.h (struct x_display_info): Add + horizontal_scroll_bar_cursor and Xatom_Horizontal_Scrollbar + slots. + (struct scroll_bar): Add horizontal slot. + (HORIZONTAL_SCROLL_BAR_INSIDE_HEIGHT) + (HORIZONTAL_SCROLL_BAR_LEFT_RANGE) + (HORIZONTAL_SCROLL_BAR_INSIDE_WIDTH): New macros. + (HORIZONTAL_SCROLL_BAR_LEFT_BORDER) + (HORIZONTAL_SCROLL_BAR_RIGHT_BORDER) + (HORIZONTAL_SCROLL_BAR_TOP_BORDER) + (HORIZONTAL_SCROLL_BAR_BOTTOM_BORDER) + (HORIZONTAL_SCROLL_BAR_MIN_HANDLE): Define. + (x_clear_under_internal_border): Remove. + * xterm.c (XTmouse_position): Handle horizontal scroll bars. + (x_window_to_scroll_bar): New argument TYPE. Update callers. + (x_send_scroll_bar_event, x_scroll_bar_create): New arguments + HORIZONTAL. Update callers. + (horizontal_action_hook_id): New action hook id. + (x_horizontal_scroll_bar_to_input_event) + (x_create_horizontal_toolkit_scroll_bar) + (xt_horizontal_action_hook) + (x_set_toolkit_horizontal_scroll_bar_thumb) + (XTset_horizontal_scroll_bar, x_net_wm_state) + (x_horizontal_scroll_bar_report_motion): New functions. + (xg_scroll_callback, x_scroll_bar_handle_click): Handle + horizontal scroll bars. + (SCROLL_BAR_HORIZONTAL_NAME): Define. + (XTset_vertical_scroll_bar): Attempt to clear areas not covered + by scroll bar. + (XTcondemn_scroll_bars, XTredeem_scroll_bar): Rewrite. Handle + horizontal scroll bars. + (handle_one_xevent): Handle horizontal scroll bar events. Call + x_net_wm_state. + (x_set_window_size_1, x_wm_set_size_hint): Don't call + check_frame_size. + (x_set_window_size): Don't call check_frame_size and + do_pending_window_change. + (x_term_init): Init horizontal_scroll_bar_cursor display info. + (x_create_terminal): Add set_horizontal_scroll_bar_hook. + (x_scroll_bar_set_handle): Add some checks when calling + x_clear_area. + +2014-07-26 Paul Eggert + + Revert previous change. + There is certainly nothing wrong with writing code like 'lo <= i + && i <= hi', even if LO happens to a constant. There isn't even + anything wrong in general with writing 'a <= b' if A happens to + be a constant. At any rate stylistic changes shouldn't + be done like this without discussion. + +2014-07-26 Andreas Schwab + + * alloc.c (xnmalloc, xnrealloc, xpalloc, make_save_value) + (Fgarbage_collect): Reorder conditions that are written backwards. + * data.c (cons_to_unsigned): Likewise. + * dispnew.c (update_frame_1, sit_for): Likewise. + * fileio.c (file_offset): Likewise. + * filelock.c (read_lock_data, lock_file): Likewise. + * fns.c (larger_vector, make_hash_table, Fmake_hash_table): + Likewise. + * font.c (font_intern_prop, font_style_symbolic): Likewise. + * lisp.h (FIXNUM_OVERFLOW_P): Likewise. + * lread.c (read1): Likewise. + * minibuf.c (read_minibuf_noninteractive): Likewise. + * nsterm.m (x_set_frame_alpha): Likewise. + * process.c (wait_reading_process_output): Likewise. + * region-cache.c (delete_cache_boundaries): Likewise. + * xterm.c (x_set_frame_alpha): Likewise. + +2014-07-25 Paul Eggert + + * dispextern.h, xdisp.c (hourglass_shown_p, hourglass_atimer): + Now static. + +2014-07-26 Dmitry Antipov + + * atimer.c (set_alarm) [HAVE_ITIMERSPEC]: Use TIMER_ABSTIME + because atimer expiration is absolute rather than relative. + +2014-07-25 Eli Zaretskii + + * w32term.h (current_popup_menu, menubar_in_use): Move + declarations from w32term.c. + +2014-07-25 Martin Rudalics + + * w32fns.c (menubar_in_use): No more static. + * w32term.c (current_popup_menu, menubar_in_use): Declare. + +2014-07-25 Dmitry Antipov + + Move hourglass machinery to RIF. + * dispextern.h (struct redisplay_interface): New members + show_hourglass and hide_hourglass. Indent comments. + (show_hourglass, hide_hourglass): Remove prototypes. + * nsterm.m (show_hourgass, hide_hourglass): Refactor to ... + (ns_show_hourglass, ns_hide_hourglass): ... new no-ops. + (ns_redisplay_interface): Add them. + * w32fns.c (show_hourglass, hide_hourglass): Refactor to ... + * w32term.c (w32_show_hourglass, w32_hide_hourglass): ... these. + (w32_arrow_cursor): New function to hack around non-GUI frames. + (w32_redisplay_interface): Add new functions. + * w32term.h (w32_arror_cursor): Add prototype. + * xdisp.c (show_hourglass): New function, refactored out from + platform-dependent code. + (cancel_hourglass): Now call to RIF function. + * xfns.c (show_hourglass, hide_hourglass): Refactor to ... + * xterm.c (x_show_hourglass, x_hide_hourglass): ... these. + (x_redisplay_interface): Add new functions. + +2014-07-24 Dmitry Antipov + + Fix error reported by Angelo Graziosi in + + and complete previous change. + * frame.c (adjust_frame_height): New function. + (Fset_frame_height, Fset_frame_size): Use it. + (x_set_frame_parameters): Take frame top margin into account. + +2014-07-23 Dmitry Antipov + + * frame.c (Fset_frame_height): Take frame top margin into account. + Incorrect behavior was reported by Martin Rudalics in + + 2014-07-22 Dmitry Antipov * xterm.h (struct x_output) [USE_X_TOOLKIT || USE_GTK]: Define menubar_height as such. Tweak comment. + [USE_LUCID && USE_TOOLKIT_SCROLL_BARS]: Likewise for + scroll_bar_top_shadow_pixel and scroll_bar_bottom_shadow_pixel. + All related users changed. (FRAME_MENUBAR_HEIGHT) [!USE_X_TOOLKIT && !USE_GTK]: No-op. * xterm.c (handle_one_xevent): * gtkutil.c (xg_event_is_for_menubar): @@ -3987,7 +4694,7 @@ Avoid undefined behavior with huge regexp interval counts. * regex.c (GET_INTERVAL_COUNT): Rename from 'GET_UNSIGNED_NUMBER', since it's now specialized to interval counts. All uses changed. - Do not assume wrapraound on signed integer overflow. + Do not assume wraparound on signed integer overflow. (regex_compile): Simplify based on the above changes. 2013-12-12 Eli Zaretskii