Experimental feature: hides all UI elements in Fullscreen apps mode. EXTREME performance!

This commit is contained in:
Igor Timofeev 2019-01-26 19:25:55 +03:00
parent c4a3e9305b
commit 623d9d49bb
5 changed files with 52 additions and 28 deletions

Binary file not shown.

View File

@ -18,7 +18,7 @@ local lines = {
}
local treePanel = window:addChild(GUI.panel(1, 1, 22, 3, 0x2D2D2D))
local tree = window:addChild(GUI.tree(1, 4, treePanel.width, 1, 0x2D2D2D, 0xE1E1E1, 0x969696, 0x696969, 0xE1E1E1, 0x2D2D2D, 0x696969, 0x696969, 0x4B4B4B, 0x696969, GUI.IO_MODE_BOTH, GUI.IO_MODE_BOTH))
local tree = window:addChild(GUI.tree(1, 4, treePanel.width, 1, 0x2D2D2D, 0xD2D2D2, 0x878787, 0x696969, 0xE1E1E1, 0x2D2D2D, 0x696969, 0x696969, 0x4B4B4B, 0x696969, GUI.IO_MODE_BOTH, GUI.IO_MODE_BOTH))
local textBox = window:addChild(GUI.textBox(1, 2, 1, 1, nil, 0x3C3C3C, lines, 1, 0, 0, true))
textBox.passScreenEvents = true

View File

@ -120,7 +120,7 @@ local function request(url, postData, headers)
return data
else
GUI.alert("Failed to perform internet request: ")
GUI.alert("Failed to perform internet request: " .. tostring(reason))
end
end
@ -1661,7 +1661,7 @@ local function login()
passwordInput.onInputFinished = usernameInput.onInputFinished
loginButton.onTouch = function()
local result, reason = request("https://oauth.vk.com/token?grant_type=password&client_id=3697615&client_secret=AlVXZFMUqyrnABp8ncuU&username=" .. usernameInput.text .. "&password=" .. passwordInput.text .. "&v=" .. VKAPIVersion)
local result, reason = request("https://oauth.vk.com/token?grant_type=password&client_id=3697615&client_secret=AlVXZFMUqyrnABp8ncuU&username=" .. internet.encode(usernameInput.text) .. "&password=" .. internet.encode(passwordInput.text) .. "&v=" .. VKAPIVersion)
if result then
if result.access_token then
currentAccessToken = result.access_token

View File

@ -4206,30 +4206,32 @@ local function windowCheck(window, x, y)
end
local function windowEventHandler(workspace, window, e1, e2, e3, e4, ...)
if e1 == "touch" then
if not windowCheck(window, e3, e4) then
window.lastTouchX, window.lastTouchY = e3, e4
end
if window ~= window.parent.children[#window.parent.children] then
window:moveToFront()
if window.onFocus then
window.onFocus(workspace, window, e1, e2, e3, e4, ...)
if window.movingEnabled then
if e1 == "touch" then
if not windowCheck(window, e3, e4) then
window.lastTouchX, window.lastTouchY = e3, e4
end
workspace:draw()
if window ~= window.parent.children[#window.parent.children] then
window:moveToFront()
if window.onFocus then
window.onFocus(workspace, window, e1, e2, e3, e4, ...)
end
workspace:draw()
end
elseif e1 == "drag" and window.lastTouchX and not windowCheck(window, e3, e4) then
local xOffset, yOffset = e3 - window.lastTouchX, e4 - window.lastTouchY
if xOffset ~= 0 or yOffset ~= 0 then
window.localX, window.localY = window.localX + xOffset, window.localY + yOffset
window.lastTouchX, window.lastTouchY = e3, e4
workspace:draw()
end
elseif e1 == "drop" then
window.lastTouchX, window.lastTouchY = nil, nil
end
elseif e1 == "drag" and window.lastTouchX and not windowCheck(window, e3, e4) then
local xOffset, yOffset = e3 - window.lastTouchX, e4 - window.lastTouchY
if xOffset ~= 0 or yOffset ~= 0 then
window.localX, window.localY = window.localX + xOffset, window.localY + yOffset
window.lastTouchX, window.lastTouchY = e3, e4
workspace:draw()
end
elseif e1 == "drop" then
window.lastTouchX, window.lastTouchY = nil, nil
end
end
@ -4242,7 +4244,7 @@ local function windowResize(window, width, height)
return window
end
local function windowMaximize(window)
function GUI.windowMaximize(window)
if window.maximized then
window.localX, window.localY = window.oldGeometryX, window.oldGeometryY
window:resize(window.oldGeometryWidth, window.oldGeometryHeight)
@ -4255,7 +4257,7 @@ local function windowMaximize(window)
window.maximized = not window.maximized
end
local function windowMinimize(window)
function GUI.windowMinimize(window)
window.hidden = not window.hidden
end
@ -4265,10 +4267,11 @@ function GUI.window(x, y, width, height)
window.passScreenEvents = false
window.resize = windowResize
window.maximize = windowMaximize
window.minimize = windowMinimize
window.maximize = GUI.windowMaximize
window.minimize = GUI.windowMinimize
window.eventHandler = windowEventHandler
window.draw = windowDraw
window.movingEnabled = true
return window
end

View File

@ -1485,7 +1485,26 @@ local function updateMenu()
desktopMenu.children = focusedWindow and focusedWindow.menu.children or system.menuInitialChildren
end
local function setWorkspaceHidden(state)
dockContainer.hidden = state
desktopIconField.hidden = state
desktopBackground.hidden = state
end
local function windowMaximize(window, ...)
window.movingEnabled = window.maximized
setWorkspaceHidden(not window.maximized)
GUI.windowMaximize(window, ...)
end
local function windowMinimize(...)
setWorkspaceHidden(false)
GUI.windowMinimize(...)
end
local function windowRemove(window)
setWorkspaceHidden(false)
if window.dockIcon then
-- Удаляем ссылку на окно из докиконки
window.dockIcon.windows[window] = nil
@ -1582,6 +1601,8 @@ function system.addWindow(window, dontAddToDock, preserveCoordinates)
-- "Закрытие" акошычка
window.remove = windowRemove
window.maximize = windowMaximize
window.minimize = windowMinimize
-- Кнопочкам тоже эту хуйню пихаем
if window.actionButtons then