Bug 1700839 - Use the same NSSearchFieldCell object for both toolbar-style and non-toolbar-style searchfields. r=mac-reviewers,bradwerth.

Differential Revision: https://phabricator.services.mozilla.com/D110971
This commit is contained in:
Markus Stange 2021-04-06 18:40:43 +00:00
Родитель 2bcf26f3c0
Коммит 8cfecc3315
2 изменённых файлов: 13 добавлений и 22 удалений

Просмотреть файл

@ -20,6 +20,7 @@
@class MOZCellDrawWindow; @class MOZCellDrawWindow;
@class MOZCellDrawView; @class MOZCellDrawView;
@class MOZSearchFieldCell;
@class NSProgressBarCell; @class NSProgressBarCell;
class nsDeviceContext; class nsDeviceContext;
struct SegmentedControlRenderSettings; struct SegmentedControlRenderSettings;
@ -434,8 +435,7 @@ class nsNativeThemeCocoa : private nsNativeTheme, public nsITheme {
NSButtonCell* mRadioButtonCell; NSButtonCell* mRadioButtonCell;
NSButtonCell* mCheckboxCell; NSButtonCell* mCheckboxCell;
NSTextFieldCell* mTextFieldCell; NSTextFieldCell* mTextFieldCell;
NSSearchFieldCell* mSearchFieldCell; MOZSearchFieldCell* mSearchFieldCell;
NSSearchFieldCell* mToolbarSearchFieldCell;
NSPopUpButtonCell* mDropdownCell; NSPopUpButtonCell* mDropdownCell;
NSComboBoxCell* mComboBoxCell; NSComboBoxCell* mComboBoxCell;
NSProgressBarCell* mProgressBarCell; NSProgressBarCell* mProgressBarCell;

Просмотреть файл

@ -247,13 +247,14 @@ static void DrawCellIncludingFocusRing(NSCell* aCell, NSRect aWithFrame, NSView*
@end @end
@interface MOZToolbarSearchFieldCell : NSSearchFieldCell @interface MOZSearchFieldCell : NSSearchFieldCell
@property BOOL shouldUseToolbarStyle;
@end @end
@implementation MOZToolbarSearchFieldCell @implementation MOZSearchFieldCell
- (BOOL)_isToolbarMode { - (BOOL)_isToolbarMode {
return YES; return self.shouldUseToolbarStyle;
} }
@end @end
@ -413,18 +414,12 @@ nsNativeThemeCocoa::nsNativeThemeCocoa() {
[mTextFieldCell setEditable:YES]; [mTextFieldCell setEditable:YES];
[mTextFieldCell setFocusRingType:NSFocusRingTypeExterior]; [mTextFieldCell setFocusRingType:NSFocusRingTypeExterior];
mSearchFieldCell = [[NSSearchFieldCell alloc] initTextCell:@""]; mSearchFieldCell = [[MOZSearchFieldCell alloc] initTextCell:@""];
[mSearchFieldCell setBezelStyle:NSTextFieldRoundedBezel]; [mSearchFieldCell setBezelStyle:NSTextFieldRoundedBezel];
[mSearchFieldCell setBezeled:YES]; [mSearchFieldCell setBezeled:YES];
[mSearchFieldCell setEditable:YES]; [mSearchFieldCell setEditable:YES];
[mSearchFieldCell setFocusRingType:NSFocusRingTypeExterior]; [mSearchFieldCell setFocusRingType:NSFocusRingTypeExterior];
mToolbarSearchFieldCell = [[MOZToolbarSearchFieldCell alloc] initTextCell:@""];
[mToolbarSearchFieldCell setBezelStyle:NSTextFieldRoundedBezel];
[mToolbarSearchFieldCell setBezeled:YES];
[mToolbarSearchFieldCell setEditable:YES];
[mToolbarSearchFieldCell setFocusRingType:NSFocusRingTypeExterior];
mDropdownCell = [[NSPopUpButtonCell alloc] initTextCell:@"" pullsDown:NO]; mDropdownCell = [[NSPopUpButtonCell alloc] initTextCell:@"" pullsDown:NO];
mComboBoxCell = [[NSComboBoxCell alloc] initTextCell:@""]; mComboBoxCell = [[NSComboBoxCell alloc] initTextCell:@""];
@ -471,7 +466,6 @@ nsNativeThemeCocoa::~nsNativeThemeCocoa() {
[mCheckboxCell release]; [mCheckboxCell release];
[mTextFieldCell release]; [mTextFieldCell release];
[mSearchFieldCell release]; [mSearchFieldCell release];
[mToolbarSearchFieldCell release];
[mDropdownCell release]; [mDropdownCell release];
[mComboBoxCell release]; [mComboBoxCell release];
[mCellDrawWindow release]; [mCellDrawWindow release];
@ -1007,19 +1001,16 @@ void nsNativeThemeCocoa::DrawSearchField(CGContextRef cgContext, const HIRect& i
const TextFieldParams& aParams) { const TextFieldParams& aParams) {
NS_OBJC_BEGIN_TRY_IGNORE_BLOCK; NS_OBJC_BEGIN_TRY_IGNORE_BLOCK;
NSSearchFieldCell* cell = aParams.insideToolbar ? mToolbarSearchFieldCell : mSearchFieldCell; mSearchFieldCell.enabled = !aParams.disabled;
[cell setEnabled:!aParams.disabled]; mSearchFieldCell.showsFirstResponder = aParams.focused;
[cell setShowsFirstResponder:aParams.focused]; mSearchFieldCell.placeholderString = @"";
mSearchFieldCell.shouldUseToolbarStyle = aParams.insideToolbar;
// When using the 10.11 SDK, the default string will be shown if we don't
// set the placeholder string.
[cell setPlaceholderString:@""];
if (mCellDrawWindow) { if (mCellDrawWindow) {
mCellDrawWindow.cellsShouldLookActive = YES; // TODO: propagate correct activeness state mCellDrawWindow.cellsShouldLookActive = YES; // TODO: propagate correct activeness state
} }
DrawCellWithSnapping(cell, cgContext, inBoxRect, searchFieldSettings, aParams.verticalAlignFactor, DrawCellWithSnapping(mSearchFieldCell, cgContext, inBoxRect, searchFieldSettings,
mCellDrawView, aParams.rtl); aParams.verticalAlignFactor, mCellDrawView, aParams.rtl);
NS_OBJC_END_TRY_IGNORE_BLOCK; NS_OBJC_END_TRY_IGNORE_BLOCK;
} }