diff options
| author | Po Lu | 2022-03-17 08:51:32 +0000 |
|---|---|---|
| committer | Po Lu | 2022-03-17 08:51:59 +0000 |
| commit | bc17a10708337cbe853ea153bd82ad159d959924 (patch) | |
| tree | 9f373971540211b6a46f16ca44bff673471f0c06 /src | |
| parent | 22239f2141afdaf18127730f8e5c128c620a55b7 (diff) | |
| download | emacs-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.c | 5 | ||||
| -rw-r--r-- | src/haikuterm.c | 7 | ||||
| -rw-r--r-- | src/haikuterm.h | 4 |
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) | |||
| 3779 | static void | 3779 | static void |
| 3780 | haiku_fullscreen (struct frame *f) | 3780 | haiku_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 | ||
| 170 | struct x_output | 174 | struct x_output |