[Lazarus] Special Request: Theme entire IDE support

Juha Manninen juha.manninen62 at gmail.com
Wed Mar 14 14:58:18 CET 2018

On Sat, Mar 10, 2018 at 5:41 AM, Anthony Walter via Lazarus
<lazarus at lists.lazarus-ide.org> wrote:
> As it stand Lazarus has already the ability to change the color of the
> source code editor, and some support for changing the object inspector
> colors, and message window colors, but all three of these customization
> systems operate independently of each other. Also there are many other tool
> windows whose colors or styles cannot be customized, such as the components
> list in the object inspector, the project manager, and elsewhere.
> An optimal solution would be to add a single IDE theme dialog allowing users
> controls the colors and default sizes of everything in the IDE. Items could
> be categorized in simple groups such as background color, text color/size,
> highlight color, border color/size, and so on. Color and size settings could
> be saved using a name, restored, and exported for others to use.
> I can think of a few ways this could be implemented, mainly through offering
> a hook into the Graphics unit to redefine custom values for system colors,
> and a flag to denote values have been overridden.

OI and other special IDE windows should indeed support theming. Now
they have fixed colors.
However LCL itself already supports theming because it maps to native
widgets. The native style + theme is used.
It means you should change a style for your entire desktop instead for
Lazarus alone.

LCL has some complex components like TreeView which are custom drawn
instead of native. Theming for them must be implemented using the
theme services already included in LCL.
Adding an external theme support for LCL apps sounds like a very bad
idea. It would combine the bad parts of a custom drawn and native
widget libraries.
Mapping to native widgets is a clear design decision which has both
pros and cons. Custom drawing everything is another design decision
with its own pros and cons.

Or, maybe there is something about this issue I don't fully understand.


More information about the Lazarus mailing list