From 5a6e642fce51382b43cbd74f79d51b9911fafb26 Mon Sep 17 00:00:00 2001 From: nakst <> Date: Wed, 8 Sep 2021 21:18:12 +0100 Subject: [PATCH] update window border style --- desktop/desktop.cpp | 2 ++ desktop/gui.cpp | 26 +++++++++++---------- desktop/settings.cpp | 47 +++++++++++++++++++++++++++++++++++++- desktop/styles.header | 3 +-- desktop/theme.cpp | 1 + res/Theme Source.dat | Bin 52365 -> 52669 bytes res/Themes/Theme.dat | Bin 53824 -> 53944 bytes util/designer/designer.c | 4 ++++ util/designer/designer.rf | 1 + 9 files changed, 69 insertions(+), 15 deletions(-) diff --git a/desktop/desktop.cpp b/desktop/desktop.cpp index fb597e2..9ba9cc3 100644 --- a/desktop/desktop.cpp +++ b/desktop/desktop.cpp @@ -208,6 +208,7 @@ void EmbeddedWindowDestroyed(EsObjectID id); void ConfigurationWriteToFile(); void OpenDocumentOpenReference(EsObjectID id); void OpenDocumentCloseReference(EsObjectID id); +void WallpaperLoad(EsGeneric); #include "settings.cpp" @@ -1901,6 +1902,7 @@ void DesktopSetup() { EsWindow *window = desktop.setupDesktopUIComplete ? desktop.taskBar.window : EsWindowCreate(nullptr, ES_WINDOW_PLAIN); window->messageUser = TaskBarWindowMessage; + window->appearActivated = true; window->StartAnimating(); EsSyscall(ES_SYSCALL_WINDOW_SET_PROPERTY, window->handle, ES_WINDOW_SOLID_TRUE | ES_WINDOW_SOLID_NO_ACTIVATE, 0, ES_WINDOW_PROPERTY_SOLID); EsSyscall(ES_SYSCALL_WINDOW_SET_PROPERTY, window->handle, BLEND_WINDOW_MATERIAL_GLASS, 0, ES_WINDOW_PROPERTY_MATERIAL); diff --git a/desktop/gui.cpp b/desktop/gui.cpp index 2fd3470..b95c70f 100644 --- a/desktop/gui.cpp +++ b/desktop/gui.cpp @@ -425,7 +425,7 @@ struct EsWindow : EsElement { bool willUpdate, toolbarFillMode, destroyInstanceAfterClose, hasDialog, doNotPaint; bool restoreOnNextMove, resetPositionOnNextMove, receivedFirstResize, isMaximised; - bool hovering, activated; + bool hovering, activated, appearActivated; bool visualizeRepaints, visualizeLayoutBounds, visualizePaintSteps; // Inspector properties. EsElement *mainPanel, *toolbar; @@ -919,7 +919,7 @@ EsWindow *EsWindowCreate(EsInstance *instance, EsWindowStyle style) { EsSyscall(ES_SYSCALL_WINDOW_MOVE, window->handle, (uintptr_t) &bounds, 0, ES_FLAGS_DEFAULT); EsSyscall(ES_SYSCALL_WINDOW_SET_PROPERTY, window->handle, 0, 0, ES_WINDOW_PROPERTY_FOCUSED); window->mainPanel = EsPanelCreate(window, ES_ELEMENT_NON_CLIENT | ES_CELL_FILL, ES_STYLE_PANEL_CONTAINER_WINDOW_ROOT); - window->SetStyle(ES_STYLE_CONTAINER_WINDOW_ACTIVE); + window->SetStyle(ES_STYLE_CONTAINER_WINDOW); EsMessage m = { .type = ES_MSG_UI_SCALE_CHANGED }; EsMessageSend(window, &m); } else if (style == ES_WINDOW_INSPECTOR) { @@ -1799,6 +1799,8 @@ bool EsElement::RefreshStyleState() { if (flags & ES_ELEMENT_DISABLED) { styleStateFlags |= THEME_PRIMARY_STATE_DISABLED; + } else if (window && !window->activated && !window->appearActivated) { + styleStateFlags |= THEME_PRIMARY_STATE_INACTIVE; } else { if (((state & UI_STATE_LEFT_PRESSED) && ((state & UI_STATE_HOVERED) || gui.draggingStarted || (state & UI_STATE_STRONG_PRESSED))) || (state & UI_STATE_MENU_SOURCE)) { @@ -5917,6 +5919,14 @@ void UIScaleChanged(EsElement *element, EsMessage *message) { } } +void UIMaybeRefreshStyleAll(EsElement *element) { + element->MaybeRefreshStyle(); + + for (uintptr_t i = 0; i < element->children.Length(); i++) { + UIMaybeRefreshStyleAll(element->children[i]); + } +} + void EsElementGetSize(EsElement *element, int *width, int *height) { EsMessageMutexCheck(); @@ -6884,10 +6894,6 @@ void UIProcessWindowManagerMessage(EsWindow *window, EsMessage *message, Process if (window->windowStyle == ES_WINDOW_MENU) { window->Destroy(); - } else if (window->windowStyle == ES_WINDOW_CONTAINER) { - // Redraw window borders. - window->SetStyle(ES_STYLE_CONTAINER_WINDOW_INACTIVE); - window->Repaint(true); } window->activated = false; @@ -6901,6 +6907,7 @@ void UIProcessWindowManagerMessage(EsWindow *window, EsMessage *message, Process } EsMessageSend(window, message); + UIMaybeRefreshStyleAll(window); } else if (message->type == ES_MSG_WINDOW_ACTIVATED) { AccessKeyModeExit(); @@ -6911,12 +6918,6 @@ void UIProcessWindowManagerMessage(EsWindow *window, EsMessage *message, Process EsMessage m = { ES_MSG_WINDOW_ACTIVATED }; EsMessageSend(window, &m); - if (window->windowStyle == ES_WINDOW_CONTAINER) { - // Redraw window borders. - window->SetStyle(ES_STYLE_CONTAINER_WINDOW_ACTIVE); - window->Repaint(true); - } - if (!window->focused && window->inactiveFocus) { EsElementFocus(window->inactiveFocus, false); window->inactiveFocus->Repaint(true); @@ -6924,6 +6925,7 @@ void UIProcessWindowManagerMessage(EsWindow *window, EsMessage *message, Process } UIRefreshPrimaryClipboard(window); + UIMaybeRefreshStyleAll(window); } skipInputMessage:; diff --git a/desktop/settings.cpp b/desktop/settings.cpp index a4943b7..3a89c1a 100644 --- a/desktop/settings.cpp +++ b/desktop/settings.cpp @@ -538,6 +538,8 @@ void SettingsPageKeyboard(EsElement *element, SettingsPage *page) { } void SettingsPageDisplay(EsElement *element, SettingsPage *page) { + // TODO. + EsElementSetHidden(((SettingsInstance *) element->instance)->undoButton, false); EsPanel *content = EsPanelCreate(element, ES_CELL_FILL | ES_PANEL_V_SCROLL_AUTO, &styleNewTabContent); @@ -554,6 +556,49 @@ void SettingsPageDisplay(EsElement *element, SettingsPage *page) { 100, 400, INTERFACE_STRING(CommonUnitPercent), 0.05, 5); } +void SettingsPageTheme(EsElement *element, SettingsPage *page) { + // TODO. + + EsElementSetHidden(((SettingsInstance *) element->instance)->undoButton, false); + + EsPanel *content = EsPanelCreate(element, ES_CELL_FILL | ES_PANEL_V_SCROLL_AUTO, &styleNewTabContent); + EsPanel *container = EsPanelCreate(content, ES_PANEL_VERTICAL | ES_CELL_H_SHRINK, &styleSettingsGroupContainer2); + SettingsAddTitle(container, page); + + EsPanel *warningRow = EsPanelCreate(container, ES_CELL_H_CENTER | ES_PANEL_HORIZONTAL, &styleSettingsTable); + EsIconDisplayCreate(warningRow, ES_FLAGS_DEFAULT, 0, ES_ICON_DIALOG_WARNING); + EsTextDisplayCreate(warningRow, ES_FLAGS_DEFAULT, 0, "Work in progress" ELLIPSIS); + + EsPanel *table = EsPanelCreate(container, ES_CELL_H_FILL | ES_PANEL_TABLE | ES_PANEL_HORIZONTAL, &styleSettingsTable); + EsPanelSetBands(table, 2); + EsTextDisplayCreate(table, ES_CELL_H_RIGHT, 0, "Wallpaper:", -1); + EsTextbox *textbox = EsTextboxCreate(table, ES_CELL_H_LEFT | ES_CELL_H_PUSH | ES_TEXTBOX_EDIT_BASED | ES_ELEMENT_FREE_USER_DATA, ES_STYLE_TEXTBOX_BORDERED_SINGLE); + + textbox->messageUser = [] (EsElement *element, EsMessage *message) { + if (message->type == ES_MSG_TEXTBOX_EDIT_END) { + EsMutexAcquire(&api.systemConfigurationMutex); + + EsSystemConfigurationGroup *group = SystemConfigurationGetGroup("general", -1, true); + + if (group) { + EsSystemConfigurationItem *item = SystemConfigurationGetItem(group, "wallpaper", -1, true); + + if (item) { + EsHeapFree(item->value); + item->value = EsTextboxGetContents((EsTextbox *) element, &item->valueBytes); + desktop.configurationModified = true; + EsThreadCreate(WallpaperLoad, nullptr, 0); + } + } + + EsMutexRelease(&api.systemConfigurationMutex); + return ES_HANDLED; + } + + return 0; + }; +} + SettingsPage settingsPages[] = { { INTERFACE_STRING(DesktopSettingsAccessibility), ES_ICON_PREFERENCES_DESKTOP_ACCESSIBILITY, SettingsPageUnimplemented, 'A' }, // TODO. { INTERFACE_STRING(DesktopSettingsDateAndTime), ES_ICON_PREFERENCES_SYSTEM_TIME, SettingsPageUnimplemented, 'C' }, // TODO. @@ -564,7 +609,7 @@ SettingsPage settingsPages[] = { { INTERFACE_STRING(DesktopSettingsNetwork), ES_ICON_PREFERENCES_SYSTEM_NETWORK, SettingsPageUnimplemented, 'H' }, // TODO. { INTERFACE_STRING(DesktopSettingsPower), ES_ICON_PREFERENCES_SYSTEM_POWER, SettingsPageUnimplemented, 'J' }, // TODO. { INTERFACE_STRING(DesktopSettingsSound), ES_ICON_PREFERENCES_DESKTOP_SOUND, SettingsPageUnimplemented, 'K' }, // TODO. - { INTERFACE_STRING(DesktopSettingsTheme), ES_ICON_APPLICATIONS_INTERFACEDESIGN, SettingsPageUnimplemented, 'M' }, // TODO. + { INTERFACE_STRING(DesktopSettingsTheme), ES_ICON_APPLICATIONS_INTERFACEDESIGN, SettingsPageTheme, 'M' }, }; void SettingsButtonPressed(EsInstance *_instance, EsElement *element, EsCommand *) { diff --git a/desktop/styles.header b/desktop/styles.header index 35fd5c6..ace1382 100644 --- a/desktop/styles.header +++ b/desktop/styles.header @@ -16,8 +16,7 @@ define_private ES_STYLE_COLOR_CIRCLE (ES_STYLE_CAST(1243)) define_private ES_STYLE_COLOR_HEX_TEXTBOX (ES_STYLE_CAST(1245)) define_private ES_STYLE_COLOR_PICKER_MAIN_PANEL (ES_STYLE_CAST(1247)) define_private ES_STYLE_COLOR_SLIDER (ES_STYLE_CAST(1249)) -define_private ES_STYLE_CONTAINER_WINDOW_ACTIVE (ES_STYLE_CAST(1251)) -define_private ES_STYLE_CONTAINER_WINDOW_INACTIVE (ES_STYLE_CAST(1255)) +define_private ES_STYLE_CONTAINER_WINDOW (ES_STYLE_CAST(1251)) define_private ES_STYLE_CURSOR_LOCATOR (ES_STYLE_CAST(1591)) define ES_STYLE_DIALOG_BUTTON_AREA (ES_STYLE_CAST(1259)) define ES_STYLE_DIALOG_CONTENT (ES_STYLE_CAST(1261)) diff --git a/desktop/theme.cpp b/desktop/theme.cpp index c77d96e..ae1abd3 100644 --- a/desktop/theme.cpp +++ b/desktop/theme.cpp @@ -28,6 +28,7 @@ #define THEME_PRIMARY_STATE_HOVERED (2) #define THEME_PRIMARY_STATE_PRESSED (3) #define THEME_PRIMARY_STATE_DISABLED (4) +#define THEME_PRIMARY_STATE_INACTIVE (5) // When the window has been deactivated. #define THEME_PRIMARY_STATE_MASK (0x000F) #define THEME_STATE_FOCUSED (1 << 15) diff --git a/res/Theme Source.dat b/res/Theme Source.dat index 979c0ecd83c90786afac09bacefef46743ced5df..d86a5d90ca11b223bde9382ba8e14047629206c9 100644 GIT binary patch delta 502 zcmeC3$-H+qGrK4Q1A{?Z#YXnej54hOEkP}TEx|1YZT-&qc_oRNd8tL=nRzMs<%OFa znSODxh&3@bPIeTPo_yYyb#pv#Q4|vc<79yx`^oRKgeJes5ZG*zagq@#w%IO=ofX9H zDzM+&md^wd-`rK8%pBgx*vOdD#PP4Ap{c2aQq%<(XWEfakn;U=}#wLBB0SpY2XU@o%4{8CM-pB?ty%}g)3s3^dw8>s2 z6Ez|BgH$vDRe-F5scu74{je-#vq7n@TRo#e8@j8R@VUAZ;_8t60-(crjerhkfIFO( zm4TrdXc5ri|CxXk#Ptmz5uhr25DE2TLj#Bd1e4#-^w}J{+nJeBX!F8-Wo&Hag?xYN zTPOcNBF=7P>dX3zp$){I9CTETamHlEqoN$XnJMv>X210}mmS^C2DFgDpk=brnP>od CNs?0l delta 234 zcmdlxo4I!;GrK4Q1A|^$vSzh(q6CND@6 z*sPrOorQ^!VRC$d{pRR=CPpB8b9{j^^W@28a%{~FK<6+{ww@t5`NND@=Af2_$>}8% zC##l+ZZ0j=b=#b~$C;T?aP!9fWo&F=(M5miTPO1$6K6M)QJ4M2&<0{pPCBNxdBw4< QY^=FarrdufC!LK30F#+l+5i9m diff --git a/res/Themes/Theme.dat b/res/Themes/Theme.dat index 707549dc4e883ea9a3ac653dbe8ff85557fa37e2..6db90e4f00342fecd2628d049250961b8ecf4f4d 100644 GIT binary patch delta 4697 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 delta 4546 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 C!P^7? diff --git a/util/designer/designer.c b/util/designer/designer.c index 119b09b..ac8b732 100644 --- a/util/designer/designer.c +++ b/util/designer/designer.c @@ -207,6 +207,7 @@ UIButton *previewPrimaryStateIdle; UIButton *previewPrimaryStateHovered; UIButton *previewPrimaryStatePressed; UIButton *previewPrimaryStateDisabled; +UIButton *previewPrimaryStateInactive; UIButton *previewStateFocused; UIButton *previewStateChecked; UIButton *previewStateIndeterminate; @@ -5507,6 +5508,9 @@ int main(int argc, char **argv) previewPrimaryStateDisabled = UIButtonCreate(0, UI_BUTTON_SMALL, "Disabled", -1); previewPrimaryStateDisabled->invoke = PreviewSetPrimaryState; previewPrimaryStateDisabled->e.cp = (void *) PRIMARY_STATE_DISABLED; + previewPrimaryStateInactive = UIButtonCreate(0, UI_BUTTON_SMALL, "Inactive", -1); + previewPrimaryStateInactive->invoke = PreviewSetPrimaryState; + previewPrimaryStateInactive->e.cp = (void *) PRIMARY_STATE_INACTIVE; UIParentPop(); UIPanelCreate(0, UI_PANEL_HORIZONTAL | UI_ELEMENT_PARENT_PUSH); diff --git a/util/designer/designer.rf b/util/designer/designer.rf index 6fa7436..70302fc 100644 --- a/util/designer/designer.rf +++ b/util/designer/designer.rf @@ -294,6 +294,7 @@ enum PrimaryState_Type StyleEnumOp { PRIMARY_STATE_HOVERED #StringOption { "Hovered" }; PRIMARY_STATE_PRESSED #StringOption { "Pressed" }; PRIMARY_STATE_DISABLED #StringOption { "Disabled" }; + PRIMARY_STATE_INACTIVE #StringOption { "Inactive" }; }; struct Sequence Sequence_Type RfStructOp {