mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-12-27 20:28:54 +01:00
internal/ui: reland: bug fix: disable window size limitation on fullscreen
Closes #2260
This commit is contained in:
parent
40fc96d78c
commit
45acc2c5d8
@ -1324,6 +1324,14 @@ func (u *userInterfaceImpl) updateWindowSizeLimits() {
|
|||||||
u.setWindowResizingModeForOS(u.windowResizingMode)
|
u.setWindowResizingModeForOS(u.windowResizingMode)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 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.
|
// adjustWindowSizeBasedOnSizeLimitsInDIP adjust the size based on the window size limits.
|
||||||
// width and height are in device-independent pixels.
|
// width and height are in device-independent pixels.
|
||||||
func (u *userInterfaceImpl) adjustWindowSizeBasedOnSizeLimitsInDIP(width, height int) (int, int) {
|
func (u *userInterfaceImpl) adjustWindowSizeBasedOnSizeLimitsInDIP(width, height int) (int, int) {
|
||||||
@ -1400,6 +1408,8 @@ func (u *userInterfaceImpl) setFullscreen(fullscreen bool) {
|
|||||||
|
|
||||||
// Enter the fullscreen.
|
// Enter the fullscreen.
|
||||||
if fullscreen {
|
if fullscreen {
|
||||||
|
u.disableWindowSizeLimits()
|
||||||
|
|
||||||
if x, y := u.origWindowPos(); x == invalidPos || y == invalidPos {
|
if x, y := u.origWindowPos(); x == invalidPos || y == invalidPos {
|
||||||
u.setOrigWindowPos(u.window.GetPos())
|
u.setOrigWindowPos(u.window.GetPos())
|
||||||
}
|
}
|
||||||
@ -1420,6 +1430,7 @@ func (u *userInterfaceImpl) setFullscreen(fullscreen bool) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Exit the fullscreen.
|
// Exit the fullscreen.
|
||||||
|
u.updateWindowSizeLimits()
|
||||||
|
|
||||||
// Get the original window position and size before changing the state of fullscreen.
|
// Get the original window position and size before changing the state of fullscreen.
|
||||||
// TODO: Why?
|
// TODO: Why?
|
||||||
|
@ -136,6 +136,10 @@ func init() {
|
|||||||
Cmd: sel_windowWillExitFullScreen,
|
Cmd: sel_windowWillExitFullScreen,
|
||||||
Fn: func(id objc.ID, cmd objc.SEL, notification objc.ID) {
|
Fn: func(id objc.ID, cmd objc.SEL, notification objc.ID) {
|
||||||
pushResizableState(id, cocoa.NSNotification{ID: notification}.Object())
|
pushResizableState(id, cocoa.NSNotification{ID: notification}.Object())
|
||||||
|
// Even a window has a size limitation, a window can be fullscreen by calling SetFullscreen(true).
|
||||||
|
// In this case, the window size limitation is disabled temporarily.
|
||||||
|
// When exiting from fullscreen, reset the window size limitation.
|
||||||
|
theUI.updateWindowSizeLimits()
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user