diff --git a/apps/samples/converter.cpp b/apps/samples/converter.cpp index 459feb2..53dcf2f 100644 --- a/apps/samples/converter.cpp +++ b/apps/samples/converter.cpp @@ -75,7 +75,7 @@ void _start() { // Add a second layout panel to panelStack to contain the elements of the form. EsPanel *panelForm = EsPanelCreate( panelStack, // Add it to panelStack. - ES_PANEL_TABLE // Use table layout. + ES_PANEL_TABLE // Use table layout. | ES_PANEL_HORIZONTAL, // Left to right, then top to bottom. &stylePanelForm); diff --git a/desktop/desktop.cpp b/desktop/desktop.cpp index a3e8aef..be2c5a3 100644 --- a/desktop/desktop.cpp +++ b/desktop/desktop.cpp @@ -1214,10 +1214,10 @@ void ShutdownModalCreate() { // Setup the UI. - EsPanel *stack = EsPanelCreate(window, ES_CELL_FILL | ES_PANEL_Z_STACK, ES_STYLE_PANEL_NORMAL_WINDOW_ROOT); + EsPanel *stack = EsPanelCreate(window, ES_CELL_FILL | ES_PANEL_Z_STACK); stack->cName = "window stack"; EsPanelCreate(stack, ES_CELL_FILL, ES_STYLE_PANEL_SHUTDOWN_OVERLAY)->cName = "modal overlay"; - EsPanel *dialog = EsPanelCreate(stack, ES_PANEL_VERTICAL | ES_CELL_CENTER, ES_STYLE_PANEL_DIALOG_ROOT); + EsPanel *dialog = EsPanelCreate(stack, ES_PANEL_VERTICAL | ES_CELL_CENTER, ES_STYLE_DIALOG_SHADOW); dialog->cName = "dialog"; EsPanel *heading = EsPanelCreate(dialog, ES_PANEL_HORIZONTAL | ES_CELL_H_FILL, ES_STYLE_DIALOG_HEADING); EsIconDisplayCreate(heading, ES_FLAGS_DEFAULT, {}, ES_ICON_SYSTEM_SHUTDOWN); diff --git a/desktop/gui.cpp b/desktop/gui.cpp index 868b026..ed3f221 100644 --- a/desktop/gui.cpp +++ b/desktop/gui.cpp @@ -762,9 +762,12 @@ EsElement *EsDialogShow(EsWindow *window) { window->hasDialog = true; window->dialogOverlay = EsPanelCreate(mainStack, ES_CELL_FILL, ES_STYLE_PANEL_MODAL_OVERLAY); window->dialogOverlay->cName = "modal overlay"; - window->dialogPanel = EsPanelCreate(mainStack, ES_PANEL_VERTICAL | ES_CELL_CENTER | ES_CELL_SHRINK, ES_STYLE_PANEL_DIALOG_ROOT); + window->dialogPanel = EsPanelCreate(mainStack, ES_PANEL_VERTICAL | ES_CELL_CENTER | ES_CELL_SHRINK, ES_STYLE_DIALOG_SHADOW); window->dialogPanel->cName = "dialog"; + // EsElementStartTransition(window->dialogOverlay, ES_TRANSITION_FADE_IN, ES_FLAGS_DEFAULT, 3.0f); + // EsElementStartTransition(window->dialogPanel, ES_TRANSITION_FADE_IN, ES_FLAGS_DEFAULT, 3.0f); + return window->dialogPanel; } @@ -912,9 +915,9 @@ EsWindow *EsWindowCreate(EsInstance *instance, EsWindowStyle style) { EsSyscall(ES_SYSCALL_WINDOW_SET_PROPERTY, window->handle, 0, (uintptr_t) window, ES_WINDOW_PROPERTY_OBJECT); EsSyscall(ES_SYSCALL_WINDOW_SET_PROPERTY, window->handle, 0xFF000000 | GetConstantNumber("windowFillColor"), 0, ES_WINDOW_PROPERTY_RESIZE_CLEAR_COLOR); window->activated = true; - EsPanel *panel = EsPanelCreate(window, ES_ELEMENT_NON_CLIENT | ES_CELL_FILL | ES_PANEL_Z_STACK, ES_STYLE_PANEL_NORMAL_WINDOW_ROOT); + EsPanel *panel = EsPanelCreate(window, ES_ELEMENT_NON_CLIENT | ES_CELL_FILL | ES_PANEL_Z_STACK); panel->cName = "window stack"; - window->mainPanel = EsPanelCreate(panel, ES_CELL_FILL, ES_STYLE_PANEL_NORMAL_WINDOW_ROOT); + window->mainPanel = EsPanelCreate(panel, ES_CELL_FILL); window->mainPanel->cName = "window root"; window->toolbarSwitcher = EsPanelCreate(window, ES_ELEMENT_NON_CLIENT | ES_PANEL_SWITCHER | ES_CELL_FILL, ES_STYLE_PANEL_TOOLBAR_ROOT); window->toolbarSwitcher->cName = "toolbar"; @@ -1662,9 +1665,18 @@ void ProcessAnimations() { element->transitionTimeMs += m.animate.deltaMs; bool transitionComplete = element->transitionTimeMs >= element->transitionDurationMs; - if (!transitionComplete) { + if (element->transitionDurationMs) { element->Repaint(true, ES_RECT_1(0)); - } else { + } + + if (transitionComplete) { + element->transitionDurationMs = 0; + + if (element->previousTransitionFrame) { + EsPaintTargetDestroy(element->previousTransitionFrame); + element->previousTransitionFrame = nullptr; + } + if (element->transitionFlags & ES_ELEMENT_TRANSITION_HIDE_AFTER_COMPLETE) { EsElementSetHidden(element, true); } diff --git a/desktop/styles.header b/desktop/styles.header index 8383c06..0050614 100644 --- a/desktop/styles.header +++ b/desktop/styles.header @@ -21,6 +21,7 @@ private define 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)) define ES_STYLE_DIALOG_HEADING (ES_STYLE_CAST(1263)) +define ES_STYLE_DIALOG_SHADOW (ES_STYLE_CAST(1311)) private define ES_STYLE_DOUBLE_CLICK_TEST (ES_STYLE_CAST(1585)) define ES_STYLE_ICON_DISPLAY (ES_STYLE_CAST(1265)) define ES_STYLE_ICON_DISPLAY_SMALL (ES_STYLE_CAST(1543)) @@ -51,7 +52,6 @@ private define ES_STYLE_MENU_SEPARATOR_HORIZONTAL (ES_STYLE_CAST(1303)) private define ES_STYLE_MENU_SEPARATOR_VERTICAL (ES_STYLE_CAST(1305)) private define ES_STYLE_PANEL_CONTAINER_WINDOW_ROOT (ES_STYLE_CAST(1307)) private define ES_STYLE_PANEL_CRASH_INFO (ES_STYLE_CAST(1309)) -define ES_STYLE_PANEL_DIALOG_ROOT (ES_STYLE_CAST(1311)) define ES_STYLE_PANEL_DOCUMENT (ES_STYLE_CAST(1547)) define ES_STYLE_PANEL_FILLED (ES_STYLE_CAST(1313)) define ES_STYLE_PANEL_GROUP_BOX (ES_STYLE_CAST(1315)) @@ -62,7 +62,6 @@ private define ES_STYLE_PANEL_MENU_COLUMN (ES_STYLE_CAST(1321)) private define ES_STYLE_PANEL_MENU_CONTAINER (ES_STYLE_CAST(1323)) private define ES_STYLE_PANEL_MENU_ROOT (ES_STYLE_CAST(1325)) private define ES_STYLE_PANEL_MODAL_OVERLAY (ES_STYLE_CAST(1327)) -private define ES_STYLE_PANEL_NORMAL_WINDOW_ROOT (ES_STYLE_CAST(1329)) define ES_STYLE_PANEL_POPUP (ES_STYLE_CAST(1331)) define ES_STYLE_PANEL_SHEET (ES_STYLE_CAST(1333)) private define ES_STYLE_PANEL_SHUTDOWN_OVERLAY (ES_STYLE_CAST(1335)) diff --git a/res/Theme Source.dat b/res/Theme Source.dat index 5b45997..794062c 100644 Binary files a/res/Theme Source.dat and b/res/Theme Source.dat differ diff --git a/res/Themes/Theme.dat b/res/Themes/Theme.dat index d6b9544..65f8991 100644 Binary files a/res/Themes/Theme.dat and b/res/Themes/Theme.dat differ