aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPo Lu2022-03-17 08:51:32 +0000
committerPo Lu2022-03-17 08:51:59 +0000
commitbc17a10708337cbe853ea153bd82ad159d959924 (patch)
tree9f373971540211b6a46f16ca44bff673471f0c06 /src
parent22239f2141afdaf18127730f8e5c128c620a55b7 (diff)
downloademacs-bc17a10708337cbe853ea153bd82ad159d959924.tar.gz
emacs-bc17a10708337cbe853ea153bd82ad159d959924.zip
Fix creating frames with an initial value of `fullscreen' on Haiku
* src/haikufns.c (haiku_create_frame): Set configury_done and do pending fullscreen change if any. * src/haikuterm.c (haiku_fullscreen): Defer actually setting fullscreen until configury_done is set. * src/haikuterm.h (struct haiku_output): New field `configury_done'.
Diffstat (limited to 'src')
-rw-r--r--src/haikufns.c5
-rw-r--r--src/haikuterm.c7
-rw-r--r--src/haikuterm.h4
3 files changed, 16 insertions, 0 deletions
diff --git a/src/haikufns.c b/src/haikufns.c
index 24e4613e3ee..7bb613af6e2 100644
--- a/src/haikufns.c
+++ b/src/haikufns.c
@@ -902,6 +902,11 @@ haiku_create_frame (Lisp_Object parms)
902 BWindow_center_on_screen (FRAME_HAIKU_WINDOW (f)); 902 BWindow_center_on_screen (FRAME_HAIKU_WINDOW (f));
903 unblock_input (); 903 unblock_input ();
904 904
905 FRAME_OUTPUT_DATA (f)->configury_done = true;
906
907 if (f->want_fullscreen != FULLSCREEN_NONE)
908 FRAME_TERMINAL (f)->fullscreen_hook (f);
909
905 /* Make sure windows on this frame appear in calls to next-window 910 /* Make sure windows on this frame appear in calls to next-window
906 and similar functions. */ 911 and similar functions. */
907 Vwindow_list = Qnil; 912 Vwindow_list = Qnil;
diff --git a/src/haikuterm.c b/src/haikuterm.c
index 9844a09a024..4ae64129ef1 100644
--- a/src/haikuterm.c
+++ b/src/haikuterm.c
@@ -3779,6 +3779,13 @@ haiku_toggle_invisible_pointer (struct frame *f, bool invisible_p)
3779static void 3779static void
3780haiku_fullscreen (struct frame *f) 3780haiku_fullscreen (struct frame *f)
3781{ 3781{
3782 /* When FRAME_OUTPUT_DATA (f)->configury_done is false, the frame is
3783 being created, and its regular width and height have not yet been
3784 set. This function will be called again by haiku_create_frame,
3785 so do nothing. */
3786 if (!FRAME_OUTPUT_DATA (f)->configury_done)
3787 return;
3788
3782 if (f->want_fullscreen == FULLSCREEN_MAXIMIZED) 3789 if (f->want_fullscreen == FULLSCREEN_MAXIMIZED)
3783 { 3790 {
3784 EmacsWindow_make_fullscreen (FRAME_HAIKU_WINDOW (f), 0); 3791 EmacsWindow_make_fullscreen (FRAME_HAIKU_WINDOW (f), 0);
diff --git a/src/haikuterm.h b/src/haikuterm.h
index 8d0af8dc679..65fd51e237c 100644
--- a/src/haikuterm.h
+++ b/src/haikuterm.h
@@ -165,6 +165,10 @@ struct haiku_output
165 165
166 /* The pending position we're waiting for. */ 166 /* The pending position we're waiting for. */
167 int pending_top, pending_left; 167 int pending_top, pending_left;
168
169 /* Whether or not adjust_frame_size and haiku_set_offset have yet
170 been called by haiku_create_frame. */
171 bool configury_done;
168}; 172};
169 173
170struct x_output 174struct x_output