aboutsummaryrefslogtreecommitdiffstats
path: root/src/window.c
diff options
context:
space:
mode:
authorMartin Rudalics2017-04-12 18:22:44 +0200
committerMartin Rudalics2017-04-12 18:22:44 +0200
commitc25005eda1c5ad8dabb3ce815658bd3c637ae686 (patch)
treed4c7e6bd2d2a9fe8cdc3345a0f84d6d0aa6d4987 /src/window.c
parent8720f601e715e5f1d41f7cf863a525a1cc1bc12c (diff)
downloademacs-c25005eda1c5ad8dabb3ce815658bd3c637ae686.tar.gz
emacs-c25005eda1c5ad8dabb3ce815658bd3c637ae686.zip
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.
Diffstat (limited to 'src/window.c')
-rw-r--r--src/window.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/window.c b/src/window.c
index 58c0c33cbb0..2d6f0e48faa 100644
--- a/src/window.c
+++ b/src/window.c
@@ -492,7 +492,7 @@ select_window (Lisp_Object window, Lisp_Object norecord,
492 record_buffer before returning here. */ 492 record_buffer before returning here. */
493 goto record_and_return; 493 goto record_and_return;
494 494
495 if (NILP (norecord)) 495 if (NILP (norecord) || EQ (norecord, Qmark_for_redisplay))
496 { /* Mark the window for redisplay since the selected-window has 496 { /* Mark the window for redisplay since the selected-window has
497 a different mode-line. */ 497 a different mode-line. */
498 wset_redisplay (XWINDOW (selected_window)); 498 wset_redisplay (XWINDOW (selected_window));
@@ -571,7 +571,8 @@ Return WINDOW.
571 571
572Optional second arg NORECORD non-nil means do not put this buffer at the 572Optional second arg NORECORD non-nil means do not put this buffer at the
573front of the buffer list and do not make this window the most recently 573front of the buffer list and do not make this window the most recently
574selected one. 574selected one. Also, do not mark WINDOW for redisplay unless NORECORD
575equals the special symbol `mark-for-redisplay'.
575 576
576Run `buffer-list-update-hook' unless NORECORD is non-nil. Note that 577Run `buffer-list-update-hook' unless NORECORD is non-nil. Note that
577applications and internal routines often select a window temporarily for 578applications and internal routines often select a window temporarily for
@@ -7350,6 +7351,7 @@ syms_of_window (void)
7350 DEFSYM (Qclone_of, "clone-of"); 7351 DEFSYM (Qclone_of, "clone-of");
7351 DEFSYM (Qfloor, "floor"); 7352 DEFSYM (Qfloor, "floor");
7352 DEFSYM (Qceiling, "ceiling"); 7353 DEFSYM (Qceiling, "ceiling");
7354 DEFSYM (Qmark_for_redisplay, "mark-for-redisplay");
7353 7355
7354 staticpro (&Vwindow_list); 7356 staticpro (&Vwindow_list);
7355 7357