Changeset 54215 in webkit


Ignore:
Timestamp:
Feb 2, 2010 12:52:18 AM (14 years ago)
Author:
eric@webkit.org
Message:

2010-02-02 Avi Drissman <avi@chromium.org>

Reviewed by Eric Seidel.

Sync up Chromium Mac render theme to Mac render theme
https://bugs.webkit.org/show_bug.cgi?id=34340

Covered by existing layout tests.

  • platform/chromium/ThemeChromiumMac.mm: (WebCore::updateStates): (WebCore::checkbox): (WebCore::paintCheckbox): (WebCore::radio): (WebCore::paintRadio): (WebCore::listButtonSizes): (WebCore::setupButtonCell): (WebCore::button): (WebCore::paintButton): (WebCore::ThemeChromiumMac::controlSize): (WebCore::ThemeChromiumMac::minimumControlSize): (WebCore::ThemeChromiumMac::controlBorder): (WebCore::ThemeChromiumMac::paint):
  • rendering/RenderThemeChromiumMac.h:
  • rendering/RenderThemeChromiumMac.mm: (-[WebCoreRenderThemeNotificationObserver initWithTheme:WebCore::]): (WebCore::convertNSColorToColor): (WebCore::RenderThemeChromiumMac::systemColor): (WebCore::RenderThemeChromiumMac::isControlStyled): (WebCore::RenderThemeChromiumMac::adjustRepaintRect): (WebCore::RenderThemeChromiumMac::convertToPaintingRect): (WebCore::RenderThemeChromiumMac::paintCapsLockIndicator): (WebCore::RenderThemeChromiumMac::paintMenuList): (WebCore::RenderThemeChromiumMac::paintMenuListButton): (WebCore::RenderThemeChromiumMac::adjustMenuListStyle): (WebCore::RenderThemeChromiumMac::adjustMenuListButtonStyle): (WebCore::RenderThemeChromiumMac::paintSliderTrack): (WebCore::RenderThemeChromiumMac::paintSliderThumb): (WebCore::RenderThemeChromiumMac::paintSearchField): (WebCore::RenderThemeChromiumMac::setSearchFieldSize): (WebCore::RenderThemeChromiumMac::adjustSearchFieldStyle): (WebCore::RenderThemeChromiumMac::paintSearchFieldResultsButton): (WebCore::RenderThemeChromiumMac::adjustSliderThumbSize): (WebCore::RenderThemeChromiumMac::popupButton): (WebCore::RenderThemeChromiumMac::sliderThumbHorizontal): (WebCore::RenderThemeChromiumMac::sliderThumbVertical):
