internal/ui: bug fix: disable window size limitation on fullscreen

Closes #2260
This commit is contained in:
Hajime Hoshi 2023-09-15 02:19:17 +09:00
parent 0e19cd10be
commit 9a5ef1b553
2 changed files with 13 additions and 0 deletions

View File

@ -1427,6 +1427,14 @@ func (u *userInterfaceImpl) updateWindowSizeLimits() {
u.window.SetSizeLimits(minw, minh, maxw, maxh)
}
// disableWindowSizeLimits disables a window size limitation temporarily, especially for fullscreen
// In order to enable the size limitation, call updateWindowSizeLimits.
//
// disableWindowSizeLimits must be called from the main thread.
func (u *userInterfaceImpl) disableWindowSizeLimits() {
u.window.SetSizeLimits(glfw.DontCare, glfw.DontCare, glfw.DontCare, glfw.DontCare)
}
// adjustWindowSizeBasedOnSizeLimitsInDIP adjust the size based on the window size limits.
// width and height are in device-independent pixels.
func (u *userInterfaceImpl) adjustWindowSizeBasedOnSizeLimitsInDIP(width, height int) (int, int) {
@ -1496,6 +1504,8 @@ func (u *userInterfaceImpl) setFullscreen(fullscreen bool) {
// Enter the fullscreen.
if fullscreen {
u.disableWindowSizeLimits()
if x, y := u.origWindowPos(); x == invalidPos || y == invalidPos {
u.setOrigWindowPos(u.window.GetPos())
}
@ -1516,6 +1526,7 @@ func (u *userInterfaceImpl) setFullscreen(fullscreen bool) {
}
// Exit the fullscreen.
u.updateWindowSizeLimits()
// Get the original window position and size before changing the state of fullscreen.
// TODO: Why?

View File

@ -122,6 +122,7 @@ func init() {
{
Cmd: sel_windowWillEnterFullScreen,
Fn: func(id objc.ID, cmd objc.SEL, notification objc.ID) {
theUI.disableWindowSizeLimits()
pushResizableState(id, cocoa.NSNotification{ID: notification}.Object())
},
},
@ -135,6 +136,7 @@ func init() {
Cmd: sel_windowWillExitFullScreen,
Fn: func(id objc.ID, cmd objc.SEL, notification objc.ID) {
pushResizableState(id, cocoa.NSNotification{ID: notification}.Object())
theUI.updateWindowSizeLimits()
},
},
{