The default implementation of `[NSMenu]` uses `_aWindow` and `_bWindow` to determine the visibility of the menu. Not all themes use these windows to build a menu. For example, the WinUXTheme will use Win32 APIs to build a menu.
Allow themes to override the value of `[NSMenu _isVisible]` by introducing a `[GSTheme proposedVisibility: (BOOL)visible forMenu: (NSMenu *) menu]` method. The default implementation simply eturns the proposed visibility.
This (re-)implements logic where a box is marked
as opaque if it is a custom box which is not
transparent, but moves the logic to `GSTheme`,
allowing themes to override this loggic.
This fixes the rendering of custom boxes with a
custom fill color; the current implementation
would mark them as non-opaque and hence the fill
color would not be rendered.
- The original implementation (from 1999) always
returned `YES`
(53bcb50240)
- A more complete implementation was backported
from the Testplant branch in 2012
(e85b16bc05, by
@fredkiefer, upstream commit
36e77b95f7)
- More recently, the a return value of `NO` was
hardcoded
(02bc49e2d5, by
@ericwa)
NSDockTile - Implement methods to update the icon and show badge using a NSCustomImageRep. Link the NSDockTile view with the AppIcon window contentView.
GSTheme - add badgeColor color and corresponding methods to theme background, decoration and text color
* Source/GSThemeTools.m:
* Headers/Additions/GNUstepGUI/GSTheme.h: Small refactor:
most uses of -[GSTheme fillRect:withTiles:background:] use
[NSColor clearColor], so add a version without the background:
param.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@37244 72102866-910b-0410-8b05-ffd578937521
border using part GSColorWellInnerBorder
* Source/GSTheme.m:
* Headers/Additions/GNUstepGUI/GSTheme.h: Add GSColorWellInnerBorder
part name
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@37240 72102866-910b-0410-8b05-ffd578937521
part name, instead themes should just provide a part called NSScrollView.
Add -scrollViewScrollersOverlapBorders method.
* Source/GSTheme.m: Remove GSScrollViewBottomCorner part name.
* Source/GSThemeDrawing.m: Add -scrollViewScrollersOverlapBorders.
* Source/GSThemeDrawing.m (-drawBrowserRect:...): If
-scrollViewScrollersOverlapBorders is enabled, fill the browser background
with the NSScrollView tile.
* Source/GSThemeDrawing.m (-drawScrollViewRect:...): If
-scrollViewScrollersOverlapBorders is enabled, fill the scroll view background
with the NSScrollView tile.
* Source/NSScroller.m (-rectForPart:): Change the meaning of the
GSScrollerKnobOvershoot default so the knob only overlaps the buttons
by this much (rather than both ends of the track). Turns out this is more
useful for themes.
* Source/NSScrollView.m (-tile): Add support for
-[GSTheme scrollViewScrollersOverlapBorders]
* Source/NSBrowser.m (-tile): Add support for
-[GSTheme scrollViewScrollersOverlapBorders] and
-[GSTheme scrollViewUseBottomCorner]
The overall point of these additions is to support NSScrollView and
NSBrowser looking like: http://jesseross.com/clients/gnustep/ui/concepts/
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@37238 72102866-910b-0410-8b05-ffd578937521
method.
* Source/GSThemeDrawing.m:
* Source/NSTabView.m: Move the -contentRect implementation to GSTheme
so we can delegate to GSDrawTiles, if used.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@37234 72102866-910b-0410-8b05-ffd578937521
control state: GSThemeFirstResponderState,
GSThemeHighlightedFirstResponderState,
and GSThemeSelectedFirstResponderState. This lets themes draw
custom first responder tiles, if the desired effect can't be
accomplished by drawing on top of an existing button.
* Source/GSThemeDrawing.m (-drawFocusFrame:inRect:):
Use tiles named "NSFocusRing" if available, else draw dotted
rect.
* Source/GSTheme.m:
* Source/NSButtonCell.m: Use new GSTheme*FirstResponderState
states
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@37227 72102866-910b-0410-8b05-ffd578937521
* Source/GSTheme.m: Add GSProgressIndicatorBezel part name
* Source/GSThemeDrawing.m (-drawProgressIndicatorBezel:withClip:):
Use GSProgressIndicatorBezel to draw bezel if available.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@37222 72102866-910b-0410-8b05-ffd578937521