]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix creating frames with an initial value of `fullscreen' on Haiku
authorPo Lu <luangruo@yahoo.com>
Thu, 17 Mar 2022 08:51:32 +0000 (08:51 +0000)
committerPo Lu <luangruo@yahoo.com>
Thu, 17 Mar 2022 08:51:59 +0000 (08:51 +0000)
* 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'.

src/haikufns.c
src/haikuterm.c
src/haikuterm.h

index 24e4613e3eee8b4615702c128a1e9fe006af9b38..7bb613af6e2c986dd2ee382806d48f4bcf9f1d9b 100644 (file)
@@ -902,6 +902,11 @@ haiku_create_frame (Lisp_Object parms)
     BWindow_center_on_screen (FRAME_HAIKU_WINDOW (f));
   unblock_input ();
 
+  FRAME_OUTPUT_DATA (f)->configury_done = true;
+
+  if (f->want_fullscreen != FULLSCREEN_NONE)
+    FRAME_TERMINAL (f)->fullscreen_hook (f);
+
   /* Make sure windows on this frame appear in calls to next-window
      and similar functions.  */
   Vwindow_list = Qnil;
index 9844a09a0244dc9375b9cc543fcb25116f6c30e9..4ae64129ef17655201ba660812553f55d87e4492 100644 (file)
@@ -3779,6 +3779,13 @@ haiku_toggle_invisible_pointer (struct frame *f, bool invisible_p)
 static void
 haiku_fullscreen (struct frame *f)
 {
+  /* When FRAME_OUTPUT_DATA (f)->configury_done is false, the frame is
+     being created, and its regular width and height have not yet been
+     set.  This function will be called again by haiku_create_frame,
+     so do nothing.  */
+  if (!FRAME_OUTPUT_DATA (f)->configury_done)
+    return;
+
   if (f->want_fullscreen == FULLSCREEN_MAXIMIZED)
     {
       EmacsWindow_make_fullscreen (FRAME_HAIKU_WINDOW (f), 0);
index 8d0af8dc67942842c88d025dc41f8554099d6c10..65fd51e237c50b1b07016efdad31cb57b7217f80 100644 (file)
@@ -165,6 +165,10 @@ struct haiku_output
 
   /* The pending position we're waiting for. */
   int pending_top, pending_left;
+
+  /* Whether or not adjust_frame_size and haiku_set_offset have yet
+     been called by haiku_create_frame.  */
+  bool configury_done;
 };
 
 struct x_output