Subject: bug#28278: 26.0.50; Lucid scrollbars disappear

From: Óscar Fuentes <[email-masked]>
Date: Tue, 29 Aug 2017 23:28:26 +0200

git bisect says

commit c25005eda1c5ad8dabb3ce815658bd3c637ae686
Author: Martin Rudalics <[email-masked]>
Date:   Wed Apr 12 18:22:44 2017 +0200

    New internal-border face and args for select-window and x-focus-frame
    
    Add `internal-border' face and handle it whenever clearing the
    internal border.  If NORECORD equals the symbol
    'mark-for-redisplay', `select-window' will not record the window
    but still mark it for redisplay.  The new argument NOACTIVATE
    for `x-focus-frame' tries to not activate FRAME when set.
    
    * lisp/faces.el (internal-border): New face.
    * lisp/mwheel.el (mwheel-scroll): Select window to scroll with
    `mark-for-redisplay'.
    * lisp/scroll-bar.el (scroll-bar-drag)
    (scroll-bar-horizontal-drag, scroll-bar-scroll-down)
    (scroll-bar-scroll-up, scroll-bar-toolkit-scroll)
    (scroll-bar-toolkit-horizontal-scroll): Select window to scroll
    with `mark-for-redisplay'.
    * lisp/window.el (handle-select-window): When
    `focus-follows-mouse' is not 'auto-raise' try to not activate
    FRAME.
    * src/dispextern.h (face_id): Add INTERNAL_BORDER_FACE_ID.
    * src/frame.c (Fx_focus_frame): New argument NOACTIVATE.
    * src/frame.h (x_focus_frame): Update extern declaration.
    * src/gtkutil.c (xg_clear_under_internal_border): Remove
    function.
    (xg_frame_resized, xg_frame_set_char_size): Call
    x_clear_under_internal_border.
    (xg_tool_bar_callback): Adapt x_focus_frame call.
    * src/gtkutil.h (xg_clear_under_internal_border): Remove
    declaration.
    * src/nsfns.m (x_focus_frame): Add argument NOACTIVATE.
    * src/w32fns.c (x_clear_under_internal_border): Fill border
    with internal-border background if specified.
    * src/w32term.h (x_clear_under_internal_border): Add extern
    declaration.
    * src/w32term.c (x_after_update_window_line): Fill border
    with internal-border background if specified.
    (w32_set_vertical_scroll_bar, w32_set_horizontal_scroll_bar)
    (x_scroll_bar_clear, w32_read_socket): Call
    x_clear_under_internal_border.
    (x_focus_frame): New argument NOACTIVATE.
    * src/window.c (select_window): Mark WINDOW for redisplay when
    NORECORD equals 'mark-for-redisplay'.
    (Fselect_window): Update doc-string.
    (syms_of_window): Define Qmark_for_redisplay.
    * src/xdisp.c (clear_garbaged_frames, echo_area_display)
    (redisplay_internal): Call x_clear_under_internal_border.
    * src/xfaces.c (lookup_basic_face): Handle `window-divider'
    and `internal-border' faces.
    (realize_basic_faces): Realize `internal-border' face.
    (syms_of_xfaces): Define Qinternal_border.
    * src/xfns.c (x_set_internal_border_width): Remove call for
    xg_clear_under_internal_border.
    (x_focus_frame): New argument NOACTIVATE.  When non-nil try to not
    activate frame.
    * src/xterm.c (x_fill_rectangle): No more static.
    (x_clear_under_internal_border, x_after_update_window_line):
    Fill border with internal-border background if specified.
    (xt_horizontal_action_hook): Rewrite.
    (handle_one_xevent): Call x_clear_under_internal_border.
    * src/xterm.h (x_fill_rectangle): Add extern declaration.