During the "normal" callback for new and old values, the ofObject:
parameter passed to the observer is the original receiver of the
addObserver:forKeyPath:options:context: call, but that isn't the case
with the call caused by the CPKeyValueObservingOptionInitial option.
This commit uses _targetObject, the receiver of the addObserver:...
call, rather than self, the _CPKVOProxy.
CPKeyValueBinding will sent _setCurrentValueIsPlaceholder: to indicate to an object that current value is a placeholder and should be displayed as such. This commit implements the method for CPTextField and adds a unit test to test the behavior.
Copying previous constants
Removing unnecessary constants
Borrowing initialization from my old implementation.
Refactoring the initialization method and adding setBackgroundColor: override.
Removing +initialize (no theming support yet) and -viewDidMoveToWindow (not sure why this was there?)
Implement the bulk of the new CPTabView
Adding delegate selectors. Don't think this is complete, though. What about when a user clicks on a segmented tab control?!
Adding delegate
Think I may have fixed the delegate blocking for selected segment control items
Adding tests. Fixing a bug by reverting to old way. Delegates still broken.
Cleaning up the test.
Resolving delegate issues (thanks Saikat!).
Switching tab appearance based on type enum. Updating tests to slightly test this.
Conflicts:
AppKit/CPTabView2.j
- Current theme blend is available via CPApplication -themeBlend.
- List of themes is available via CPApplication -themes.
- CPThemeBlend adds the following methods:
themes
themeNames
- CPTheme adds a number of methods to access theme attributes:
classNames
attributesForClass:
attributeNamesForClass:
attributeWithName:forClass: (was _attributeWithName:forClass:)
valueForAttributeWithName:forClass
valueForAttributeWithName:inState:forClass:
- _CPThemeAttribute -values was added to access the dictionary of attribute values.
- Theme browser application that demonstrates the API.
- In the course of making the test app, added the function CGInsetEqualToInset().
- The default box background color is now clear, that is what Cocoa does.
- Bezel drawing uses CPDrawTiledRects, obeys border width.
- CPDrawTiledRects/CPDrawColorTiledRects explicitly sets the line width and saves/restores the graphics state.
- Whitespace cleanup in CPBox.
- added tests for componentsSeparatedByCharactersInSet:
- ensured Cocoa compatibility of componentsSeparatedByCharactersInSet:
- added new test for CPString boolValue
- fixed CPString boolValue (" ++01" should return NO as in Cocoa, previously it returned YES)
- Checkbox and radio selected states would not show in the images. It turns out that the image and alternate image cannot be encoded->decoded->set without messing up the theme, and unfortunately the theme blending task (during a jake build) would do so. So for now this means that we cannot encode non-theme images with a button class, which is unlikely to happen.
- Since we cannot access themes in the NS classes, I went ahead and started to make some constants in a few control classes so that the values can be changed in one place and affect the theme and nib2cib.
- A formatter function can be passed to the CPLogRegister functions. If the given level already has a provider for the given level, the formatter will be replaced with the one passed to the register function.
- Added CPLogColorize function to make it easy for users to colorize messages.
- CPLogRegisterRange now checks for min <= max, and now correctly starts iterating from min.
- Moved colorization of log level to _CPFormatLogMessage.
- Whitespace cleanup.