Currently, the chat input elements (lineEdit, sendButton, and
chatLayout) are initialized when the QCefWidget gets set. This is
problematic behavior that only happened to work because we're a bit
lucky: The chat is only enabled after a widget is set, and it's only set
once. Without those conditions, the chat dock would crash when enabling
the chat before a widget is set, and the elements would get recreated if
the widget is set a second time, resulting in the original elements not
getting freed and leaking.
Moving the element creation to the constructor fixes both of these
problems, as now they're created immediately and only once.
Detected by PVS-Studio.
LineEditAutoResize didn't have its maxLength initialized in the
constructor, leaving it to be a random value until set via setMaxLength.
The one place where LineEditAutoResize was used immediately set this
after calling the constructor, but if we use this anywhere else in the
future it makes sense to have this initialized.
As it is meant to mostly behave like a QLineEdit, lets use the same
default value of 32767.
Detected by PVS-Studio.
Commit b11d61c89f added padding-right to
provide some minimal padding for this element. This was seemingly
accounted for in the Yami Base Theme (Yami.obt), but was missed in the
Yami Classic Variant Theme (Yami_Classic.ovt).
Re-add the padding-right to restore the padding.
c677bac875 changed the order here, but
this also resulted in the string having whatever size was necessary for
the install data path, rather than being large enough to fit a userdata
path. To fix this, move the resize operaetion *after* the buit-in
themes are searched, and also bump it to 1024 just to be sure.
This resulted in a crash due to a bug in os_get_path_internal() which
will need to be fixed separately.
Trying to build in Debug fails due a default lib conflict:
LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; use
/NODEFAULTLIB:library
Instead, we can set the updater to always use /MT instead of /MTd.
QMacStyle appears to have an issue where it messes up the positions of
some widgets. The previous workaround added extra spacing to force the
icon further to the right. Forcing the widget rectangle to be used
instead of the one made by the style also fixes this, arguably in a
nicer way.
See also b760b24ff0 which does this for
checkboxes in the source tree.