fixed: window-close-button and friends did not highlight

This commit is contained in:
daboe01
2026-01-15 08:42:46 +01:00
parent 40172028e6
commit 3d0b1b7680
2 changed files with 100 additions and 118 deletions
+5 -1
View File
@@ -44,7 +44,11 @@ var _CPStandardWindowViewDividerViewHeight = 1.0;
+ (CPDictionary)themeAttributes
{
return @{};
return @{
@"close-active-image-button": [CPNull null],
@"minimize-active-image-button": [CPNull null],
@"zoom-active-image-button": [CPNull null],
};
}
- (id)initWithFrame:(CGRect)aFrame windowView:(_CPWindowView)parentView
+95 -117
View File
@@ -7412,121 +7412,108 @@ var themedButtonValues = nil,
{
var standardWindowView = [[_CPStandardWindowView alloc] initWithFrame:CGRectMake(0, 0, 200, 200) styleMask:CPClosableWindowMask],
// --- Colors ---
bezelHeadCssColor = [CPColor colorWithCSSDictionary:@{
@"background-color": A3ColorWindowHeadActive,
@"border-top-color": A3ColorWindowBorder,
@"border-top-style": @"solid",
@"border-top-width": @"1px",
@"border-left-color": A3ColorWindowBorder,
@"border-left-style": @"solid",
@"border-left-width": @"1px",
@"border-right-color": A3ColorWindowBorder,
@"border-right-style": @"solid",
@"border-right-width": @"1px",
@"border-top-left-radius": @"6px",
@"border-top-right-radius": @"6px",
@"border-bottom-left-radius": @"0px",
@"border-bottom-right-radius": @"0px",
@"box-sizing": @"border-box"
}],
@"background-color": A3ColorWindowHeadActive,
@"border-top-color": A3ColorWindowBorder,
@"border-top-style": @"solid",
@"border-top-width": @"1px",
@"border-left-color": A3ColorWindowBorder,
@"border-left-style": @"solid",
@"border-left-width": @"1px",
@"border-right-color": A3ColorWindowBorder,
@"border-right-style": @"solid",
@"border-right-width": @"1px",
@"border-top-left-radius": @"6px",
@"border-top-right-radius": @"6px",
@"border-bottom-left-radius": @"0px",
@"border-bottom-right-radius": @"0px",
@"box-sizing": @"border-box"
}],
inactiveBezelHeadCssColor = [CPColor colorWithCSSDictionary:@{
@"background-color": A3ColorWindowHeadInactive,
@"border-top-color": A3ColorWindowBorder,
@"border-top-style": @"solid",
@"border-top-width": @"1px",
@"border-left-color": A3ColorWindowBorder,
@"border-left-style": @"solid",
@"border-left-width": @"1px",
@"border-right-color": A3ColorWindowBorder,
@"border-right-style": @"solid",
@"border-right-width": @"1px",
@"border-top-left-radius": @"6px",
@"border-top-right-radius": @"6px",
@"border-bottom-left-radius": @"0px",
@"border-bottom-right-radius": @"0px",
@"box-sizing": @"border-box"
}],
@"background-color": A3ColorWindowHeadInactive,
@"border-top-color": A3ColorWindowBorder,
@"border-top-style": @"solid",
@"border-top-width": @"1px",
@"border-left-color": A3ColorWindowBorder,
@"border-left-style": @"solid",
@"border-left-width": @"1px",
@"border-right-color": A3ColorWindowBorder,
@"border-right-style": @"solid",
@"border-right-width": @"1px",
@"border-top-left-radius": @"6px",
@"border-top-right-radius": @"6px",
@"border-bottom-left-radius": @"0px",
@"border-bottom-right-radius": @"0px",
@"box-sizing": @"border-box"
}],
solidCssColor = [CPColor colorWithCSSDictionary:@{
@"background-color": A3ColorBackgroundHighlighted
}],
solidCssColor = [CPColor colorWithCSSDictionary:@{ @"background-color": A3ColorBackgroundHighlighted }],
bezelCssColor = [CPColor colorWithCSSDictionary:@{
@"background-color": A3ColorBackground,
@"border-color": A3ColorWindowBorder,
@"border-style": @"solid",
@"border-width": @"1px",
@"border-top-left-radius": @"0px",
@"border-top-right-radius": @"0px",
@"border-bottom-left-radius": @"7px",
@"border-bottom-right-radius": @"7px",
@"box-sizing": @"border-box"
}],
@"background-color": A3ColorBackground,
@"border-color": A3ColorWindowBorder,
@"border-style": @"solid",
@"border-width": @"1px",
@"border-top-left-radius": @"0px",
@"border-top-right-radius": @"0px",
@"border-bottom-left-radius": @"7px",
@"border-bottom-right-radius": @"7px",
@"box-sizing": @"border-box"
}],
dividerCssColor = [CPColor colorWithCSSDictionary:@{
@"background-color": A3ColorBorderMedium
}],
dividerCssColor = [CPColor colorWithCSSDictionary:@{ @"background-color": A3ColorBorderMedium }],
// --- BUTTON DEFINITIONS (Normal vs Highlighted/Pressed) ---
// Note: We include the 'transition' property so the color change animates when clicked.
// 1. Close Button (Red)
// --- BUTTON IMAGES (Normal) ---
// Note: We include 'transition' for smooth fade between normal and active
closeButtonImage = [CPImage imageWithCSSDictionary:@{
@"background-color": A3ColorWindowButtonClose,
@"border-radius": @"50%",
@"width": @"12px",
@"height": @"12px",
@"transition": @"background-color 0.15s ease-in-out"
}
size:CGSizeMake(12,12)],
@"background-color": A3ColorWindowButtonClose,
@"border-radius": @"50%",
@"width": @"12px",
@"height": @"12px",
@"transition": @"background-color 0.15s ease-in-out"
} size:CGSizeMake(12,12)],
closeButtonImageHighlighted = [CPImage imageWithCSSDictionary:@{
@"background-color": A3ColorWindowButtonCloseDark, // Darker Red
@"border-radius": @"50%",
@"width": @"12px",
@"height": @"12px",
@"transition": @"background-color 0.15s ease-in-out"
}
size:CGSizeMake(12,12)],
// 2. Minimize Button (Yellow)
minimizeButtonImage = [CPImage imageWithCSSDictionary:@{
@"background-color": A3ColorWindowButtonMin,
@"border-radius": @"50%",
@"width": @"12px",
@"height": @"12px",
@"transition": @"background-color 0.15s ease-in-out"
}
size:CGSizeMake(12,12)],
@"background-color": A3ColorWindowButtonMin,
@"border-radius": @"50%",
@"width": @"12px",
@"height": @"12px",
@"transition": @"background-color 0.15s ease-in-out"
} size:CGSizeMake(12,12)],
zoomButtonImage = [CPImage imageWithCSSDictionary:@{
@"background-color": A3ColorWindowButtonZoom,
@"border-radius": @"50%",
@"width": @"12px",
@"height": @"12px",
@"transition": @"background-color 0.15s ease-in-out"
} size:CGSizeMake(12,12)],
// --- BUTTON IMAGES (Active/Highlighted) ---
closeButtonImageHighlighted = [CPImage imageWithCSSDictionary:@{
@"background-color": A3ColorWindowButtonCloseDark,
@"border-radius": @"50%",
@"width": @"12px",
@"height": @"12px"
} size:CGSizeMake(12,12)],
minimizeButtonImageHighlighted = [CPImage imageWithCSSDictionary:@{
@"background-color": A3ColorWindowButtonMinDark, // Darker Yellow
@"border-radius": @"50%",
@"width": @"12px",
@"height": @"12px",
@"transition": @"background-color 0.15s ease-in-out"
}
size:CGSizeMake(12,12)],
// 3. Zoom Button (Green)
zoomButtonImage = [CPImage imageWithCSSDictionary:@{
@"background-color": A3ColorWindowButtonZoom,
@"border-radius": @"50%",
@"width": @"12px",
@"height": @"12px",
@"transition": @"background-color 0.15s ease-in-out"
}
size:CGSizeMake(12,12)],
@"background-color": A3ColorWindowButtonMinDark,
@"border-radius": @"50%",
@"width": @"12px",
@"height": @"12px"
} size:CGSizeMake(12,12)],
zoomButtonImageHighlighted = [CPImage imageWithCSSDictionary:@{
@"background-color": A3ColorWindowButtonZoomDark, // Darker Green
@"border-radius": @"50%",
@"width": @"12px",
@"height": @"12px",
@"transition": @"background-color 0.15s ease-in-out"
}
size:CGSizeMake(12,12)],
@"background-color": A3ColorWindowButtonZoomDark,
@"border-radius": @"50%",
@"width": @"12px",
@"height": @"12px"
} size:CGSizeMake(12,12)],
resizeIndicator = [CPImage imageWithCSSDictionary:@{
"-webkit-mask-image": @"url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMiAxMiI+PHBhdGggZD0iTTEwIDEwTDIgMTBtOCAwaDB2LTh6IiBzdHJva2U9IiM2NjYiIHN0cm9rZS13aWR0aD0iMiIgZmlsbD0ibm9uZSIvPjwvc3ZnPg==')",
@@ -7559,27 +7546,18 @@ var themedButtonValues = nil,
[@"title-margin", 4],
[@"frame-outset", CGInsetMake(1, 1, 1, 1)],
// --- REGISTER NORMAL STATES ---
// --- REGISTER BUTTON IMAGES ---
// 1. Normal State
[@"close-image-button", closeButtonImage],
[@"minimize-image-button", minimizeButtonImage],
[@"zoom-image-button", zoomButtonImage],
// --- REGISTER PRESSED STATES (Using CPThemeStateHighlighted) ---
// Case 1: Just Highlighted (rare for window buttons)
[@"close-image-button", closeButtonImageHighlighted, CPThemeStateHighlighted],
[@"minimize-image-button", minimizeButtonImageHighlighted, CPThemeStateHighlighted],
[@"zoom-image-button", zoomButtonImageHighlighted, CPThemeStateHighlighted],
// Case 2: Highlighted AND Key Window (Common case when clicking)
[@"close-image-button", closeButtonImageHighlighted, [CPThemeStateHighlighted, CPThemeStateKeyWindow]],
[@"minimize-image-button", minimizeButtonImageHighlighted, [CPThemeStateHighlighted, CPThemeStateKeyWindow]],
[@"zoom-image-button", zoomButtonImageHighlighted, [CPThemeStateHighlighted, CPThemeStateKeyWindow]],
// Case 3: Highlighted AND Main Window (Fallback for some scenarios)
[@"close-image-button", closeButtonImageHighlighted, [CPThemeStateHighlighted, CPThemeStateMainWindow]],
[@"minimize-image-button", minimizeButtonImageHighlighted, [CPThemeStateHighlighted, CPThemeStateMainWindow]],
[@"zoom-image-button", zoomButtonImageHighlighted, [CPThemeStateHighlighted, CPThemeStateMainWindow]],
// 2. Highlighted (Pressed) State
// Use the specific keys defined in _CPStandardWindowView source
[@"close-image-highlighted-button", closeButtonImageHighlighted],
[@"minimize-image-highlighted-button", minimizeButtonImageHighlighted],
[@"zoom-image-highlighted-button", zoomButtonImageHighlighted],
[@"close-image-size", CGSizeMake(12.0, 12.0)],
[@"close-image-origin", CGPointMake(10.0, 10.0)],