added more flexible scrollbar in courtroom
This commit is contained in:
		
							parent
							
								
									ab321a4a7a
								
							
						
					
					
						commit
						effd224b44
					
				@ -6,6 +6,7 @@
 | 
			
		||||
#include "file_functions.h"
 | 
			
		||||
 | 
			
		||||
#include <QDebug>
 | 
			
		||||
#include <QScrollBar>
 | 
			
		||||
 | 
			
		||||
Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
 | 
			
		||||
{
 | 
			
		||||
@ -459,8 +460,30 @@ void Courtroom::handle_chatmessage(QStringList *p_contents)
 | 
			
		||||
{
 | 
			
		||||
  QString f_message = p_contents->at(2) + ": " + p_contents->at(4) + '\n';
 | 
			
		||||
 | 
			
		||||
  //ui_ic_chatlog->moveCursor(QTextCursor::Start);
 | 
			
		||||
  //ui_ic_chatlog->insertPlainText(f_message);
 | 
			
		||||
 | 
			
		||||
  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);
 | 
			
		||||
  ui_ic_chatlog->insertPlainText(f_message);
 | 
			
		||||
 | 
			
		||||
  ui_ic_chatlog->textCursor().insertText(f_message);
 | 
			
		||||
 | 
			
		||||
  if (old_cursor.hasSelection() || !is_scrolled_up)
 | 
			
		||||
  {
 | 
			
		||||
      // The user has selected text or scrolled away from the bottom: maintain position.
 | 
			
		||||
      ui_ic_chatlog->setTextCursor(old_cursor);
 | 
			
		||||
      ui_ic_chatlog->verticalScrollBar()->setValue(old_scrollbar_value);
 | 
			
		||||
  }
 | 
			
		||||
  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(verticalScrollBar()->minimum());
 | 
			
		||||
      ui_ic_chatlog->verticalScrollBar()->setValue(ui_ic_chatlog->verticalScrollBar()->minimum());
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  //T0D0: play objection gif->preanimation if there is any
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user