diff --git a/aoapplication.h b/aoapplication.h index 08f12c6..2aa7d16 100644 --- a/aoapplication.h +++ b/aoapplication.h @@ -138,6 +138,9 @@ public: //Returns true if discord is enabled in config.ini and false otherwise bool is_discord_enabled(); + //Returns true if reverse IC is enabled in config.ini and false otherwise + bool ic_scroll_down_enabled(); + //Returns the list of words in callwords.ini QStringList get_call_words(); diff --git a/base/config.ini b/base/config.ini index a71b259..1e8705f 100644 --- a/base/config.ini +++ b/base/config.ini @@ -1,3 +1,10 @@ -theme = default -discord = true -; master = master.aceattorneyonline.com \ No newline at end of file +theme = default +blip_rate = 1 +blank_blip = false +default_music = 50 +default_sfx = 50 +default_blip = 50 +discord = true +ic_scroll_down = false +; master = master.aceattorneyonline.com +; ooc_name = Phoenix \ No newline at end of file diff --git a/courtroom.cpp b/courtroom.cpp index 717a13c..76d6b03 100644 --- a/courtroom.cpp +++ b/courtroom.cpp @@ -1145,14 +1145,27 @@ void Courtroom::append_ic_text(QString p_text, QString p_name) normal.setFontWeight(QFont::Normal); const QTextCursor old_cursor = ui_ic_chatlog->textCursor(); const int old_scrollbar_value = ui_ic_chatlog->verticalScrollBar()->value(); - const bool is_scrolled_up = old_scrollbar_value == ui_ic_chatlog->verticalScrollBar()->minimum(); - - ui_ic_chatlog->moveCursor(QTextCursor::Start); + + QTextCursor::MoveOperation move_op; + int scrollbar_limit; + + if(ao_app->ic_scroll_down_enabled()) { + scrollbar_limit = ui_ic_chatlog->verticalScrollBar()->maximum(); + move_op = QTextCursor::End; + } + else { + scrollbar_limit = ui_ic_chatlog->verticalScrollBar()->minimum(); + move_op = QTextCursor::Start; + } + + const bool is_fully_scrolled = old_scrollbar_value == scrollbar_limit; + + ui_ic_chatlog->moveCursor(move_op); ui_ic_chatlog->textCursor().insertText(p_name, bold); ui_ic_chatlog->textCursor().insertText(p_text + '\n', normal); - - if (old_cursor.hasSelection() || !is_scrolled_up) + + if (old_cursor.hasSelection() || !is_fully_scrolled) { // The user has selected text or scrolled away from the top: maintain position. ui_ic_chatlog->setTextCursor(old_cursor); @@ -1161,8 +1174,8 @@ void Courtroom::append_ic_text(QString p_text, QString p_name) else { // The user hasn't selected any text and the scrollbar is at the top: scroll to the top. - ui_ic_chatlog->moveCursor(QTextCursor::Start); - ui_ic_chatlog->verticalScrollBar()->setValue(ui_ic_chatlog->verticalScrollBar()->minimum()); + ui_ic_chatlog->moveCursor(move_op); + ui_ic_chatlog->verticalScrollBar()->setValue(scrollbar_limit); } } diff --git a/text_file_functions.cpp b/text_file_functions.cpp index b77e178..1aebc35 100644 --- a/text_file_functions.cpp +++ b/text_file_functions.cpp @@ -581,3 +581,9 @@ bool AOApplication::is_discord_enabled() QString f_result = read_config("discord"); return !f_result.startsWith("false"); } + +bool AOApplication::ic_scroll_down_enabled() +{ + QString f_result = read_config("ic_scroll_down"); + return f_result.startsWith("true"); +} \ No newline at end of file