sdl: keep track of window position and size (#6495)

reviewable/pr6503/r1
Martín Fernández 4 years ago committed by GitHub
parent d1018d2e4a
commit d935ca6937
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1 +1 @@
Subproject commit 9e4ae531c28ff35f43828056e88c18a3e80ff6ea
Subproject commit a96cb1c555c42d77ce88d9e97e89c87cd164d923

@ -90,6 +90,7 @@ local Device = Generic:new{
external_dict_when_back_callback = nil
end
end,
window = G_reader_settings:readSetting("sdl_window") or {},
}
local AppImage = Device:new{
@ -144,7 +145,14 @@ function Device:init()
end
self.hasClipboard = yes
self.screen = require("ffi/framebuffer_SDL2_0"):new{device = self, debug = logger.dbg}
self.screen = require("ffi/framebuffer_SDL2_0"):new{
device = self,
debug = logger.dbg,
w = self.window.width,
h = self.window.height,
x = self.window.left,
y = self.window.top,
}
self.powerd = require("device/sdl/powerd"):new{device = self}
local ok, re = pcall(self.screen.setWindowIcon, self.screen, "resources/koreader.png")
@ -163,6 +171,7 @@ function Device:init()
local SDL_MOUSEWHEEL = 1027
local SDL_MULTIGESTURE = 2050
local SDL_DROPFILE = 4096
local SDL_WINDOWEVENT_MOVED = 4
local SDL_WINDOWEVENT_RESIZED = 5
if ev.code == SDL_MOUSEWHEEL then
@ -229,6 +238,8 @@ function Device:init()
device_input.device.screen.screen_size.w = ev.value.data1
device_input.device.screen.screen_size.h = ev.value.data2
device_input.device.screen.resize(device_input.device.screen, ev.value.data1, ev.value.data2)
self.window.width = ev.value.data1
self.window.height = ev.value.data2
local new_size = device_input.device.screen:getSize()
logger.dbg("Resizing screen to", new_size)
@ -242,6 +253,9 @@ function Device:init()
-- this triggers paged media like PDF and DjVu to redraw
-- CreDocument doesn't need it
UIManager:broadcastEvent(Event:new("RedrawCurrentPage"))
elseif ev.code == SDL_WINDOWEVENT_MOVED then
self.window.left = ev.value.data1
self.window.top = ev.value.data2
end
end,
hasClipboardText = function()
@ -295,6 +309,12 @@ function Device:setDateTime(year, month, day, hour, min, sec)
end
end
function Device:exit()
G_reader_settings:saveSetting("sdl_window", self.window)
G_reader_settings:flush()
Generic.exit(self)
end
function Emulator:simulateSuspend()
local InfoMessage = require("ui/widget/infomessage")
local UIManager = require("ui/uimanager")

Loading…
Cancel
Save