Beta v7.78.7266 changes:
1.Item 10, fixed
https://forums.mirc.com/ubbthreads.php/topics/273076 Also fixed the issue with the flickering group box when resizing
the dialog which has been around for a long time.
2.Item 18, updated.
3.Item 10, fixed
https://forums.mirc.com/ubbthreads.php/topics/2730774.Item 19, fixed.
Beta v7.78.7125 changes:
1.Item 10, fixed
https://forums.mirc.com/ubbthreads.php/topics/273053 I have implemented support for this in three different ways. The
first beta used WH_CALLWNDPROC which results in a serious slow-down
on Windows 10/11. The second method, using WH_CBT, works well
without any slowdown. For the third method, no hooks are used and
all windows/dialogs need to call the dark mode function directly.
This is probably the fastest method but the least flexible. This
beta uses the WH_CBT method.
2.Item 10, added $darkmode identifier.
3.Fixed
https://forums.mirc.com/ubbthreads.php/topics/273054 This crash was due to having a DCC Send/Get window maximized when
closing the window. The issue was not related to dark mode code
but another change relating to how windows are closed.
4.Item 10, fixed DCC Send/Get window buttons not being themed
correctly.
5.Various other minor tweaks/fixes.
Beta v7.78.6786 changes:
1.Item 1, fixed.
2.Item 2, fixed.
3.Item 3, added. Supports animated images and returns $pic().frames
and .delay. Also suported by /drawsave -vw and /drawpic.
4.Item 4,
https://forums.mirc.com/ubbthreads.php/topics/2729365.Item 5, added.
6.Item 6, changed.
Re-arranged sections of the resource file to make CrowdIn import
and export formats more manageable.
7.Item 7, fixed
https://forums.mirc.com/ubbthreads.php/topics/272966 The channels list window and the add channel dialog now use
the same code to parse the [+modes] parameter.
8.Item 8, fixed
https://forums.mirc.com/ubbthreads.php/topics/2729739.Item 9, fixed
https://forums.mirc.com/ubbthreads.php/topics/27297310.Item 10, added. Experimental.
Windows 10/11 have minimal support for dark mode for Win32 applications
and where there is support, it is generally incomplete and undocumented.
This feature required a huge amount of experimentation and tweaking.
Comments/observations/notes:
1) I have looked into dark mode support on and off over the last few
years and always came away unconvinced and unwilling to add support
for it because it looked like a mess. Last month, I looked into it
again, and it was still a mess. But I found more discussions and code
examples by other developers, including Notepad++'s dark mode
implementation, so I decided to tinker with it again. This tinkering
snowballed into full support.
2) Dark mode is only supported on the latest, updated versions of
Windows 10 and 11.
3) When Windows is in dark mode, many applications, eg. Explorer,
flash a blinding white when they first open before going dark. I
have tried to implement dark mode support in mIRC in a way that
prevents white flashes. However, there are some places where mIRC has
no control over this, eg. if you click on the Recieved Files menu
item, it will open up an Explorer window - this will flash white
initially since Explorer is a Windows system application. The same
applies to popup menus and other controls. The reason for this is
that Windows uses a default white background color for windows and
controls.
4) Custom coding/drawing was needed for many controls in dark mode. I
usually avoid implementing custom controls as it is better for users to
use standard, native controls. However, there was no way of creating a
consistent GUI in dark mode without this. In the case of controls such
as checkboxes, radio buttons, group boxes, etc. I had to implement my own
versions for dark mode. Some dialogs needed to be redesigned, eg. the
Font dialog, which is a standard Windows system dialog, displayed white
controls even when set into dark mode. The borders of various controls
had to be custom drawn. And so on.
5) There were so many little issues that required far too much time to
resolve, eg. if you open the file dialog in Notepad++ and then change
Windows dark/light mode, a white box will appear around the filename
combobox editbox in dark mode. I found a way to resolve this in mIRC
but it is just one of many dark/light mode anomolies.
6) Windows 10/11 add white scroll buttons to the top and bottom of long
popup menus. In Windows dark mode, all menu parts become dark... except
for these white scroll buttons. I implemented a hack to fix this,
but, as with a lot of the dark mode code, it feels brittle and wrong.
7) mIRC will set all dialogs that it creates to dark mode. This
includes scripted custom dialogs. I am aware that some users use DLLs
that add custom controls. It is unlikely that I can add dark mode
and/or custom drawing for controls that mIRC itself does not normally
use.
8) All black/white icons/cursors/images had to be updated to use
reverse colors for dark mode. Changes to icons/cursors/bitmaps
were made where necessary. All colored icons have been left as they
are. All GUI elements had their colors tweaked for dark mode, eg.
switchbar, treebar, tool tips, tray tips, etc.
9) In dark mode, mIRC's switchbar/toolbar/etc. will use dark, shaded
buttons. On Windows 11, these are rounded, as are checkboxes, group
boxes, etc.
10) The dark mode colors mIRC uses for dialogs and controls are based
on those that Windows 10/11 use when in dark mode. I initially started
with some standard dark mode colors and gradually modified them as
the implementation progressed to get some consistency.
11) The default Monochrome color scheme in mIRC had an incorrect
default light color for the MDI background. mIRC now fixes this
automatically and updates mirc.ini so that it uses a dark color.
12) mIRC will remember the color scheme you are using when in Windows
dark/light mode and will switch to it automatically. I had originally
intended to add a new dark mode scheme to the Colors dialog but the
Monochrome scheme already suits this purpose, so it is used as the
default dark mode scheme.
13) mIRC will always follow the current Windows dark/light setting. At
one point, I added an independent dark/light setting for mIRC. This
worked well except when interacting with system dialogs, which base
the colors of their controls on a combination of the Windows dark/light
mode and the calling application dark/light mode. This results in
a dialog that uses a mix of dark/light controls, which I could not
get around.
14) When mIRC is in full screen mode, Windows draws the menubar in white.
This is an MDI-legacy issue and there is no way around it. I decided to
change how full screen mode works so that it always shows a titlebar.
A titlebar makes Windows display menus in the correct dark/light color,
allows you to see which window you are using, eg. status, channel,
chat, etc., and gives you access to right-click popups on the titlebar,
while still being in full screen mode.
I have tested this feature as much as I can but it involved so much
work and code, for so many interface elements and features, that it
really needs a good amount of testing. Please let me know if you spot
any issues.
11.Item 11, fixed
https://forums.mirc.com/ubbthreads.php/topics/27298412.Item 12, fixed
https://forums.mirc.com/ubbthreads.php/topics/27298513.Item 13, fixed.
14.Item 14, fixed.
15.Item 15, changed.
16.Item 16, changed. When I originally added the scroll buttons to the
vertical switchbar, I chose to not use a full scrollbar as I thought
it would be intrusive. The scroll buttons just serve as indicators
that there are more windows and you can then scroll with the mouse
wheel. But it still felt wrong to not use a standard vertical
scrollbar. I recently experimented with adding a full standard
vertical scrollbar and, and as I thought, it didn't feel right. So
I have improved the scroll buttons a little by not allowing them to
disappear when you are at the top/bottom, which always felt a little
too wrong. They now remain visible but appear disabled if you can't
scroll up/down.
17.Item 17, updated.
18.Changed the way the ball bounces in the About dialog to make it more
realistic. I'd say this change alone is worth the upgrade.
Changes:
1.Fixed buttons with icons not displaying with the correct Windows
theme in some contexts.
2.Fixed control codes being stripped out of displayed lines in
some events when the logging strip codes option is enabled.
3.Added support for loading WebP image files using the Libwebp
v1.5.0 library.
4.Updated channel central to display year for ban list entries.
Also extended $ibl().date to include the year.
5.Added Line shading option to Display/Options dialog that shades
alternate lines. Also added a system menu Shading option for
per-window settings.
6.Updated various resources strings to improve support for
translations.
7.Fixed add channel dialog including mode from channel list
item in the channel description.
8.Fixed conversion of [dirs]/getdir into [extensions].
9.Fixed status window system menu not having a default logging
menu item that matches the setting in the Logging dialog.
10.Added support for dark mode on Windows 10/11.
11.Fixed empty perform list entry bug that was causing a crash
when the options dialog was opened.
12.Fixed while loop bug caused by a previous change.
13.Fixed channel central key editbox not hiding the text when
you open the dialog and you do not have ops.
14.Fixed Options/DCC dialog radio buttons not working correctly.
15.Changed /loadbuf so that if an attempt is made to load a file
that is too large for memory, the allocated memory will be
freed to prevent a crash and /loadbuf will report an error.
16.Changed Switchbar scroll buttons so that they are now visible
and/or disabled when necessary.
17.Updated CA root certificates cacert.pem file.
18.Updated LunaSVG library to v3.1.0.
19.Fixed tooltips issue that caused tooltips to flicker on/off
when the mouse was moved over a button.