Fix not using custom chatbox's colors (#228)

* Fix not using custom chatbox's colors

Moved set_text_color_dropdown() to after current_char is actually updated
with the selected char. Otherwise set_text_color_dropdown will try to
update the colors with either nothing as character, or with the previously
selected character.

Use get_chat() so it actually gets the name of the custom chatbox
instead of using the same name as the character.
Remove the extra "c" since get_chat_color it's already called
with this "c" in place.

* Fix previous fix crashing the client on DRO servers

For some reason the client would work just fine
if set_text_color_dropdown() was called only once
after updating the character selected by the user.
But when joining a DRO server the client would crash
just before loading the music.

* Improve comment with where crash happens

* Fix get_chat_markdown to get the custom chatbox on misc of the char

instead of trying to find the character folder on misc

* Fix client using the current character colors on other people's messages

Also remove the comment explaining the crash if set_text_color_dropdown
is removed from set_widgets

* Fix loading custom colors loading after the message was added to the log
This commit is contained in:
windrammer 2020-08-05 08:18:08 -06:00 committed by GitHub
parent 630518020a
commit 0ce60d66a7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 5 deletions

View File

@ -1238,6 +1238,8 @@ void Courtroom::update_character(int p_cid)
current_char = f_char;
current_side = ao_app->get_char_side(current_char);
set_text_color_dropdown();
current_emote_page = 0;
current_emote = 0;
@ -1879,11 +1881,19 @@ void Courtroom::handle_chatmessage(QStringList *p_contents)
ic_chatlog_history.removeFirst();
}
append_ic_text(m_chatmessage[MESSAGE], f_showname, "", m_chatmessage[TEXT_COLOR].toInt());
QString f_char = m_chatmessage[CHAR_NAME];
QString f_custom_theme = ao_app->get_char_shouts(f_char);
// Load the colors in case it's using a custom chatbox with custom colors.
// Or reload the default ones in case it's not using custom colors
color_rgb_list.clear();
for (int c = 0; c < max_colors; ++c) {
QColor color = ao_app->get_chat_color("c" + QString::number(c), f_char);
color_rgb_list.append(color);
}
append_ic_text(m_chatmessage[MESSAGE], f_showname, "", m_chatmessage[TEXT_COLOR].toInt());
// if an objection is used
if (objection_mod <= 4 && objection_mod >= 1) {
switch (objection_mod) {

View File

@ -435,7 +435,7 @@ QString AOApplication::get_tagged_stylesheet(QString target_tag, QString p_file)
QString AOApplication::get_chat_markdown(QString p_identifier, QString p_chat)
{
QString design_ini_path = get_base_path() + "misc/" + p_chat + "/config.ini";
QString design_ini_path = get_base_path() + "misc/" + get_chat(p_chat) + "/config.ini";
QString default_path = get_base_path() + "misc/default/config.ini";
QString f_result = read_design_ini(p_identifier, design_ini_path);
@ -449,9 +449,9 @@ QColor AOApplication::get_chat_color(QString p_identifier, QString p_chat)
{
QColor return_color(255, 255, 255);
QString design_ini_path = get_base_path() + "misc/" + p_chat + "/config.ini";
QString design_ini_path = get_base_path() + "misc/" + get_chat(p_chat) + "/config.ini";
QString default_path = get_base_path() + "misc/default/config.ini";
QString f_result = read_design_ini("c" + p_identifier, design_ini_path);
QString f_result = read_design_ini(p_identifier, design_ini_path);
if (f_result == "") {
f_result = read_design_ini(p_identifier, default_path);