From 623d9d49bb9637e18aec4a12327d22c8eda10691 Mon Sep 17 00:00:00 2001 From: Igor Timofeev Date: Sat, 26 Jan 2019 19:25:55 +0300 Subject: [PATCH] Experimental feature: hides all UI elements in Fullscreen apps mode. EXTREME performance! --- Applications/Lua.app/Icon.pic | Bin 272 -> 272 bytes Applications/Lua.app/Main.lua | 2 +- Applications/VK.app/Main.lua | 4 +-- Libraries/GUI.lua | 53 ++++++++++++++++++---------------- Libraries/System.lua | 21 ++++++++++++++ 5 files changed, 52 insertions(+), 28 deletions(-) diff --git a/Applications/Lua.app/Icon.pic b/Applications/Lua.app/Icon.pic index eada71e80d9033f352b3977c64288d33a9c6653b..bb31ea33132ed1463b18fa1a28d2d3f92ca7f78c 100644 GIT binary patch literal 272 zcmXwzK?=e^3`P4hX*(M|gLe@GS6)d$&>M8=bmj_zf}nT#7pdtqT?Af|&*Pu=$3quY zre@3X!h{V3k?CGh0j7_muzY6}AlNYf>J|V+V7hoLGUtjw&wO??&%*;f%hRu>TqF=} z)rRBXua4vDj|$sXQ*0XR_qL)F0)*+dptL>H)z4v9K_t`;b5=w;rs4r*8XT*8Noe~A DL%2t5 literal 272 zcmXw!Q3?Vv3`BR*Zrd-<;9Ug4FR!E^=neMMZhHkmLD0L*Mb@+%KLU?QW|ACthkZz1 zmSMwu!-514us%8h!g(?b%x4=&oKL1EmOrZP*;PSezT0eM`8E^>jdm=>oRM{HK>X;n znBV5nt$$DQ2&|u;05}1LLDMHabb-@ez8E^@YUr7-E6Ny|Una}8gNTdmftDa`uYRzy Fgdc~{M*aW* diff --git a/Applications/Lua.app/Main.lua b/Applications/Lua.app/Main.lua index bf33099a..d95a4407 100644 --- a/Applications/Lua.app/Main.lua +++ b/Applications/Lua.app/Main.lua @@ -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 diff --git a/Applications/VK.app/Main.lua b/Applications/VK.app/Main.lua index f289a092..b6a2b1ee 100644 --- a/Applications/VK.app/Main.lua +++ b/Applications/VK.app/Main.lua @@ -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 diff --git a/Libraries/GUI.lua b/Libraries/GUI.lua index 537e422e..12d99eaf 100755 --- a/Libraries/GUI.lua +++ b/Libraries/GUI.lua @@ -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 diff --git a/Libraries/System.lua b/Libraries/System.lua index 988d30bf..b6d7b50f 100755 --- a/Libraries/System.lua +++ b/Libraries/System.lua @@ -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