Commit graph

154 commits

Author SHA1 Message Date
Frederik Carlier
c89d7432a4
Expose additional GSTheme method(s) for adding NSTabView theming to WinUXTheme (#308)
Co-authored-by: Marcian Lytwyn <marcian.lytwyn@eggplant.io>
2024-11-05 09:00:07 +01:00
Frederik Carlier
acf00ce5d2
Allow themes to override [NSMenu _isVisible] (#307)
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.
2024-10-27 22:02:20 +01:00
Gregory John Casamento
cf7b9ebd39 Final changes suggested by @fredkiefer and some small fixes before merge 2024-06-16 20:52:06 -04:00
Gregory John Casamento
77bf2f823b Move method back, eliminate possible duplicate call to render outline cell, changes suggested by review with @fredkiefer 2024-06-16 16:25:00 -04:00
Gregory John Casamento
b4c98b329b Move method that renders the outline icon per discussion with @fredkiefer, also includes some whitespace fixes 2024-06-16 08:38:12 -04:00
Gregory John Casamento
4d5957eaf7 Fully refactor delegate calls into NSTableView/NSOutlineView and move outlineColumn drawing to a public method 2024-04-28 09:49:19 -04:00
Gregory John Casamento
a11f562997 Remove GSXibInternal, since it is not needed for this PR. Make drawing method parameter types more explicit, correct delegate method name in NSOutlineView 2024-04-22 09:00:53 -04:00
Gregory John Casamento
48d031a14a Add improvements suggested by @fredkiefer 2024-04-22 09:00:53 -04:00
Gregory John Casamento
64b35d46ca Fixed issues recommended by @fredkiefer 2024-04-22 09:00:53 -04:00
Gregory John Casamento
6ca3708722 Code cleanup, remove duplicates, reorganize some methods so that it is the same as in the header 2024-04-22 09:00:53 -04:00
Gregory John Casamento
f787edfcfb Consolidate and refactor the cellview methods in the theme drawing code, so that there is no repeated code 2024-04-22 09:00:53 -04:00
Gregory John Casamento
f71ee8641b Initial changes for NSOutlineView view-based support 2024-04-22 09:00:53 -04:00
Gregory John Casamento
ebdbe0930f Add methods to theme and to NSTableView to get the view from the delegate, this is a partial commit to save my place here... will follow up shortly 2024-04-22 09:00:53 -04:00
Frederik Carlier
892ed4877e
NSBox: (re-)implement isOpaque (#254)
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)
2024-04-04 22:23:14 +02:00
Sergei Golovin
53cb373976
Support tab renaming in terminal (#243)
* add missed methods declarations to GSTheme.h

* style tweaks
2024-02-19 09:11:56 +01:00
Kyle J Cardoza
7f70818be2 Added the ability for GSTheme subclasses to provide custom implementations of GSWindowDecorator. 2023-09-22 21:17:15 -04:00
Kyle J Cardoza
225eea02d5 Addressed request for change in NSMenu.m, and moved function of
-[_organizeMenu] to GSTheme-[organizeMenu:isHorizontal].
2023-09-22 18:57:15 -04:00
Kyle J Cardoza
096327e87b Addressed changes requested in PR 201 2023-09-22 15:20:23 -04:00
Kyle J Cardoza
07f1b8759a Added window titlebar GSTheme hooks. 2023-09-22 01:42:47 -04:00
Kyle J Cardoza
a9f33627f1 Added menu organization hooks 2023-09-20 12:52:01 -04:00
Kyle J Cardoza
81b59ad0a0 Initial implementation of new GSTheme hooks and default implementations. 2023-09-19 22:20:12 -04:00
Gregory Casamento
f2b79365f4
NSDockTile - Implement methods to update the icon and show badge (#185)
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
2023-07-27 09:17:18 +02:00
Gregory John Casamento
92d27c494f Add defines for export of classes to DLL when building on WIndows 2022-09-29 12:09:13 -04:00
Riccardo Mottola
e0012349f6 Refactor resize bar notch width to be a constant and private inside GSTheme, making it accessible through -[GSTheme resizebarNotchWidth]. 2022-03-31 23:43:52 +02:00
Gregory John Casamento
73c03767df Add tabview enum to header, fix signture issue. 2021-10-13 08:26:37 -04:00
Gregory John Casamento
7764903d6d Make drawing use the component cell to render 2020-05-06 08:38:31 -04:00
Gregory John Casamento
7dd732f9de Move to GSTheme. 2020-05-03 20:51:51 -04:00
Gregory John Casamento
fdd51ae2df Add color for disabled state 2020-04-24 02:34:59 -04:00
Gregory John Casamento
5d1ec31ef2 Move color selection into the theme 2020-04-22 17:44:04 -04:00
Gregory John Casamento
f57e5184c3 Resolve theme issues, change size of knob 2020-04-22 17:34:14 -04:00
Gregory John Casamento
da0f7ded36 Better colors 2020-04-17 18:03:26 -04:00
Gregory John Casamento
ecc9791ecf Draw elements. 2020-04-17 06:10:04 -04:00
Gregory John Casamento
a1672a4605 Add skeleton drawing method for switch to GSThemeDrawing. 2020-04-16 12:16:30 -04:00
Richard Frith-Macdonald
6d71a028c0 Improve documentation to say that colors should be themed via user defaults 2019-05-10 14:03:58 +01:00
fredkiefer
3ad98f9474 * Headers/Additions/GNUstepGUI/GSTheme.h,
* Source/GSThemeDrawing.m: Correct int/NSInteger mismatch detected
by Josh Freeman <pikopixel@twilightedge.com>.
2018-02-27 22:02:54 +01:00
Richard Frith-MacDonald
a0bb18fbcc Minor documentation fixes
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@39824 72102866-910b-0410-8b05-ffd578937521
2016-05-31 10:24:19 +00:00
Richard Frith-MacDonald
95a6eb6766 Document the new option to haveapp-specific named images in a theme.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@39121 72102866-910b-0410-8b05-ffd578937521
2015-11-02 17:46:53 +00:00
Gregory John Casamento
971a573445 Add drawing methods for theming NSBrowserCell.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@38690 72102866-910b-0410-8b05-ffd578937521
2015-06-26 05:27:12 +00:00
Gregory John Casamento
4213323979 Add more theme methods for theming windows.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@38687 72102866-910b-0410-8b05-ffd578937521
2015-06-26 00:13:05 +00:00
Gregory John Casamento
0ff0a07742 Added methods to retrieve dimensions for titlebar buttons and padding dimensions in a theme specific way rather than having them hard-coded.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@38681 72102866-910b-0410-8b05-ffd578937521
2015-06-25 18:18:41 +00:00
Gregory John Casamento
5d9a261362 Move declarations of GSPrintPanel and GSPageLayout to theme and remove uneeded classes since they are not used and only override allocWithZone:.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@38324 72102866-910b-0410-8b05-ffd578937521
2015-02-03 20:26:10 +00:00
Gregory John Casamento
e53b5e2e46 Add print panels to theme.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@38318 72102866-910b-0410-8b05-ffd578937521
2015-02-01 20:46:37 +00:00
Eric Wasylishen
d9da770d5b * Source/GSThemeDrawing.m:
* 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
2013-10-16 07:19:45 +00:00
Eric Wasylishen
326a3d57f4 * Source/GSThemeDrawing.m:
* Headers/Additions/GNUstepGUI/GSTheme.h: Add methods
	-menuSubmenuHorizontalOverlap and -menuSubmenuVerticalOverlap
	wrapping user defaults GSMenuSubmenuHorizontalOverlap and
	GSMenuSubmenuVerticalOverlap
	* Source/NSMenuView.m (-locationForSubmenu:): Offset calculations
	by -[GSTheme menuSubmenuHorizontalOverlap] and
	-[GSTheme menuSubmenuVerticalOverlap]


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@37243 72102866-910b-0410-8b05-ffd578937521
2013-10-16 07:08:15 +00:00
Eric Wasylishen
c05595c8be * Source/GSThemeDrawing.m (-drawColorWellBorder:...): Draw inner
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
2013-10-16 04:11:41 +00:00
Eric Wasylishen
310b7d5786 * Headers/Additions/GNUstepGUI/GSTheme.h: Remove GSScrollViewBottomCorner
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
2013-10-15 23:26:51 +00:00
Eric Wasylishen
1fdf58e506 * Headers/Additions/GNUstepGUI/GSTheme.h: Add -tabViewContentRectForBounds:
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
2013-10-15 07:27:44 +00:00
Eric Wasylishen
6f4a16835b * Headers/Additions/GNUstepGUI/GSTheme.h: Add three new theme
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
2013-10-14 17:18:38 +00:00
Eric Wasylishen
5501a5a4b7 * Headers/Additions/GNUstepGUI/GSTheme.h:
* 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
2013-10-14 03:31:54 +00:00
Eric Wasylishen
3e533f43b1 * Source/GSThemeDrawing.m:
* Source/GSTheme.m:
* Headers/Additions/GNUstepGUI/GSTheme.h: Add part names for
themeing bottom tabs.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@37211 72102866-910b-0410-8b05-ffd578937521
2013-10-09 01:48:50 +00:00