summaryrefslogtreecommitdiff
path: root/src/frame.h
diff options
context:
space:
mode:
authorMartin Rudalics <rudalics@gmx.at>2025-02-10 10:36:38 +0100
committerMartin Rudalics <rudalics@gmx.at>2025-02-10 10:36:38 +0100
commit4d1ceac9f9332f74ac2ab300eb2a629ea742b1dc (patch)
tree2dc013150344d3b846d4d902387090ea166a7b73 /src/frame.h
parent302274b18625b04d1f52fe4c1e52dbcd2cd5124b (diff)
downloademacs-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.h15
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,