Location:
trunk/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r54213 r54215  
     12010-02-02  Avi Drissman  <avi@chromium.org>
     2
     3        Reviewed by Eric Seidel.
     4
     5        Sync up Chromium Mac render theme to Mac render theme
     6        https://bugs.webkit.org/show_bug.cgi?id=34340
     7
     8        Covered by existing layout tests.
     9
     10        * platform/chromium/ThemeChromiumMac.mm:
     11        (WebCore::updateStates):
     12        (WebCore::checkbox):
     13        (WebCore::paintCheckbox):
     14        (WebCore::radio):
     15        (WebCore::paintRadio):
     16        (WebCore::listButtonSizes):
     17        (WebCore::setupButtonCell):
     18        (WebCore::button):
     19        (WebCore::paintButton):
     20        (WebCore::ThemeChromiumMac::controlSize):
     21        (WebCore::ThemeChromiumMac::minimumControlSize):
     22        (WebCore::ThemeChromiumMac::controlBorder):
     23        (WebCore::ThemeChromiumMac::paint):
     24        * rendering/RenderThemeChromiumMac.h:
     25        * rendering/RenderThemeChromiumMac.mm:
     26        (-[WebCoreRenderThemeNotificationObserver initWithTheme:WebCore::]):
     27        (WebCore::convertNSColorToColor):
     28        (WebCore::RenderThemeChromiumMac::systemColor):
     29        (WebCore::RenderThemeChromiumMac::isControlStyled):
     30        (WebCore::RenderThemeChromiumMac::adjustRepaintRect):
     31        (WebCore::RenderThemeChromiumMac::convertToPaintingRect):
     32        (WebCore::RenderThemeChromiumMac::paintCapsLockIndicator):
     33        (WebCore::RenderThemeChromiumMac::paintMenuList):
     34        (WebCore::RenderThemeChromiumMac::paintMenuListButton):
     35        (WebCore::RenderThemeChromiumMac::adjustMenuListStyle):
     36        (WebCore::RenderThemeChromiumMac::adjustMenuListButtonStyle):
     37        (WebCore::RenderThemeChromiumMac::paintSliderTrack):
     38        (WebCore::RenderThemeChromiumMac::paintSliderThumb):
     39        (WebCore::RenderThemeChromiumMac::paintSearchField):
     40        (WebCore::RenderThemeChromiumMac::setSearchFieldSize):
     41        (WebCore::RenderThemeChromiumMac::adjustSearchFieldStyle):
     42        (WebCore::RenderThemeChromiumMac::paintSearchFieldResultsButton):
     43        (WebCore::RenderThemeChromiumMac::adjustSliderThumbSize):
     44        (WebCore::RenderThemeChromiumMac::popupButton):
     45        (WebCore::RenderThemeChromiumMac::sliderThumbHorizontal):
     46        (WebCore::RenderThemeChromiumMac::sliderThumbVertical):
     47
    1482010-02-02  Kwang Yul Seo  <skyul@company100.net>
    249
  • trunk/WebCore/platform/chromium/ThemeChromiumMac.mm

    r48469 r54215  
    2222 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    2323 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    24  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
     24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    2525 */
    2626
     
    116116{
    117117    // Hover state is not supported by Aqua.
    118    
     118
    119119    // Pressed state
    120120    bool oldPressed = [cell isHighlighted];
     
    122122    if (pressed != oldPressed)
    123123        [cell setHighlighted:pressed];
    124    
     124
    125125    // Enabled state
    126126    bool oldEnabled = [cell isEnabled];
     
    128128    if (enabled != oldEnabled)
    129129        [cell setEnabled:enabled];
    130    
     130
    131131    // Focused state
    132132    bool oldFocused = [cell showsFirstResponder];
     
    142142    if (oldIndeterminate != indeterminate || checked != oldChecked)
    143143        [cell setState:indeterminate ? NSMixedState : (checked ? NSOnState : NSOffState)];
    144        
     144
    145145    // Window Inactive state
    146146    NSControlTint oldTint = [cell controlTint];
     
    198198}
    199199
    200 static NSButtonCell* checkbox(ControlStates states, const IntRect& zoomedRect, float zoomFactor)
    201 {
    202     static NSButtonCell* checkboxCell;
     200static NSButtonCell *checkbox(ControlStates states, const IntRect& zoomedRect, float zoomFactor)
     201{
     202    static NSButtonCell *checkboxCell;
    203203    if (!checkboxCell) {
    204204        checkboxCell = [[NSButtonCell alloc] init];
     
    208208        [checkboxCell setFocusRingType:NSFocusRingTypeExterior];
    209209    }
    210    
     210
    211211    // Set the control size based off the rectangle we're painting into.
    212212    setControlSize(checkboxCell, checkboxSizes(), zoomedRect.size(), zoomFactor);
     
    214214    // Update the various states we respond to.
    215215    updateStates(checkboxCell, states);
    216    
     216
    217217    return checkboxCell;
    218218}
     
    224224
    225225    // Determine the width and height needed for the control and prepare the cell for painting.
    226     NSButtonCell* checkboxCell = checkbox(states, zoomedRect, zoomFactor);
     226    NSButtonCell *checkboxCell = checkbox(states, zoomedRect, zoomFactor);
    227227
    228228    context->save();
     
    233233    zoomedSize.setHeight(zoomedSize.height() * zoomFactor);
    234234    IntRect inflatedRect = inflateRect(zoomedRect, zoomedSize, checkboxMargins(controlSize), zoomFactor);
    235    
     235
    236236    if (zoomFactor != 1.0f) {
    237237        inflatedRect.setWidth(inflatedRect.width() / zoomFactor);
     
    241241        context->translate(-inflatedRect.x(), -inflatedRect.y());
    242242    }
    243    
     243
    244244    [checkboxCell drawWithFrame:NSRect(inflatedRect) inView:FlippedView()];
    245245    [checkboxCell setControlView:nil];
    246246
    247247    context->restore();
    248    
     248
    249249    END_BLOCK_OBJC_EXCEPTIONS
    250250}
     
    279279}
    280280
    281 static NSButtonCell* radio(ControlStates states, const IntRect& zoomedRect, float zoomFactor)
    282 {
    283     static NSButtonCell* radioCell;
     281static NSButtonCell *radio(ControlStates states, const IntRect& zoomedRect, float zoomFactor)
     282{
     283    static NSButtonCell *radioCell;
    284284    if (!radioCell) {
    285285        radioCell = [[NSButtonCell alloc] init];
     
    288288        [radioCell setFocusRingType:NSFocusRingTypeExterior];
    289289    }
    290    
     290
    291291    // Set the control size based off the rectangle we're painting into.
    292292    setControlSize(radioCell, radioSizes(), zoomedRect.size(), zoomFactor);
     
    294294    // Update the various states we respond to.
    295295    updateStates(radioCell, states);
    296    
     296
    297297    return radioCell;
    298298}
     
    301301{
    302302    // Determine the width and height needed for the control and prepare the cell for painting.
    303     NSButtonCell* radioCell = radio(states, zoomedRect, zoomFactor);
     303    NSButtonCell *radioCell = radio(states, zoomedRect, zoomFactor);
    304304
    305305    context->save();
     
    310310    zoomedSize.setHeight(zoomedSize.height() * zoomFactor);
    311311    IntRect inflatedRect = inflateRect(zoomedRect, zoomedSize, radioMargins(controlSize), zoomFactor);
    312    
     312
    313313    if (zoomFactor != 1.0f) {
    314314        inflatedRect.setWidth(inflatedRect.width() / zoomFactor);
     
    318318        context->translate(-inflatedRect.x(), -inflatedRect.y());
    319319    }
    320    
     320
    321321    BEGIN_BLOCK_OBJC_EXCEPTIONS
    322322    [radioCell drawWithFrame:NSRect(inflatedRect) inView:FlippedView()];
     
    335335    return sizes;
    336336}
     337
     338#if ENABLE(DATALIST)
     339static const IntSize* listButtonSizes()
     340{
     341    static const IntSize sizes[3] = { IntSize(21, 21), IntSize(19, 18), IntSize(17, 16) };
     342    return sizes;
     343}
     344#endif
    337345
    338346static const int* buttonMargins(NSControlSize controlSize)
     
    347355}
    348356
    349 static NSButtonCell* button(ControlPart part, ControlStates states, const IntRect& zoomedRect, float zoomFactor)
    350 {
    351     static NSButtonCell *buttonCell;
    352     static bool defaultButton;
     357static void setupButtonCell(NSButtonCell *&buttonCell, ControlPart part, ControlStates states, const IntRect& zoomedRect, float zoomFactor)
     358{
    353359    if (!buttonCell) {
    354360        buttonCell = [[NSButtonCell alloc] init];
    355361        [buttonCell setTitle:nil];
    356362        [buttonCell setButtonType:NSMomentaryPushInButton];
     363        if (states & DefaultState)
     364            [buttonCell setKeyEquivalent:@"\r"];
    357365    }
    358366
    359367    // Set the control size based off the rectangle we're painting into.
     368    const IntSize* sizes = buttonSizes();
     369#if ENABLE(DATALIST)
     370    if (part == ListButtonPart) {
     371        [buttonCell setBezelStyle:NSRoundedDisclosureBezelStyle];
     372        sizes = listButtonSizes();
     373    } else
     374#endif
    360375    if (part == SquareButtonPart || zoomedRect.height() > buttonSizes()[NSRegularControlSize].height() * zoomFactor) {
    361376        // Use the square button
     
    365380        [buttonCell setBezelStyle:NSRoundedBezelStyle];
    366381
    367     setControlSize(buttonCell, buttonSizes(), zoomedRect.size(), zoomFactor);
    368 
    369     if (defaultButton != (states & DefaultState)) {
    370         defaultButton = !defaultButton;
    371         [buttonCell setKeyEquivalent:(defaultButton ? @"\r" : @"")];
    372     }
     382    setControlSize(buttonCell, sizes, zoomedRect.size(), zoomFactor);
    373383
    374384    // Update the various states we respond to.
    375385    updateStates(buttonCell, states);
    376    
    377     return buttonCell;
     386}
     387
     388static NSButtonCell *button(ControlPart part, ControlStates states, const IntRect& zoomedRect, float zoomFactor)
     389{
     390    bool isDefault = states & DefaultState;
     391    static NSButtonCell *cells[2];
     392    setupButtonCell(cells[isDefault], part, states, zoomedRect, zoomFactor);
     393    return cells[isDefault];
    378394}
    379395
     
    381397{
    382398    BEGIN_BLOCK_OBJC_EXCEPTIONS
    383    
     399
    384400    // Determine the width and height needed for the control and prepare the cell for painting.
    385401    NSButtonCell *buttonCell = button(part, states, zoomedRect, zoomFactor);
     
    387403
    388404    NSControlSize controlSize = [buttonCell controlSize];
     405#if ENABLE(DATALIST)
     406    IntSize zoomedSize = (part == ListButtonPart ? listButtonSizes() : buttonSizes())[controlSize];
     407#else
    389408    IntSize zoomedSize = buttonSizes()[controlSize];
     409#endif
    390410    zoomedSize.setWidth(zoomedRect.width()); // Buttons don't ever constrain width, so the zoomed width can just be honored.
    391411    zoomedSize.setHeight(zoomedSize.height() * zoomFactor);
     
    408428            context->translate(-inflatedRect.x(), -inflatedRect.y());
    409429        }
    410     } 
     430    }
    411431
    412432    [buttonCell drawWithFrame:NSRect(inflatedRect) inView:FlippedView()];
     
    454474            // Height is reset to auto so that specified heights can be ignored.
    455475            return sizeFromFont(font, LengthSize(zoomedSize.width(), Length()), zoomFactor, buttonSizes());
     476#if ENABLE(DATALIST)
     477        case ListButtonPart:
     478            return sizeFromFont(font, LengthSize(zoomedSize.width(), Length()), zoomFactor, listButtonSizes());
     479#endif
    456480        default:
    457481            return zoomedSize;
     
    465489        case DefaultButtonPart:
    466490        case ButtonPart:
     491        case ListButtonPart:
    467492            return LengthSize(Length(0, Fixed), Length(static_cast<int>(15 * zoomFactor), Fixed));
    468493        default:
     
    477502        case DefaultButtonPart:
    478503        case ButtonPart:
     504        case ListButtonPart:
    479505            return LengthBox(0, zoomedBox.right().value(), 0, zoomedBox.left().value());
    480506        default:
     
    560586        case ButtonPart:
    561587        case SquareButtonPart:
     588        case ListButtonPart:
    562589            paintButton(part, states, context, zoomedRect, zoomFactor, scrollView);
    563590            break;
  • trunk/WebCore/rendering/RenderThemeChromiumMac.h

    r49259 r54215  
    192192
    193193    RetainPtr<WebCoreRenderThemeNotificationObserver> m_notificationObserver;
    194     bool paintMediaButtonInternal(GraphicsContext*, const IntRect&, Image*);
    195194};
    196195
  • trunk/WebCore/rendering/RenderThemeChromiumMac.mm

    r50781 r54215  
    4242#import "RenderView.h"
    4343#import "SharedBuffer.h"
    44 #import "UserAgentStyleSheets.h"
     44#import "TimeRanges.h"
    4545#import "WebCoreSystemInterface.h"
    4646#import "UserAgentStyleSheets.h"
     
    7979// The methods in this file are specific to the Mac OS X platform.
    8080
    81 // FIXME: The platform-independent code in this class should be factored out and merged with RenderThemeSafari. 
     81// FIXME: The platform-independent code in this class should be factored out and merged with RenderThemeSafari.
    8282
    8383@interface WebCoreRenderThemeNotificationObserver : NSObject
     
    9797    [super init];
    9898    _theme = theme;
    99    
     99
    100100    return self;
    101101}
     
    323323    }
    324324
    325     // This conversion above can fail if the NSColor in question is an NSPatternColor 
     325    // This conversion above can fail if the NSColor in question is an NSPatternColor
    326326    // (as many system colors are). These colors are actually a repeating pattern
    327327    // not just a solid color. To work around this we simply draw a 1x1 image of
     
    391391    if (m_systemColorCache.contains(cssValueId))
    392392        return m_systemColorCache.get(cssValueId);
    393    
     393
    394394    Color color;
    395395    switch (cssValueId) {
     
    505505    if (style->appearance() == TextFieldPart || style->appearance() == TextAreaPart || style->appearance() == ListboxPart)
    506506        return style->border() != border;
    507        
     507
    508508    // FIXME: This is horrible, but there is not much else that can be done.  Menu lists cannot draw properly when
    509509    // scaled.  They can't really draw properly when transformed either.  We can't detect the transform case at style
     
    519519{
    520520    ControlPart part = o->style()->appearance();
    521    
     521
    522522#if USE(NEW_THEME)
    523523    switch (part) {
     
    526526        case PushButtonPart:
    527527        case SquareButtonPart:
     528        case ListButtonPart:
    528529        case DefaultButtonPart:
    529530        case ButtonPart:
     
    566567{
    567568    FloatRect partRect(inputRect);
    568    
     569
    569570    // Compute an offset between the part renderer and the input renderer
    570571    FloatSize offsetFromInputRenderer;
     
    761762    LocalCurrentGraphicsContext localContext(paintInfo.context);
    762763    wkDrawCapsLockIndicator(paintInfo.context->platformContext(), r);
    763    
     764
    764765    return false;
    765766}
     
    821822
    822823    paintInfo.context->save();
    823    
     824
    824825#ifndef BUILDING_ON_TIGER
    825826    // On Leopard, the cell will draw outside of the given rect, so we have to clip to the rect
     
    981982    if (bounds.width() < arrowWidth + arrowPaddingLeft * o->style()->effectiveZoom())
    982983        return false;
    983    
     984
    984985    paintInfo.context->save();
    985986
    986     paintInfo.context->setFillColor(o->style()->color(), DeviceColorSpace);
     987    paintInfo.context->setFillColor(o->style()->color(), o->style()->colorSpace());
    987988    paintInfo.context->setStrokeStyle(NoStroke);
    988989
     
    10371038    style->resetBorder();
    10381039    style->resetPadding();
    1039    
     1040
    10401041    // Height is locked to auto.
    10411042    style->setHeight(Length(Auto));
     
    11071108    const int minHeight = 15;
    11081109    style->setMinHeight(Length(minHeight, Fixed));
    1109    
     1110
    11101111    style->setLineHeight(RenderStyle::initialLineHeight());
    11111112}
     
    11371138}
    11381139
     1140const int trackWidth = 5;
     1141const int trackRadius = 2;
     1142
    11391143void RenderThemeChromiumMac::adjustSliderTrackStyle(CSSStyleSelector*, RenderStyle* style, Element*) const
    11401144{
     
    11441148bool RenderThemeChromiumMac::paintSliderTrack(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r)
    11451149{
    1146     static const int trackWidth = 5;
    1147     static const int trackRadius = 2;
    1148  
    11491150    IntRect bounds = r;
    11501151    float zoomLevel = o->style()->effectiveZoom();
     
    11801181    CGContextDrawShading(context, mainShading.get());
    11811182    paintInfo.context->restore();
    1182    
     1183
    11831184    return false;
    11841185}
     
    12021203
    12031204    // Update the various states we respond to.
    1204     updateActiveState(sliderThumbCell, o);
     1205    updateActiveState(sliderThumbCell, o->parent());
    12051206    updateEnabledState(sliderThumbCell, o->parent());
    12061207    updateFocusedState(sliderThumbCell, o->parent());
     
    12341235    paintInfo.context->save();
    12351236    float zoomLevel = o->style()->effectiveZoom();
    1236    
     1237
    12371238    FloatRect unzoomedRect = bounds;
    12381239    if (zoomLevel != 1.0f) {
     
    12521253}
    12531254
    1254 void RenderThemeChromiumMac::adjustSliderThumbSize(RenderObject* o) const
    1255 {
    1256     static const int sliderThumbWidth = 15;
    1257     static const int sliderThumbHeight = 15;
    1258 
    1259     float zoomLevel = o->style()->effectiveZoom();
    1260     if (o->style()->appearance() == SliderThumbHorizontalPart || o->style()->appearance() == SliderThumbVerticalPart) {
    1261         o->style()->setWidth(Length(static_cast<int>(sliderThumbWidth * zoomLevel), Fixed));
    1262         o->style()->setHeight(Length(static_cast<int>(sliderThumbHeight * zoomLevel), Fixed));
    1263     }
    1264 
    1265 #if ENABLE(VIDEO)
    1266     RenderMediaControlsChromium::adjustMediaSliderThumbSize(o);
    1267 #endif
    1268 }
    1269 
    12701255bool RenderThemeChromiumMac::paintSearchField(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r)
    12711256{
     
    12801265
    12811266    IntRect unzoomedRect = r;
    1282    
     1267
    12831268    if (zoomLevel != 1.0f) {
    12841269        unzoomedRect.setWidth(unzoomedRect.width() / zoomLevel);
     
    13291314    if (!style->width().isIntrinsicOrAuto() && !style->height().isAuto())
    13301315        return;
    1331    
     1316
    13321317    // Use the font size to determine the intrinsic width of the control.
    13331318    setSizeFromFont(style, searchFieldSizes());
     
    13461331    style->setBorderBottomStyle(INSET);
    13471332    style->setBorderTopWidth(borderWidth);
    1348     style->setBorderTopStyle(INSET);   
    1349    
     1333    style->setBorderTopStyle(INSET);
     1334
    13501335    // Override height.
    13511336    style->setHeight(Length(Auto));
    13521337    setSearchFieldSize(style);
    1353    
     1338
    13541339    // Override padding size to match AppKit text positioning.
    13551340    const int padding = 1 * style->effectiveZoom();
     
    13581343    style->setPaddingTop(Length(padding, Fixed));
    13591344    style->setPaddingBottom(Length(padding, Fixed));
    1360    
     1345
    13611346    NSControlSize controlSize = controlSizeForFont(style);
    13621347    setFontFromControlSize(selector, style, controlSize);
     
    14961481    FloatRect localBounds = [search searchButtonRectForBounds:NSRect(input->renderBox()->borderBoxRect())];
    14971482    localBounds = convertToPaintingRect(input->renderer(), o, localBounds, r);
    1498    
     1483
    14991484    IntRect unzoomedRect(localBounds);
    15001485    if (zoomLevel != 1.0f) {
     
    15081493    [[search searchButtonCell] drawWithFrame:unzoomedRect inView:FlippedView()];
    15091494    [[search searchButtonCell] setControlView:nil];
    1510    
     1495
    15111496    paintInfo.context->restore();
    15121497
    15131498    return false;
     1499}
     1500
     1501const int sliderThumbWidth = 15;
     1502const int sliderThumbHeight = 15;
     1503
     1504void RenderThemeChromiumMac::adjustSliderThumbSize(RenderObject* o) const
     1505{
     1506    float zoomLevel = o->style()->effectiveZoom();
     1507    if (o->style()->appearance() == SliderThumbHorizontalPart || o->style()->appearance() == SliderThumbVerticalPart) {
     1508        o->style()->setWidth(Length(static_cast<int>(sliderThumbWidth * zoomLevel), Fixed));
     1509        o->style()->setHeight(Length(static_cast<int>(sliderThumbHeight * zoomLevel), Fixed));
     1510    }
     1511
     1512#if ENABLE(VIDEO)
     1513    RenderMediaControlsChromium::adjustMediaSliderThumbSize(o);
     1514#endif
    15141515}
    15151516
     
    15541555    return RenderMediaControlsChromium::paintMediaControlsPart(MediaTimelineContainer, object, paintInfo, rect);
    15551556}
    1556    
     1557
    15571558String RenderThemeChromiumMac::extraMediaControlsStyleSheet()
    15581559{
     
    15691570        [m_popupButton.get() setFocusRingType:NSFocusRingTypeExterior];
    15701571    }
    1571    
     1572
    15721573    return m_popupButton.get();
    15731574}
     
    16031604        [m_sliderThumbHorizontal.get() setFocusRingType:NSFocusRingTypeExterior];
    16041605    }
    1605    
     1606
    16061607    return m_sliderThumbHorizontal.get();
    16071608}
     
    16161617        [m_sliderThumbVertical.get() setFocusRingType:NSFocusRingTypeExterior];
    16171618    }
    1618    
     1619
    16191620    return m_sliderThumbVertical.get();
    16201621}
Note: See TracChangeset for help on using the changeset viewer.