Merge pull request #1915 from Dogild/PopUpListComboBox
Fixed: CPComboBox popupList should close if mouse is clicked outside
|
Before Width: | Height: | Size: 94 B After Width: | Height: | Size: 1011 B |
|
Before Width: | Height: | Size: 94 B After Width: | Height: | Size: 1011 B |
|
Before Width: | Height: | Size: 170 B After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 311 B After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 114 B After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 299 B After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 456 B After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 177 B After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 345 B After Width: | Height: | Size: 1.3 KiB |
@@ -745,7 +745,7 @@ var themedButtonValues = nil,
|
||||
|
||||
[@"bezel-color-calendar", [CPColor whiteColor]],
|
||||
[@"bezel-color-calendar", [CPColor colorWithCalibratedRed:87.0 / 255.0 green:128.0 / 255.0 blue:216.0 / 255.0 alpha:1.0], CPThemeStateSelected],
|
||||
[@"bezel-color-calendar", [CPColor colorWithCalibratedRed:87.0 / 255.0 green:128.0 / 255.0 blue:216.0 / 255.0 alpha:0.5], CPThemeStateSelected |CPThemeStateDisabled],
|
||||
[@"bezel-color-calendar", [CPColor colorWithCalibratedRed:87.0 / 255.0 green:128.0 / 255.0 blue:216.0 / 255.0 alpha:0.5], CPThemeStateSelected | CPThemeStateDisabled],
|
||||
[@"bezel-color-clock", clockImageColor],
|
||||
[@"bezel-color-clock", clockImageColorDisabled, CPThemeStateDisabled],
|
||||
|
||||
@@ -1008,10 +1008,19 @@ var themedButtonValues = nil,
|
||||
bezelNoBorderColor = PatternColor(
|
||||
"combobox-bezel-no-border{state}{position}.png",
|
||||
{
|
||||
states: ["", "focused", "disabled"],
|
||||
width: 6.0,
|
||||
height: 29.0,
|
||||
rightWidth: 24.0,
|
||||
states: ["", "disabled"],
|
||||
width: 4.0,
|
||||
height: 25.0,
|
||||
rightWidth: 25.0,
|
||||
orientation: PatternIsHorizontal
|
||||
}),
|
||||
|
||||
bezelNoBorderFocusedColor = PatternColor(
|
||||
"combobox-bezel-no-border-focused{position}.png",
|
||||
{
|
||||
width: 9.0,
|
||||
height: 31.0,
|
||||
rightWidth: 27.0,
|
||||
orientation: PatternIsHorizontal
|
||||
}),
|
||||
|
||||
@@ -1022,16 +1031,20 @@ var themedButtonValues = nil,
|
||||
[@"bezel-color", bezelColor["disabled"], CPThemeStateBezeled | CPComboBoxStateButtonBordered | CPThemeStateDisabled],
|
||||
|
||||
[@"bezel-color", bezelNoBorderColor["@"], CPThemeStateBezeled],
|
||||
[@"bezel-color", bezelNoBorderColor["focused"], CPThemeStateBezeled | CPThemeStateEditing],
|
||||
[@"bezel-color", bezelNoBorderFocusedColor, CPThemeStateBezeled | CPThemeStateEditing],
|
||||
[@"bezel-color", bezelNoBorderColor["disabled"], CPThemeStateBezeled | CPThemeStateDisabled],
|
||||
|
||||
[@"border-inset", CGInsetMake(3.0, 3.0, 3.0, 3.0), CPThemeStateBezeled],
|
||||
|
||||
[@"bezel-inset", CGInsetMake(0.0, 1.0, 0.0, 1.0), CPThemeStateBezeled | CPThemeStateEditing],
|
||||
[@"bezel-inset", CGInsetMake(0.0, 1.0, 0.0, 1.0), CPThemeStateBezeled | CPThemeStateEditing | CPComboBoxStateButtonBordered],
|
||||
[@"bezel-inset", CGInsetMake(3.0, 4.0, 3.0, 4.0), CPThemeStateBezeled | CPThemeStateDisabled | CPComboBoxStateButtonBordered],
|
||||
|
||||
[@"bezel-inset", CGInsetMake(0.0, 4.0, 0.0, 1.0), CPThemeStateBezeled | CPThemeStateEditing],
|
||||
[@"bezel-inset", CGInsetMake(3.0, 5.0, 3.0, 4.0), CPThemeStateBezeled | CPThemeStateDisabled],
|
||||
|
||||
// The right border inset has to make room for the focus ring and popup button
|
||||
[@"content-inset", CGInsetMake(9.0, 26.0, 7.0, 10.0), CPThemeStateBezeled | CPComboBoxStateButtonBordered],
|
||||
[@"content-inset", CGInsetMake(9.0, 24.0, 7.0, 10.0), CPThemeStateBezeled],
|
||||
[@"content-inset", CGInsetMake(9.0, 26.0, 7.0, 10.0), CPThemeStateBezeled],
|
||||
[@"content-inset", CGInsetMake(9.0, 24.0, 7.0, 10.0), CPThemeStateBezeled | CPThemeStateEditing],
|
||||
|
||||
[@"popup-button-size", CGSizeMake(21.0, 23.0), CPThemeStateBezeled | CPComboBoxStateButtonBordered],
|
||||
|
||||
@@ -858,7 +858,7 @@ var _CPPopUpListDataSourceKey = @"_CPPopUpListDataSourceKey",
|
||||
if (self = [super initWithContentRect:aContentRect styleMask:aStyleMask])
|
||||
_constrainsToUsableScreen = NO;
|
||||
|
||||
[self _trapNextMouseDown];
|
||||
[self _trapNextMouseDown];
|
||||
|
||||
return self;
|
||||
}
|
||||
@@ -875,20 +875,20 @@ var _CPPopUpListDataSourceKey = @"_CPPopUpListDataSourceKey",
|
||||
|
||||
- (void)orderFront:(id)sender
|
||||
{
|
||||
[self _trapNextMouseDown];
|
||||
[super orderFront:sender];
|
||||
[self _trapNextMouseDown];
|
||||
[super orderFront:sender];
|
||||
}
|
||||
|
||||
- (void)_mouseWasClicked:(CPEvent)anEvent
|
||||
{
|
||||
var mouseWindow = [anEvent window],
|
||||
rect = [[[self delegate] dataSource] bounds],
|
||||
point = [[[self delegate] dataSource] convertPoint:[anEvent locationInWindow] fromView:nil];
|
||||
var mouseWindow = [anEvent window],
|
||||
rect = [[[self delegate] dataSource] bounds],
|
||||
point = [[[self delegate] dataSource] convertPoint:[anEvent locationInWindow] fromView:nil];
|
||||
|
||||
if (mouseWindow != self && !CGRectContainsPoint(rect, point))
|
||||
[[self delegate] close];
|
||||
else if ([mouseWindow firstResponder] == [[self delegate] dataSource])
|
||||
[self _trapNextMouseDown];
|
||||
if (mouseWindow != self && !CGRectContainsPoint(rect, point))
|
||||
[[self delegate] close];
|
||||
else if ([mouseWindow firstResponder] == [[self delegate] dataSource])
|
||||
[self _trapNextMouseDown];
|
||||
}
|
||||
|
||||
- (void)_trapNextMouseDown
|
||||
|
||||