diff options
author | Martin Rudalics <rudalics@gmx.at> | 2025-02-10 10:36:38 +0100 |
---|---|---|
committer | Martin Rudalics <rudalics@gmx.at> | 2025-02-10 10:36:38 +0100 |
commit | 4d1ceac9f9332f74ac2ab300eb2a629ea742b1dc (patch) | |
tree | 2dc013150344d3b846d4d902387090ea166a7b73 /src/frame.h | |
parent | 302274b18625b04d1f52fe4c1e52dbcd2cd5124b (diff) | |
download | emacs-4d1ceac9f9332f74ac2ab300eb2a629ea742b1dc.tar.gz emacs-4d1ceac9f9332f74ac2ab300eb2a629ea742b1dc.tar.bz2 emacs-4d1ceac9f9332f74ac2ab300eb2a629ea742b1dc.zip |
Fix handling of visibility on tty frames (Bug#76031)
* src/frame.h (FRAME_REDISPLAY_P): Remove. Use the new function
frame_redisplay_p instead. Extern frame_redisplay_p.
* src/frame.c (frame_redisplay_p): New function to replace
FRAME_REDISPLAY_P macro.
(make_terminal_frame): Don't tinker with frame visibility and
don't make the new frame the terminal's top frame.
(do_switch_frame): Make sure frame switched to and any of its
ancestors are visible. Don't reset the visibility of other
frames.
(other_frames): Do not assume tty frames are by default visible.
(Fmake_frame_invisible): When making the selected tty frame
invisible, explicitly select the next visible frame.
* src/dispnew.c (Fredraw_display): Use frame_redisplay_p instead
of FRAME_REDISPLAY_P.
* src/xdisp.c (clear_garbaged_frames, echo_area_display)
(prepare_menu_bars, redisplay_internal, display_and_set_cursor)
(gui_clear_cursor): Use frame_redisplay_p instead of
FRAME_REDISPLAY_P.
* src/keyboard.c (tty_read_avail_input): When storing an event
and the selected frame is a child frame whose root is its
terminal's top frame, set the frame_or_window slot to the child
frame since otherwise the next switch frame event will select
the top frame instead.
Diffstat (limited to 'src/frame.h')
-rw-r--r-- | src/frame.h | 15 |
1 files changed, 1 insertions, 14 deletions
diff --git a/src/frame.h b/src/frame.h index fea8baa7332..c9cc65e597d 100644 --- a/src/frame.h +++ b/src/frame.h @@ -1152,20 +1152,6 @@ default_pixels_per_inch_y (void) /* True if frame F is currently visible. */ #define FRAME_VISIBLE_P(f) (f)->visible -/* True if frame F should be redisplayed. This is normally the same - as FRAME_VISIBLE_P (f). Under X, frames can continue to be - displayed to the user by the compositing manager even if they are - invisible, so this also checks whether or not the frame is reported - visible by the X server. */ - -#ifndef HAVE_X_WINDOWS -#define FRAME_REDISPLAY_P(f) FRAME_VISIBLE_P (f) -#else -#define FRAME_REDISPLAY_P(f) (FRAME_VISIBLE_P (f) \ - || (FRAME_X_P (f) \ - && FRAME_X_VISIBLE (f))) -#endif - /* True if frame F is currently iconified. */ #define FRAME_ICONIFIED_P(f) (f)->iconified @@ -1473,6 +1459,7 @@ extern struct frame *decode_live_frame (Lisp_Object); extern struct frame *decode_any_frame (Lisp_Object); extern struct frame *make_initial_frame (void); extern struct frame *make_frame (bool); +extern bool frame_redisplay_p (struct frame *); extern int tty_child_pos_param (struct frame *, Lisp_Object, Lisp_Object, int); extern int tty_child_size_param (struct frame *, Lisp_Object, |