From 091debd2a78b5cacd527ccaba457c705783b4e12 Mon Sep 17 00:00:00 2001 From: daboe01 Date: Mon, 20 Aug 2018 11:40:00 +0200 Subject: [PATCH] Fixed: deviation from cocoa when calling setTitle:'' (#2607) --- AppKit/CPPopUpButton.j | 12 ++++++++++-- Tests/Manual/CPPopUpButtonTest/AppController.j | 15 +++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/AppKit/CPPopUpButton.j b/AppKit/CPPopUpButton.j index 12f7b8638..e5c669b44 100644 --- a/AppKit/CPPopUpButton.j +++ b/AppKit/CPPopUpButton.j @@ -491,9 +491,17 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); if (index < 0) { - [self addItemWithTitle:aTitle]; - index = [self numberOfItems] - 1; + // this ist to match cocoa where setting an empty string does not add it but simply clears the title + // and sets objectValue to -1 + if (aTitle === '') + [self selectItemAtIndex:-1]; + else + { + [self addItemWithTitle:aTitle]; + + index = [self numberOfItems] - 1; + } } [self selectItemAtIndex:index]; diff --git a/Tests/Manual/CPPopUpButtonTest/AppController.j b/Tests/Manual/CPPopUpButtonTest/AppController.j index 84886378a..0e13f1dd7 100644 --- a/Tests/Manual/CPPopUpButtonTest/AppController.j +++ b/Tests/Manual/CPPopUpButtonTest/AppController.j @@ -75,9 +75,24 @@ // https://github.com/280north/cappuccino/pull/1018 [popUpButton2 selectItemWithTag:2]; + // manual test for https://github.com/cappuccino/cappuccino/issues/2471 + var button2 = [CPButton buttonWithTitle:@"Set title to: ''"]; + + [button2 setCenter:CGPointMake([contentView center].x, 0)]; + [button2 setFrameOrigin:CGPointMake(CGRectGetMinX([button frame]), CGRectGetMaxY([button frame]) + 20)]; + [button2 setTarget:self]; + [button2 setAction:@selector(setTitleToEmptyString:)]; + [contentView addSubview:button2]; + + [theWindow orderFront:self]; } +- (@action)setTitleToEmptyString:(id)sender +{ + [popUpButton setTitle:'']; +} + - (@action)removeItems:(id)sender { [popUpButton2 removeAllItems];