-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Labels
Description
I'm using mIRC 7.75 and dcxdll-3.1-git978 on Windows 11 Pro (22H2, OS Build 22621.2861 with Experience Pack 1000.22681.1000.0)
As I alluded to at the end of #77, following the update from 469 to 952/978(both were affected), I encountered a performance issue with larger CLA/DCXML structures.
Whenever I open up the interface I made, there's a long period of what appears to be sizing/margin/padding adjustments visually taking place before the interface eventually settles and can be interacted with. Below is a gif example:
Below is the test case I used to create the interface:
DCXML
<dcxml>
<!-- margin order: -->
<!-- LEFT TOP RIGHT BOTTOM -->
<dialogs>
<dialog name="interface" caption="Interface" w="1010" h="200" margin="0 0 0 0">
<control type="tab" id="id1" styles="hot gradient">
<control type="panel" caption="Tab 1" cascade="v">
<pane cascade="h">
<control type="panel" cascade="v" weight="4">
<control type="text" caption="�Title 1�" height="16" />
<control type="list" id="id2" styles="vsbar" margin="0 0 5 5" />
<control type="panel" height="60">
<pane cascade="h">
<control type="edit" id="id3" styles="tooltips group tabstop" />
<control type="edit" id="id4" styles="tooltips tabstop" />
</pane>
<pane cascade="h">
<control type="edit" id="id5" weight="7" styles="tooltips tabstop" />
<control type="button" id="id6" caption="Btn" weight="3" />
</pane>
<control type="button" id="id7" caption="Button" height="20" />
</control>
</control>
<control type="panel" cascade="v" weight="3">
<control type="text" caption="�Title 2�" height="16" />
<control type="list" id="id8" styles="vsbar" weight="5" margin="0 0 5 5" />
<control type="panel" height="40">
<pane cascade="h">
<control type="edit" id="id8" weight="7" styles="tabstop autohs" />
<control type="button" id="id9" caption="Btn" weight="3" />
</pane>
<control type="button" id="id10" caption="Button" height="20" />
</control>
</control>
<control type="panel" cascade="v" weight="5">
<control type="text" caption="�Title 3�" height="16" />
<control type="panel" cascade="h">
<control type="panel" cascade="v" margin="0 0 5 0">
<control type="list" id="id11" styles="vsbar" weight="10" />
<control type="button" id="id12" eval="1" caption="Button -- $+ $chr(62)" height="20" />
<control type="text" caption="Text" styles="center" />
</control>
<control type="panel" cascade="v">
<control type="list" id="id13" styles="vsbar" weight="10" />
<control type="button" id="id14" eval="1" caption="$chr(60) $+ -- Btn" height="20" />
<control type="text" caption="Text" styles="center" />
</control>
</control>
</control>
<control type="panel" cascade="v" weight="4">
<control type="panel" cascade="h">
<control type="panel" cascade="v">
<control type="panel" cascade="v">
<control type="text" caption="�Title 4�" height="16" />
<control type="panel" cascade="v">
<control type="radio" id="id15" caption="Radio" height="20" />
<control type="radio" id="id16" caption="Radio 2" height="20" />
<control type="radio" id="id17" caption="Radio 3" height="20" />
<control type="radio" id="id18" caption="Radio 4" height="20" />
</control>
</control>
<control type="panel" cascade="v">
<control type="text" caption="�Title 5�" height="16" margin="0 5 5 5" />
<control type="button" id="id19" caption="Load" height="20" />
<control type="button" id="id20" caption="Unload" height="20" />
</control>
</control>
<control type="panel" cascade="v" margin="0 0 5 0">
<control type="text" caption="�Title 6�" height="16" />
<control type="panel" cascade="v">
<control type="text" caption="Title 7" height="16" />
<control type="panel" height="40" cascade="v">
<control type="radio" id="id21" eval="1" caption="$chr(9854)" styles="group" />
<control type="panel" cascade="h">
<control type="radio" id="id22" width="20" />
<control type="edit" id="id23" width="50" />
</control>
</control>
</control>
<control type="panel" cascade="v">
<control type="text" caption="Title 8" height="16" />
<control type="panel" height="40" cascade="v">
<control type="radio" id="id24" eval="1" caption="$chr(9854)" />
<pane cascade="h">
<control type="radio" id="id25" width="20" />
<control type="edit" id="id26" width="50" />
</pane>
</control>
</control>
</control>
</control>
</control>
<control type="panel" cascade="v" weight="3">
<control type="text" caption="�Title 9�" height="16" />
<control type="panel" cascade="h">
<control type="panel" cascade="v" margin="0 0 5 0">
<control type="text" caption="Caption" styles="center" height="16" />
<control type="list" id="id27" styles="hsbar" />
<control type="text" caption="Caption" styles="center" height="16" />
<control type="list" id="id28" styles="hsbar" />
</control>
</control>
</control>
<control type="panel" cascade="v" weight="2">
<control type="text" caption="�Title 10�" height="16" />
<control type="panel" height="27" cascade="h">
<control type="radio" id="id29" caption="Caption" />
<control type="radio" id="id30" caption="Caption" />
</control>
<control type="text" caption="�Title 11�" height="16" />
<control type="check" id="id31" caption="Title 12" tooltip="(tooltip content)" styles="tooltips" height="20" />
</control>
</pane>
</control>
</control>
</dialog>
</dialogs>
</dcxml>mSL test case
dialog MainInterface {
title "Interface"
size 213 710 510 110
option dbu
}
alias interfaceopen {
clear
if ($dialog(intf1) == $null) {
dialog -m intf1 MainInterface
}
else {
dialog -x intf1
dialog -m intf1 MainInterface
}
}
on *:DIALOG:intf1:init:0:{
var %verbose = v
dcx Mark $dname interface.events
xdialog -b $dname +tz
xdialog -T $dname +sp
;dcxml -d [DNAME] [Name of dialog element you wish to load] [path to dcxml file]
dcxml -d $+ %verbose $dname interface $qt($mircdirscripts\interface.xml)
.timer -d 1 0 xdialog -l $dname update
.timer -d 1 0 xdialog -j $dname
.timer -dm 1 500 xdock -m $dialog($dname).hwnd +b
.timer -dm 1 500 xdock -r $dialog($dname).hwnd + 0 %h
}
alias interface.events {
; Nothing to do here
}
