mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
patch 9.1.1743: Haiku: no full-screen support
Problem: Haiku: no full-screen support Solution: Add support for toggling full-screen using the keyboard (rymdbar) Makes toggling using keyboard possible. This change does not add any `:fullscreen` command (Which currently only macVim has). See https://www.haiku-os.org/docs/userguide/en/keyboard-shortcuts.html for motivation on key combination used, as well as terminology choice. With vim being inconsistent (`:help intro` suggests <A> and <M>, while <Alt> is used at a dozen other places) following Haiku nomenclature seems most appropriate. closes: #18235 Signed-off-by: rymdbar <rymdbar@x20.se> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
6d68508e62
commit
cd9d30486a
@@ -1,4 +1,4 @@
|
||||
*os_haiku.txt* For Vim version 9.1. Last change: 2020 May 13
|
||||
*os_haiku.txt* For Vim version 9.1. Last change: 2025 Sep 08
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -76,6 +76,9 @@ version with GUI tries to determine if it was started from the Tracker instead
|
||||
of the Terminal, and if so, uses the GUI anyway. However, the current detection
|
||||
scheme is fooled if you use the command "vim - </dev/null".
|
||||
|
||||
Toggling between normal managed window and fullscreen mode can be done by
|
||||
pressing <Alt-Enter>.
|
||||
|
||||
Stuff that does not work yet:
|
||||
|
||||
- Mouse up events are not generated when outside the window. You can notice
|
||||
@@ -86,7 +89,9 @@ Stuff that does not work yet:
|
||||
in when the window is activated or deactivated (so it works best with focus-
|
||||
follows-mouse turned on).
|
||||
- The cursor does not flash.
|
||||
|
||||
- Switching windows using <C-Tab-Up> and <C-Tab-Down> in Twitcher does not
|
||||
work. This is due to each gvim window being managed by a separate instance
|
||||
completely unaware of other vim processes.
|
||||
|
||||
4. The $VIM directory *haiku-vimdir*
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
*version9.txt* For Vim version 9.1. Last change: 2025 Sep 02
|
||||
*version9.txt* For Vim version 9.1. Last change: 2025 Sep 08
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -41619,6 +41619,8 @@ Platform specific~
|
||||
- Python3 support in OpenVMS is now available.
|
||||
|
||||
- The Win32 GUI comes with better toolbar icons.
|
||||
|
||||
- Better fullscreen support for Haiku |os_haiku.txt|.
|
||||
*new-other-9.2*
|
||||
Other new features ~
|
||||
------------------
|
||||
|
@@ -1,4 +1,4 @@
|
||||
*vi_diff.txt* For Vim version 9.1. Last change: 2025 Sep 04
|
||||
*vi_diff.txt* For Vim version 9.1. Last change: 2025 Sep 08
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1379,13 +1379,13 @@ support is verified as part of the CI test suite.
|
||||
System | Status:~
|
||||
--------------------------------+-----------------------------------------
|
||||
Amiga (OS4, AROS & MorphOS): | still supported (?)
|
||||
Haiku: | still supported (?)
|
||||
Haiku: | supported
|
||||
Linux: | fully supported (on maintained versions)
|
||||
Mac OS: | fully supported up until v10.6 (?)
|
||||
MS-Windows 7, 8, 10, 11: | fully supported
|
||||
UNIX: | supported (on maintained versions)
|
||||
OpenVMS: | supported
|
||||
QNX: | still supported (?)
|
||||
UNIX: | supported (on maintained versions)
|
||||
zOS/OS390: | still supported (?)
|
||||
|
||||
The following operating systems are no longer supported:
|
||||
|
@@ -175,7 +175,7 @@ class VimWindow: public BWindow
|
||||
VimWindow();
|
||||
~VimWindow();
|
||||
|
||||
// virtual void DispatchMessage(BMessage *m, BHandler *h);
|
||||
virtual void DispatchMessage(BMessage *m, BHandler *h);
|
||||
virtual void WindowActivated(bool active);
|
||||
virtual bool QuitRequested();
|
||||
|
||||
@@ -184,6 +184,9 @@ class VimWindow: public BWindow
|
||||
private:
|
||||
void init();
|
||||
|
||||
bool is_fullscreen = false;
|
||||
BRect saved_frame;
|
||||
window_look saved_look;
|
||||
};
|
||||
|
||||
class VimFormView: public BView
|
||||
@@ -971,6 +974,48 @@ VimWindow::QuitRequested()
|
||||
write_port(gui.vdcmp, VimMsg::Key, &km, sizeof(km));
|
||||
return false;
|
||||
}
|
||||
void
|
||||
VimWindow::DispatchMessage(BMessage *m, BHandler *h)
|
||||
{
|
||||
bool should_propagate = true;
|
||||
|
||||
switch (m->what)
|
||||
{
|
||||
case B_KEY_DOWN:
|
||||
{
|
||||
int32 scancode = 0;
|
||||
int32 beModifiers = 0;
|
||||
m->FindInt32("raw_char", &scancode);
|
||||
m->FindInt32("modifiers", &beModifiers);
|
||||
|
||||
if (scancode == B_ENTER && (beModifiers & B_LEFT_COMMAND_KEY))
|
||||
{
|
||||
should_propagate = false;
|
||||
if (this->is_fullscreen)
|
||||
{
|
||||
this->is_fullscreen = false;
|
||||
ResizeTo(this->saved_frame.Width(), this->saved_frame.Height());
|
||||
MoveTo(this->saved_frame.left, this->saved_frame.top);
|
||||
SetLook(this->saved_look);
|
||||
SetFlags(Flags() & ~(B_NOT_RESIZABLE | B_NOT_MOVABLE));
|
||||
} else {
|
||||
this->saved_frame = Frame();
|
||||
this->saved_look = Look();
|
||||
this->is_fullscreen = true;
|
||||
BScreen s(this);
|
||||
SetLook(B_NO_BORDER_WINDOW_LOOK);
|
||||
ResizeTo(s.Frame().Width() + 1, s.Frame().Height() + 1);
|
||||
MoveTo(s.Frame().left, s.Frame().top);
|
||||
SetFlags(Flags() | (B_NOT_RESIZABLE | B_NOT_MOVABLE));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (should_propagate)
|
||||
Inherited::DispatchMessage(m, h);
|
||||
}
|
||||
|
||||
|
||||
// ---------------- VimFormView ----------------
|
||||
|
||||
|
@@ -724,6 +724,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1743,
|
||||
/**/
|
||||
1742,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user