Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
Home » Community » U++ community news and announcements » U++ 2019.1.rc4 released
U++ 2019.1.rc4 released [message #51554] Mon, 15 April 2019 08:23 Go to next message
mirek is currently offline  mirek
Messages: 11822
Registered: November 2005
Ultimate Member
Hi,

after a ministorm of bugs and fixes, we are now at rc4.

https://sourceforge.net/projects/upp/files/upp/2019.1.rc4/

Thinks fixed and added:

- Support for Visual C++ / Build Tools 2019
- MacOS version does not require crypto.dylib installed to run theide
- Fixed issue in theide help (multiplying entries for topics with TOC)
- Mingw (and, in fact GCC and CLANG) now support "SO" compilation (compiles packages to .dll/.so/.dylib, this helps with linking speed)

Thanks for testing!

Mirek

[Updated on: Mon, 15 April 2019 08:24]

Report message to a moderator

Re: U++ 2019.1.rc4 released [message #51555 is a reply to message #51554] Mon, 15 April 2019 08:54 Go to previous messageGo to next message
koldo is currently offline  koldo
Messages: 2944
Registered: August 2008
Veteran
Thank you all for your great job Smile Smile

Best regards
IƱaki
Re: U++ 2019.1.rc4 released [message #51557 is a reply to message #51554] Tue, 16 April 2019 08:39 Go to previous messageGo to next message
Tom1
Messages: 612
Registered: March 2007
Contributor
Hi,

I have now tested rc4 (on Windows 10 1809 / 64-bit with my own application code) and everything seems to work fine. Smile

Thanks and best regards,

Tom
Re: U++ 2019.1.rc4 released [message #51568 is a reply to message #51557] Wed, 17 April 2019 14:48 Go to previous messageGo to next message
cbpporter is currently offline  cbpporter
Messages: 1351
Registered: September 2007
Senior Contributor
Will test it ASAP. Takes a couple of days to merge all my forks into the main release...
Re: U++ 2019.1.rc4 released [message #51572 is a reply to message #51568] Wed, 17 April 2019 21:31 Go to previous messageGo to next message
Novo is currently online  Novo
Messages: 753
Registered: December 2006
Contributor
I was investigating a crash with TheIDE and discovered a bunch of uninitialized memory reads. Please check an attached file.
  • Attachment: vg.log
    (Size: 365.15KB, Downloaded 7 times)


Regards,
Novo
Re: U++ 2019.1.rc4 released [message #51573 is a reply to message #51554] Wed, 17 April 2019 23:43 Go to previous messageGo to next message
forlano is currently offline  forlano
Messages: 1049
Registered: March 2006
Location: Italy
Experienced Contributor
Hi Mirek,

the Mac OS version seems to work properly.
Thanks,
Luigi
Re: U++ 2019.1.rc4 released [message #51574 is a reply to message #51573] Thu, 18 April 2019 00:22 Go to previous messageGo to next message
Novo is currently online  Novo
Messages: 753
Registered: December 2006
Contributor
I'm getting a random crash with TheIDE (every second time I launch it) with the call stack below. (Full rebuild)

#0  0x0000555555879007 in SkipGdbInfo(Upp::CParser&) (p=...) at /home/ssg/dvlp/cpp/upp/git/uppsrc/ide/Debuggers/GdbData.cpp:8
#1  0x000055555587a7d8 in DataClean(Upp::CParser&) (p=...) at /home/ssg/dvlp/cpp/upp/git/uppsrc/ide/Debuggers/GdbData.cpp:63
#2  0x000055555587ac13 in DataClean(char const*) (s=<optimized out>) at /home/ssg/dvlp/cpp/upp/git/uppsrc/ide/Debuggers/GdbData.cpp:79
#3  0x000055555587fac2 in Gdb::TryAuto(Upp::Index<Upp::String>&, Upp::String const&) (this=0x7fffde4e4030, tested=..., exp=...)
    at /home/ssg/dvlp/cpp/upp/git/uppsrc/Core/String.h:313
#4  0x000055555587fd69 in Gdb::Autos() (this=0x7fffde4e4030) at /home/ssg/dvlp/cpp/upp/git/uppsrc/ide/Debuggers/GdbData.cpp:172
#5  0x0000555555883dd9 in Gdb::Cmdp(char const*, bool, bool)
    (this=0x7fffde4e4030, cmdline=<optimized out>, fr=<optimized out>, setframe=<optimized out>)
    at /home/ssg/dvlp/cpp/upp/git/uppsrc/ide/Debuggers/Gdb.cpp:292
#6  0x000055555588470a in Gdb::Step(char const*) (this=0x7fffde4e4030, cmd=0x555555f18f84 "next")
    at /home/ssg/dvlp/cpp/upp/git/uppsrc/ide/Debuggers/Gdb.cpp:453
#7  0x00005555558fcb7d in Upp::Function<void ()>::operator()() const (this=<optimized out>) at /home/ssg/dvlp/cpp/upp/git/uppsrc/Core/Function.h:76
#8  0x00005555558fcb7d in Upp::Bar::ScanKeys::Do(unsigned int) (k=131015, this=0x7ffffffcad10)
    at /home/ssg/dvlp/cpp/upp/git/uppsrc/CtrlLib/Bar.cpp:509
#9  0x00005555558fcb7d in Upp::Bar::Scan(Upp::Function<void (Upp::Bar&)>, unsigned int) (proc=..., key=131015)
    at /home/ssg/dvlp/cpp/upp/git/uppsrc/CtrlLib/Bar.cpp:520
#10 0x00005555558fd26f in Upp::TopSubMenuItem::HotKey(unsigned int) (this=0x7ffff3a05080, key=131015) at /usr/include/c++/8/bits/atomic_base.h:299
#11 0x0000555555bf1d15 in Upp::Ctrl::HotKey(unsigned int) (this=<optimized out>, key=131015)
    at /home/ssg/dvlp/cpp/upp/git/uppsrc/CtrlCore/CtrlCore.h:1113
#12 0x0000555555bf1d15 in Upp::Ctrl::HotKey(unsigned int) (this=this@entry=0x7ffffffccb70, key=key@entry=131015)
    at /home/ssg/dvlp/cpp/upp/git/uppsrc/CtrlCore/CtrlCore.h:1113
#13 0x00005555559191f2 in Upp::MenuBar::HotKey(unsigned int) (this=0x7ffffffccb70, key=131015)
    at /home/ssg/dvlp/cpp/upp/git/uppsrc/CtrlLib/MenuBar.cpp:433
#14 0x0000555555bf1d15 in Upp::Ctrl::HotKey(unsigned int) (this=<optimized out>, key=131015)
    at /home/ssg/dvlp/cpp/upp/git/uppsrc/CtrlCore/CtrlCore.h:1113
#15 0x0000555555bf1d15 in Upp::Ctrl::HotKey(unsigned int) (this=<optimized out>, key=131015)
    at /home/ssg/dvlp/cpp/upp/git/uppsrc/CtrlCore/CtrlCore.h:1113
#16 0x0000555555bf5010 in Upp::Ctrl::DispatchKey(unsigned int, int) (keycode=131015, count=1) at /home/ssg/dvlp/cpp/upp/git/uppsrc/Core/Ptr.h:43
#17 0x0000555555c0b945 in Upp::Ctrl::Proc() (this=<optimized out>) at /home/ssg/dvlp/cpp/upp/git/uppsrc/CtrlCore/GtkEvent.cpp:485
#18 0x0000555555c0c78f in Upp::Ctrl::ProcessEvent0(bool*, bool) (quit=0x0, fetch=<optimized out>)
    at /home/ssg/dvlp/cpp/upp/git/uppsrc/CtrlCore/GtkEvent.cpp:557
#19 0x0000555555c0cd21 in Upp::Ctrl::ProcessEvents0(bool*, bool) (fetch=fetch@entry=true, quit=0x0)
    at /home/ssg/dvlp/cpp/upp/git/uppsrc/CtrlCore/GtkEvent.cpp:583
#20 0x0000555555c0d50d in Upp::Ctrl::ProcessEvents(bool*) (quit=0x0) at /home/ssg/dvlp/cpp/upp/git/uppsrc/CtrlCore/GtkEvent.cpp:631
#21 0x0000555555c0d50d in Upp::Ctrl::EventLoop(Upp::Ctrl*) (ctrl=0x7ffffffcb380) at /home/ssg/dvlp/cpp/upp/git/uppsrc/CtrlCore/GtkEvent.cpp:631
#22 0x0000555555c15a71 in Upp::TopWindow::Run(bool) (this=this@entry=0x7ffffffcb380, appmodal=appmodal@entry=false)
    at /home/ssg/dvlp/cpp/upp/git/uppsrc/CtrlCore/TopWindow.cpp:324
#23 0x0000555555811f1e in GuiMainFn_() () at /home/ssg/dvlp/cpp/upp/git/uppsrc/ide/main.cpp:305
#24 0x0000555555710d08 in main(int, char**, char const**) (argc=1, argv=0x7fffffffdef8, envptr=0x55555628b2f0)
    at /home/ssg/dvlp/cpp/upp/git/uppsrc/ide/main.cpp:120

It is most likely related to uninitialized memory reads or corrupted memory.


Regards,
Novo
Re: U++ 2019.1.rc4 released [message #51575 is a reply to message #51574] Thu, 18 April 2019 07:59 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 11822
Registered: November 2005
Ultimate Member
Novo wrote on Thu, 18 April 2019 00:22
I'm getting a random crash with TheIDE (every second time I launch it) with the call stack below. (Full rebuild)


Thanks. It would be really helpful to provide info about host platform and steps to reproduce.

From the call stack it looks like like crash in Gdb interface. Does it happen when trying to debug something?

Mirek
Re: U++ 2019.1.rc4 released [message #51576 is a reply to message #51574] Thu, 18 April 2019 08:03 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 11822
Registered: November 2005
Ultimate Member
Novo wrote on Thu, 18 April 2019 00:22
I'm getting a random crash with TheIDE (every second time I launch it) with the call stack below. (Full rebuild)
It is most likely related to uninitialized memory reads or corrupted memory.


Based on stack dump, hopefully fixed in trunk. Please test.

Mirek
Re: U++ 2019.1.rc4 released [message #51578 is a reply to message #51576] Thu, 18 April 2019 10:17 Go to previous messageGo to next message
cbpporter is currently offline  cbpporter
Messages: 1351
Registered: September 2007
Senior Contributor
Weirdly I got a compilation error in some code that hasn't been touched in years related to variable shadowing...

Something must have changed in the way the C++ compiler is invoked.

Not a real problem though, it is better to not shadow so I renamed the variables.

My projects are made out of multiple executable and usually I have multiple TheIDEs running (3+), but this new release has a blazing fast "open main package".

I tested the command line stuff. No issues.

Next I'll test GUI.

Is there a a way to force dark mode under Windows? I have code editor colors for dark mode, but they always looked out of place with light UI.
Re: U++ 2019.1.rc4 released [message #51579 is a reply to message #51578] Thu, 18 April 2019 10:30 Go to previous messageGo to next message
Tom1
Messages: 612
Registered: March 2007
Contributor
Hi cbpporter,

Dark theme is enabled in Windows 10 using Settings > Colors > Choose your default app mode > Dark

Then restart TheIDE.

Best regards,

Tom
Re: U++ 2019.1.rc4 released [message #51580 is a reply to message #51572] Thu, 18 April 2019 10:53 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 11822
Registered: November 2005
Ultimate Member
Novo wrote on Wed, 17 April 2019 21:31
I was investigating a crash with TheIDE and discovered a bunch of uninitialized memory reads. Please check an attached file.


Should be all fixed in the trunk.

All of it was innocent things like Enabling/Disableing random buttons in theide toolbar during initialization, then it got fixed by second SetBar call even before theide is open.

That said, it is definitely better if theide runs valgrind clean, so I from now on I will do valgrind checks before each release. Thank you.

Mirek
Re: U++ 2019.1.rc4 released [message #51581 is a reply to message #51579] Thu, 18 April 2019 12:43 Go to previous messageGo to next message
cbpporter is currently offline  cbpporter
Messages: 1351
Registered: September 2007
Senior Contributor
Tom1 wrote on Thu, 18 April 2019 11:30
Hi cbpporter,

Dark theme is enabled in Windows 10 using Settings > Colors > Choose your default app mode > Dark

Then restart TheIDE.

Best regards,

Tom

Thanks! I mean more like in code, how to turn on CtrlLib dark mode.

Found it in GIT: Ctrl::SetDarkThemeEnabled();

But... sweet baby Jesus, my eyes! I do not mean to be rude or anything, but those colors... That contrast... That Cyan text if you switch code editor to dark mode in TheIDE. That color scheme is completely unusable. It makes my eyes bleed. And literally hurt.

Again, not to be rude, but to avoid personal bias, I showed the theme to about 5 people and we had a good time. Except for the eye bleeding...

Not to mention that it is buggy and once I switched CodeEditor to dark mode, switching it to light mode doesn't work and restoring defaults.

I need to delete settings to get things back to normal...

We need something like SetDarkIconsEnabled which is independent on SetDarkThemeEnabled, maybe support for two color icons...

And a serious pass on the colors...

I tried to change the colors but it is not as simple as it sounds because of TheIDE: I noticed that several parts of TheIDE and CodeEditor work differently when together or used separately, probably because TheIDE micros and sets stuff multiple times in different points. So changing test application was easy, changing TheIDE very hard.

Chameleon needs refactoring.

Still, after about 15 minutes of work, see the attached screenshot.

I am not a graphics designer...
  • Attachment: darkmode.png
    (Size: 203.49KB, Downloaded 11 times)
Re: U++ 2019.1.rc4 released [message #51582 is a reply to message #51581] Thu, 18 April 2019 13:01 Go to previous messageGo to next message
cbpporter is currently offline  cbpporter
Messages: 1351
Registered: September 2007
Senior Contributor
Oh, and calling Ctrl::SetDarkThemeEnabled() with Windows set to light theme causes problems both in TheIDE and test app. Calling Ctrl::ReSkin() after fixes these problems but now the theme is white.

Chameleon really needs to read and write themes once, respect what you tell it to do and have a clear point after which you can make changes that are never lost by random CtrlCore behavior.

Calling SetDarkThemeEnabled once in GUI_APP_MAIN should be enough for that application to be dark forever. Then you should be able to change ink from black to Color(51, 51, 51) and this change to be respected forever.

If this can't be done with the current API, we need a new Theme class that is always respected and just change themes as monoliths.

This reminds me of my work many years ago in bazaar/Theme, where you had to Apply the theme in a very specific semi-magical way for it reliably work... I no longer remember too many details about working with Chameleon and no longer have an intuitive grasp on what a "color shadow" means, so I can't pick the colors perfectly...
Re: U++ 2019.1.rc4 released [message #51584 is a reply to message #51581] Thu, 18 April 2019 13:33 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 11822
Registered: November 2005
Ultimate Member
cbpporter wrote on Thu, 18 April 2019 12:43
Tom1 wrote on Thu, 18 April 2019 11:30
Hi cbpporter,

Dark theme is enabled in Windows 10 using Settings > Colors > Choose your default app mode > Dark

Then restart TheIDE.

Best regards,

Tom

Thanks! I mean more like in code, how to turn on CtrlLib dark mode.

Found it in GIT: Ctrl::SetDarkThemeEnabled();

But... sweet baby Jesus, my eyes! I do not mean to be rude or anything, but those colors... That contrast... That Cyan text if you switch code editor to dark mode in TheIDE. That color scheme is completely unusable. It makes my eyes bleed. And literally hurt.

Again, not to be rude, but to avoid personal bias, I showed the theme to about 5 people and we had a good time. Except for the eye bleeding...

Not to mention that it is buggy and once I switched CodeEditor to dark mode, switching it to light mode doesn't work and restoring defaults.

I need to delete settings to get things back to normal...

We need something like SetDarkIconsEnabled which is independent on SetDarkThemeEnabled, maybe support for two color icons...

And a serious pass on the colors...


Your post is confusing, I am really not able to tell what you are speaking about...

Are you annoyed by colors in theide editor in the dark mode? (If so, welcome to the club, I dislike it too. But then I really dislike dark theme itself, so who am I to judge...).

SetDarkThemeEnabled tells U++ that application is ready to handle the dark theme. It in fact has any meaning only in windows. If you activate that, app starts following theme setting in Windows 10.
Re: U++ 2019.1.rc4 released [message #51585 is a reply to message #51582] Thu, 18 April 2019 13:38 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 11822
Registered: November 2005
Ultimate Member
cbpporter wrote on Thu, 18 April 2019 13:01
Oh, and calling Ctrl::SetDarkThemeEnabled() with Windows set to light theme causes problems both in TheIDE and test app. Calling Ctrl::ReSkin() after fixes these problems but now the theme is white.

Chameleon really needs to read and write themes once, respect what you tell it to do and have a clear point after which you can make changes that are never lost by random CtrlCore behavior.

Calling SetDarkThemeEnabled once in GUI_APP_MAIN should be enough for that application to be dark forever. Then you should be able to change ink from black to Color(51, 51, 51) and this change to be respected forever.


Really not sure what you are trying to do. U++ is designed in a way that the look&feel is set at the start of app and should not change after that point.

theide works quite well in both dark and light.

There is one issue which is maybe confusing. The editor highlighting settings are INDEPENDENT. Yes, on the first start light or dark theme is loaded based on current schema, but then it stays at colors selected. The reason is simple: colors are user settings, so you cannot change them at start. Users who want to adjust settings would not be happy about it...

Mirek
Re: U++ 2019.1.rc4 released [message #51587 is a reply to message #51585] Thu, 18 April 2019 14:02 Go to previous messageGo to next message
cbpporter is currently offline  cbpporter
Messages: 1351
Registered: September 2007
Senior Contributor
The issues is that TheIDE CtrlCore constantly overrides your changes. In a very counter-intuitive way. Chameleon has been doing this for over a decade now. If you want to correct something, you can't easily do it. If you want to implement your own theme on top of the current dark mode? It is fairly hard. It is fairly hard to force a dark app on a light windows or the other way around. Making TheIDE do the same thing is even harder because it also constantly overrides you changes in many places. The same for code editor.

Chameleon has always been a bit hard to use and counter-intuitive.

As an example, the newest addition: SetDarkThemeEnabled. This should set your app to dark theme. Always. Without asking the operating system in 1000 places if IsDarkTheme.

Quote:
SetDarkThemeEnabled tells U++ that application is ready to handle the dark theme. It in fact has any meaning only in windows. If you activate that, app starts following theme setting in Windows 10.

IMHO that is a counter-intuitive and problematic design. SetDarkThemeEnabled means "Set my theme to dark": change colors and skins.

Why cant U++ detect multiple themes and be coded to religiously follow those themes. So that if you change them, I don't have to track down dozen of places to make things just work.

I would use a design where you have a Theme, all theme aware components just read from the theme, nobody can write, the theme knows if it is dark or now (you can use heuristics if not sure) and then people are free to update that theme. The system would auto-detect the theme before GUI_APP_MAIN, produce both light an dark versions, and then you in GUI_APP_MAIN can produce a new theme based on both, set the theme without ruining the originals and things should just work.

In short, two phases:
- auto-detect and build several themes
- use the theme (just set a pointer and force the gui to refresh)

And negative icons must be turned on or off independently from any setting. All my hand inverted dark mode icons are now auto-inverted and made ugly.

Been though this multiple times, but never arrived to a final perfect dark mode skin.

I'm currently googling samples, this is the best I found for full GUI.
https:// www.reddit.com/r/Unity3D/comments/9reqtm/i_wasnt_planning_on _sharing_this_so_early_but/

I'll continue searching and am open to suggestions. If anybody knows a good dark UI that is easy to copy, please let me know.
Re: U++ 2019.1.rc4 released [message #51588 is a reply to message #51587] Thu, 18 April 2019 14:13 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 11822
Registered: November 2005
Ultimate Member
cbpporter wrote on Thu, 18 April 2019 14:02
The issues is that TheIDE CtrlCore constantly overrides your changes. In a very counter-intuitive way. Chameleon has been doing this for over a decade now. If you want to correct something, you can't easily do it. If you want to implement your own theme on top of the current dark mode? It is fairly hard. It is fairly hard to force a dark app on a light windows or the other way around. Making TheIDE do the same thing is even harder because it also constantly overrides you changes in many places. The same for code editor.

Chameleon has always been a bit hard to use and counter-intuitive.


Maybe because the problem itself is hard and counterintiutive?

Anyway, missing docs about Chameleon is not helping. Will try to fix than.

Quote:

Quote:
SetDarkThemeEnabled tells U++ that application is ready to handle the dark theme. It in fact has any meaning only in windows. If you activate that, app starts following theme setting in Windows 10.

IMHO that is a counter-intuitive and problematic design. SetDarkThemeEnabled means "Set my theme to dark": change colors and skins.


OK, we can argue about the name and I am willing to change it. But I really need that function to do exactly what it does.

Quote:

Why cant U++ detect multiple themes and be coded to religiously follow those themes. So that if you change them, I don't have to track down dozen of places to make things just work.

I would use a design where you have a Theme, all theme aware components just read from the theme, nobody can write, the theme knows if it


Thats centralized model which is not extensible - that is the issue I wanted to avoid.

Quote:

- use the theme (just set a pointer and force the gui to refresh)


void Ctrl::SetSkin(void (*_skin)())

Mirek

[Updated on: Thu, 18 April 2019 14:13]

Report message to a moderator

Re: U++ 2019.1.rc4 released [message #51589 is a reply to message #51588] Thu, 18 April 2019 14:29 Go to previous messageGo to next message
cbpporter is currently offline  cbpporter
Messages: 1351
Registered: September 2007
Senior Contributor
OK, let's go in order.

Before the dark mode support, setting dark mode in Windows didn't work. So clearly it is not a "simple" issue of applying a system theme, because most applications ignore that windows option.

So U++ creates this new dark theme.

So my questions are:
- how do you activate dark theme in any app once, and have it work forever? Even if Windows is in light mode. Same for light mode.
- how do you detect which mode it is. I want: if (isdarkmode) setdarkmode else setlightmode. That is a nice intuitive model.
- how do you do a few basic changes to it, like SColorPaper_Write(Color(51, 51, 51)) and force this change forever?
- how do you do the same for TheIDE, because things that work in normal apps need special extra work for TheIDE.

Quote:
Thats centralized model which is not extensible - that is the issue I wanted to avoid.

It looks like to me like you achieved the exact opposite, with Chameleon doing its own thing and being super hard to reliably and intuitively override. Is there anybody who ever had luck with doing anything in Chameleon except for me 10 years ago?

This invisible magic macro system is IMHO in no way superior to a non-extensible simple deign and the non-extensible bit is arguable. There is nothing non-extensible about it because you don't need to extend upon it. For years now people have been able to define incredibly diverse themes with a CSS and a bunch of pictures.

Case in point:
void Ctrl::SetSkin(void (*_skin)())

It is not clear what it does and there are 100 more ways to touch skins. I remember now, but my bazaar/Theme did not call this function and in consequence you couldn't reliably change the theme after program launch. So GUI elements and colors updated, some didn't. So I decided back then to set the them as the first thing in the program.
Re: U++ 2019.1.rc4 released [message #51590 is a reply to message #51589] Thu, 18 April 2019 14:54 Go to previous messageGo to previous message
mirek is currently offline  mirek
Messages: 11822
Registered: November 2005
Ultimate Member
cbpporter wrote on Thu, 18 April 2019 14:29
OK, let's go in order.

Before the dark mode support, setting dark mode in Windows didn't work. So clearly it is not a "simple" issue of applying a system theme, because most applications ignore that windows option.


Well, the real secret is that Windows does not really support dark theme for Win32 apps....

So what we do is to detect the fact that win10 is in dark theme, then roll out our own based on DarkTheme versions of system colors.

Quote:

So my questions are:
- how do you activate dark theme in any app once, and have it work forever? Even if Windows is in light mode. Same for light mode.


Do not call DarkThemeEnabled. It does something else.

Create dark theme skin. That must be a function that sets everything to your desired colors.

Use SetSkin.

Quote:

Case in point:
void Ctrl::SetSkin(void (*_skin)())

It is not clear what it does and there are 100 more ways to touch skins.


There are 100 ways to touch the skin, BUT you are supposed to do them in skin routine.

So basically it does what you would want from SetTheme(Theme *). But the advantage is that you inherit some default skin which you are changing and you can even call "subskin" routines there.

I agree that more docs and some cleanup would be nice, but the basic idea is IMO sound.

Mirek
Previous Topic: U++ 2019.1.rc1 released
Goto Forum:
  


Current Time: Fri Apr 19 00:29:23 CEST 2019

Total time taken to generate the page: 0.00792 seconds