diff --git a/src/mumble/Log.cpp b/src/mumble/Log.cpp index 29dc8b04004..ed3475f4fb7 100644 --- a/src/mumble/Log.cpp +++ b/src/mumble/Log.cpp @@ -679,7 +679,9 @@ QString Log::validHtml(const QString &html, QTextCursor *tc) { } if (tc) { - tc->insertHtml(qtd.toHtml()); + QTextCursor tcNew(&qtd); + tcNew.movePosition(QTextCursor::End, QTextCursor::KeepAnchor); + tc->insertFragment(tcNew.selection()); return QString(); } else { return qtd.toHtml(); @@ -710,6 +712,11 @@ void Log::log(MsgType mt, const QString &console, const QString &terse, bool own // the setting might change in that time). const int msgMargin = Global::get().s.iChatMessageMargins; + QTextFrameFormat qttf; + qttf.setTopMargin(msgMargin); + qttf.setBottomMargin(0); + qttf.setPosition(QTextFrameFormat::FloatLeft); + LogTextBrowser *tlog = Global::get().mw->qteLog; const int oldscrollvalue = tlog->getLogScroll(); const bool scroll = (oldscrollvalue == tlog->getLogScrollMaximum()); @@ -728,13 +735,6 @@ void Log::log(MsgType mt, const QString &console, const QString &terse, bool own QString fixedNLPlain = plain.replace(QLatin1String("\r\n"), QLatin1String("\n")).replace(QLatin1String("\r"), QLatin1String("\n")); - QTextFrameFormat qttf; - // `insertFrame` causes a blank line to precede the inserted frame. - // This is remedied by setting a negative top margin of equal height. - static int lineSpacing = QFontMetrics(tc.currentFrame()->format().toCharFormat().font()).lineSpacing(); - qttf.setTopMargin(-lineSpacing); - qttf.setBottomMargin(msgMargin); - if (fixedNLPlain.contains(QRegExp(QLatin1String("\\n[ \\t]*$")))) { // If the message ends with one or more blank lines (or lines only containing whitespace) // paint a border around the message to make clear that it contains invisible parts. @@ -743,10 +743,11 @@ void Log::log(MsgType mt, const QString &console, const QString &terse, bool own qttf.setBorder(1); qttf.setPadding(2); qttf.setBorderStyle(QTextFrameFormat::BorderStyle_Dashed); + tc.insertFrame(qttf); + } else if (!tc.atStart()) { + tc.insertFrame(qttf); } - tc.insertFrame(qttf); - const QString timeString = dt.time().toString(QLatin1String(Global::get().s.bLog24HourClock ? "HH:mm:ss" : "hh:mm:ss AP")); tc.insertHtml(Log::msgColor(QString::fromLatin1("[%1] ").arg(timeString.toHtmlEscaped()), Log::Time)); diff --git a/src/mumble/UserView.cpp b/src/mumble/UserView.cpp index fb6d042f6e8..b67ba0c1604 100644 --- a/src/mumble/UserView.cpp +++ b/src/mumble/UserView.cpp @@ -111,9 +111,9 @@ UserView::UserView(QWidget *p) : QTreeView(p) { // Calculate the icon size for status icons based on font size // This should automaticially adjust size when the user has // display scaling enabled - m_flagTotalDimension = QFontMetrics(p->font()).height(); + m_flagTotalDimension = std::max(18, QFontMetrics(p->font()).height()); int flagIconPadding = 1; - int flagIconDimension = m_flagTotalDimension - (4 * flagIconPadding); + int flagIconDimension = m_flagTotalDimension - (2 * flagIconPadding); setItemDelegate(new UserDelegate(this, m_flagTotalDimension, flagIconPadding, flagIconDimension)); connect(this, SIGNAL(doubleClicked(const QModelIndex &)), this, SLOT(nodeActivated(const QModelIndex &)));