mirror of
https://github.com/noctalia-dev/noctalia-shell.git
synced 2026-05-11 17:08:27 +08:00
ui(controls): dim placeholder text
This commit is contained in:
@@ -65,6 +65,8 @@ namespace {
|
||||
constexpr auto kCursorBlinkInterval = std::chrono::milliseconds(530);
|
||||
constexpr auto kCursorBlinkResumeDelay = std::chrono::milliseconds(650);
|
||||
constexpr float kTextInnerInset = 3.0f;
|
||||
constexpr float kPlaceholderAlpha = 0.68f;
|
||||
constexpr float kPrimaryPlaceholderAlpha = 0.50f;
|
||||
constexpr float kPasswordGlyphScale = 0.82f;
|
||||
constexpr auto kDoubleClickThreshold = std::chrono::milliseconds(400);
|
||||
constexpr float kDoubleClickDistance = 6.0f;
|
||||
@@ -749,17 +751,21 @@ void Input::applyVisualState() {
|
||||
cursorStyleEmb.radius = 1.0f;
|
||||
m_cursor->setStyle(cursorStyleEmb);
|
||||
|
||||
const bool showingPlaceholder = m_value.empty() && !m_placeholder.empty();
|
||||
if (m_invalid) {
|
||||
m_label->setColor(colorSpecFromRole(ColorRole::Error));
|
||||
} else if ((m_value.empty() && !m_placeholder.empty()) || readOnly) {
|
||||
} else if (showingPlaceholder) {
|
||||
m_label->setColor(colorSpecFromRole(ColorRole::OnPrimary, kPrimaryPlaceholderAlpha));
|
||||
} else if (readOnly) {
|
||||
m_label->setColor(colorSpecFromRole(ColorRole::OnPrimary, 0.65f));
|
||||
} else {
|
||||
m_label->setColor(colorSpecFromRole(ColorRole::OnPrimary));
|
||||
}
|
||||
const Color passwordGlyphEmb =
|
||||
m_invalid ? resolved(ColorRole::Error)
|
||||
: (((m_value.empty() && !m_placeholder.empty()) || readOnly) ? resolved(ColorRole::OnPrimary, 0.65f)
|
||||
: resolved(ColorRole::OnPrimary));
|
||||
: (showingPlaceholder
|
||||
? resolved(ColorRole::OnPrimary, kPrimaryPlaceholderAlpha)
|
||||
: (readOnly ? resolved(ColorRole::OnPrimary, 0.65f) : resolved(ColorRole::OnPrimary)));
|
||||
for (auto* glyph : m_passwordGlyphs) {
|
||||
glyph->setColor(passwordGlyphEmb);
|
||||
}
|
||||
@@ -781,12 +787,14 @@ void Input::applyVisualState() {
|
||||
cursorStyle.radius = 1.0f;
|
||||
m_cursor->setStyle(cursorStyle);
|
||||
|
||||
const ColorRole textRole =
|
||||
m_invalid ? ColorRole::Error
|
||||
: (((m_value.empty() && !m_placeholder.empty()) || readOnly) ? ColorRole::OnSurfaceVariant
|
||||
: ColorRole::OnSurface);
|
||||
m_label->setColor(colorSpecFromRole(textRole));
|
||||
const Color passwordGlyphColor = colorForRole(textRole);
|
||||
const bool showingPlaceholder = m_value.empty() && !m_placeholder.empty();
|
||||
const ColorSpec textColor =
|
||||
m_invalid ? colorSpecFromRole(ColorRole::Error)
|
||||
: (showingPlaceholder ? colorSpecFromRole(ColorRole::OnSurfaceVariant, kPlaceholderAlpha)
|
||||
: (readOnly ? colorSpecFromRole(ColorRole::OnSurfaceVariant)
|
||||
: colorSpecFromRole(ColorRole::OnSurface)));
|
||||
m_label->setColor(textColor);
|
||||
const Color passwordGlyphColor = resolveColorSpec(textColor);
|
||||
for (auto* glyph : m_passwordGlyphs) {
|
||||
glyph->setColor(passwordGlyphColor);
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ namespace {
|
||||
constexpr float kMenuTopGap = Style::spaceXs;
|
||||
constexpr float kHorizontalPadding = Style::spaceMd;
|
||||
constexpr float kGlyphSize = 14.0f;
|
||||
constexpr float kPlaceholderAlpha = 0.68f;
|
||||
constexpr std::int32_t kOpenSelectZIndex = 100;
|
||||
constexpr std::size_t kMaxVisibleOptions = 6;
|
||||
constexpr auto kTypeaheadTimeout = std::chrono::milliseconds(800);
|
||||
@@ -622,8 +623,8 @@ void Select::applyVisualState() {
|
||||
|
||||
Color triggerBg = resolved(ColorRole::SurfaceVariant);
|
||||
Color triggerBorder = resolved(ColorRole::Outline);
|
||||
ColorSpec triggerText =
|
||||
selectedText().empty() ? colorSpecFromRole(ColorRole::OnSurfaceVariant) : colorSpecFromRole(ColorRole::OnSurface);
|
||||
ColorSpec triggerText = selectedText().empty() ? colorSpecFromRole(ColorRole::OnSurfaceVariant, kPlaceholderAlpha)
|
||||
: colorSpecFromRole(ColorRole::OnSurface);
|
||||
|
||||
if (!m_enabled) {
|
||||
triggerBg = resolved(ColorRole::SurfaceVariant, 0.75f);
|
||||
|
||||
Reference in New Issue
Block a user