[stable-33.0] Feature/ses 578 dark mode tray - #24
Closed
borisbaltesbrickmakers wants to merge 957 commits into
Closed
[stable-33.0] Feature/ses 578 dark mode tray#24borisbaltesbrickmakers wants to merge 957 commits into
borisbaltesbrickmakers wants to merge 957 commits into
Conversation
to fix font color issue
QWindows11Style's native checkmark is too faint against the checked box. Rather than repainting the whole indicator (losing native hover/disabled nuance), keep the native box/border painting and just overlay a bolder checkmark in QPalette::HighlightedText - correct against the box's actual (system-dependent) accent color in both light and dark. Covers both plain QCheckBox widgets (PE_IndicatorCheckBox) and tree/list-view checkboxes like the selective-sync folder tree (PE_IndicatorItemViewItemCheck). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…nch files Ran both skills over every file changed on this branch that wasn't already tracked. New color-map findings: black() text on dialogBackgroundColor() in MoreOptionsButtonStyle::buttonFontColor() (buttonstyle.h:324, likely near- unreadable in dark mode), plus repeat confirmations of already-known fixed-value getters (menuPressedTextColor, wizardHeaderBackgroundColor, white/black, syncProgressColor, buttonPrimaryHoverColor). New drift-map findings: real logic changes hiding under mostly-additive styling diffs in foldercreationdialog.cpp (dropped accept() exists-guard, renamed ui element) and ignorelisttablewidget.cpp (slotAddPattern rebuilt), plus UserLine.qml as the most heavily rewritten file in the map (diff exceeds the whole stable file). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
setWindowFlag(Qt::Window, true) is a no-op on a QDialog since Qt::Dialog already includes the Qt::Window bit (Dialog = 0x2 | Window). The dialog type never actually changes, so it keeps QDialog's default hints (title/sysmenu/close) which lack minimize/maximize - a regression from an earlier refactor that replaced the old windowFlags() bitmask trick with two separate setWindowFlag() calls. Request WindowMinMaxButtonsHint explicitly instead. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…tyle" This reverts commit 91586b5.
…nav border Settings and Tray now share the same background color scheme: - Revert the panelBackgroundColor() card-panel styling from b9e5305 (generalsettings.cpp/accountsettings.cpp + the getter itself in basetheme.h) - a reference screenshot of the target build shows a flat, uniform Settings background with no distinct panels, so the "matches stable-33.0" rationale for introducing it did not hold up. - Add a right border to the SettingsDialog navigation sidebar (#settings_navigation_scroll) via the existing menuBorderColor(), since it no longer has its own background to separate it from the content area. Logged in DECISIONS.md and COLOR_MAP.md. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…r remaining SES-578 files Replace the round-based DRIFT_MAP.md sections with one flat table (no history), and add the four SES-578-touched files that weren't covered yet: systray.cpp, CMakeLists.txt, sesstyle.cpp/.h. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Qt's native "windows11" widget style (used on Windows 11 since the OS-version-based style switch) requests rounded window corners from DWM itself as part of matching the native Fluent look. Confirmed by forcing Fusion as the base style and observing DWMWA_WINDOW_CORNER_PREFERENCE drop from Round(2) back to Default(0), matching stable-33.0 (which has no sesStyle/native-style selection at all). Explicitly request DWMWCP_DONOTROUND instead of reverting the style choice, since that style is also what fixed the dark-mode QTreeView branch arrows. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
customizeStyle() themed connectLabel and syncFoldersPanelTitle but missed encryptionMessageLabel, so its text color stayed fixed while the Settings page background switched with the theme.
…corner radius Re-introduces the checkmark-contrast fix from the reverted 91586b5, but this time drawing our own box fill/border too instead of leaving the native QWindows11Style accent color in place: - basetheme.h: new checkboxCheckmarkColor() - white in Light Mode, black in Dark Mode, deliberately inverted from the native contrast. - sesstyle.cpp/.h: drawCheckboxIndicator() now paints the whole indicator itself (checked fill via the existing buttonPrimaryColor() - the same blue PushButtonStyleHelper uses, so it always matches the app's buttons in both modes; unchecked fill/border via dialogBackgroundColor()/ buttonSecondaryBorderColor()) for both PE_IndicatorCheckBox and PE_IndicatorItemViewItemCheck (selective-sync folder tree, AccountSettings' folder list, the ignore list). Corner radius is approximated per OS (#if Q_OS_WIN/Q_OS_MACOS/else) since Qt doesn't expose the native style's actual radius to query. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- AccountSettings::customizeStyle(): color fileProviderPanelTitle, connectionSettingsPanelTitle (previously untouched, unlike the sibling syncFoldersPanelTitle) and selectiveSyncLabel (previously only colored under Q_OS_MAC) - OwncloudAdvancedSetupPage::syncModeLabel: same Q_OS_MAC-only gap - LinkButton: re-apply WLTheme.settingsLinkColor() on changeEvent instead of only once in the constructor - sesSnackBar: track the active Error/Warning/Success state and re-style on changeEvent instead of freezing the color baked in at the last setError/Warning/Success call Confirmed against origin/stable-33.0 that none of these have an upstream equivalent - all fork-only additions, no merge risk.
…to develop_stable-33.0
…apshot One-off component-context sweep over every GUI component that differs from develop_stable-4.0 (the branch's actual fork-off base), redone after merging feature/SES-578_DarkMode_Tray into develop_stable-33.0 and cross-checked against the pre-merge result for consistency. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Point 2 of the merge consistency check said the 7 files newly appearing in the diff were "new" - misleading, since none were newly created (main.cpp dates back to 2011). They only newly diverged from develop_stable-4.0 because commit 70a6a94 touched them for the first time; verified via zero-diff immediately before that commit. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Both LinkButton::customizeStyle() and sesSnackBar's error/warning/success style helpers call setStyleSheet() on themselves from within changeEvent() (reacting to StyleChange/PaletteChange/ThemeChange for reactive dark mode support). setStyleSheet() unconditionally re-triggers that same event on the widget, which changeEvent() turns back into another customizeStyle()/ updateStyleSheet() call - unguarded recursion that overflows the stack and crashes (reproduced via gdb: SIGSEGV in QStringView::toDouble() while deep in the QLabel style-repolish call chain, confirmed to originate from LinkButton::customizeStyle() <-> changeEvent()). Settings dialog crashed on every open because AccountSettings/GeneralSettings etc. all contain LinkButton instances. Same fix as the already-guarded SettingsDialog::customizeStyle(): an _updatingStyle bool + QScopedValueRollback to make the reentrant call a no-op. Audited every other changeEvent() handler reacting to these three event types (FolderWizardLocalPath/RemotePath, OwncloudWizard, WebFlowCredentialsDialog, LegalNotice) - none of them call setStyleSheet() on themselves the same way, so no further instances of this bug were found. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
develop_stable-4.0 is unmaintained -- nothing flows back into it, ever. "noch nicht in develop_stable-4.0 gemerged" wrongly implied a future merge; reworded to plain divergence-since-fork-off language and added an explicit note that the branch is dead. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
sesAccountMenuHeight (40px) was too small for the two text rows (name + server) once padding is subtracted - the label block's natural height (~30-32px) exceeded the ~24px available, so it overflowed the row's bottom edge with no room to breathe. Padding/margin tweaks on the row itself couldn't fix this since there was no slack to redistribute. - theme/Style/Style.qml: bump sesAccountMenuHeight to 52 (only consumer is UserLine.qml, so no other rows are affected) - UserLine.qml: reserve 5px via Layout.bottomMargin on the server label, now that there's actual room for it to take effect Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The busy indicator and clear-button icon still used palette.placeholderText, left over from the original stable code before SES-457/SES-578 migrated the rest of this field (search icon, text, cursor, background, border) to Style.sesSearchFieldContent. Switch both to root.placeholderColor so all icons in the field share the same dark-mode-aware color source. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…logs ResolveConflictsDialog.qml and FileDetailsWindow.qml are native-chrome ApplicationWindows (unlike MainWindow.qml/FileActionsWindow.qml, which go frameless via Systray::useNormalWindow() on a normal desktop), so Windows 11's "windows11"/"FluentWinUI3" style rounded their corners while QWidget-backed dialogs were already forced square via Application::eventFilter. Deliberately not reusing that global QApplication event filter here: it reacts to every QWindow's Show event, including the many transient popups QtQuick Controls creates internally, and forcing native window creation via winId() on all of those caused a serious startup hang in an earlier attempt. Applying the fix explicitly at just these two known dialog-creation call sites avoids that. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
passwordTextEdit is a plain QtQuick TextEdit, not a Controls item, so it has no automatic palette binding - its text stayed at the QtQuick default black regardless of theme, while its background/border already used Style.ses* colors. Add the same color: Style.sesTrayFontColor already used by the sibling noteTextArea field in this dialog. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…tion guard settingsdialog.cpp: IONOS_BUILD is unconditionally defined in this fork (see IONOS.cmake), so the #else branches of customizeStyle() and TOOLBAR_CSS were dead code -- a full duplicate customizeStyle() using plain palette() colors (including the card-panel backgrounds already reverted per the 2026-08-21 decision-log entry) that never compiled. Dropped both dead branches, kept the WLTheme-driven live versions unconditional. foldercreationdialog.cpp: restore the QDir(fullPath).exists() guard in accept() that was dropped during the snackbar styling rework, updated to reference ui->errorSnackbar instead of the removed labelErrorMessage. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
SesCheckBox only re-themed the text label (color: Style.sesTrayFontColor); the indicator (box/checkmark) was left to the QtQuick Controls style, which on Windows 11 is FluentWinUI3 and draws it with native Fluent colors rather than the SES palette used by the rest of this dialog (password/note field borders etc.). Add a custom indicator matching that existing look (Style.sesTrayInputField border, Style.sesBackgroundColor fill, radius via Style.thickBorderWidth). Deliberately does not set x/y on the indicator - CheckBox/AbstractButton already positions it automatically based on padding/leftPadding, and an earlier attempt that set explicit x/y fought that positioning and produced visibly inconsistent offsets across the several SesCheckBox instances in this file (which each set their own padding/spacing/indicator size). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.