From cd31fd1a60d8e8e266f9b1b095128de5f549171a Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Thu, 16 Mar 2017 14:25:25 +0100 Subject: [PATCH] Make the debugger console theme aware Use the generic output panes colors rather than hand rolled ones. Also, remove the prompt icon and use the "next" icon instead, and remove the borders between console items. Change-Id: I219badbfbbde3aa01d7937ff505205cb9d725a43 Task-number: QTCREATORBUG-17532 Reviewed-by: hjk --- .../debugger/console/consoleitemdelegate.cpp | 75 ++++-------------- src/plugins/debugger/console/consoleview.cpp | 4 +- src/plugins/qmljstools/images/prompt.png | Bin 1049 -> 0 bytes src/plugins/qmljstools/qmljstools.qrc | 1 - 4 files changed, 16 insertions(+), 64 deletions(-) delete mode 100644 src/plugins/qmljstools/images/prompt.png diff --git a/src/plugins/debugger/console/consoleitemdelegate.cpp b/src/plugins/debugger/console/consoleitemdelegate.cpp index c2e2f1627d9..4fdb01b0362 100644 --- a/src/plugins/debugger/console/consoleitemdelegate.cpp +++ b/src/plugins/debugger/console/consoleitemdelegate.cpp @@ -29,6 +29,7 @@ #include #include +#include #include #include @@ -36,23 +37,6 @@ #include #include -const char CONSOLE_LOG_BACKGROUND_COLOR[] = "#E8EEF2"; -const char CONSOLE_WARNING_BACKGROUND_COLOR[] = "#F6F4EB"; -const char CONSOLE_ERROR_BACKGROUND_COLOR[] = "#F6EBE7"; -const char CONSOLE_EDITOR_BACKGROUND_COLOR[] = "#F7F7F7"; - -const char CONSOLE_LOG_BACKGROUND_SELECTED_COLOR[] = "#CDDEEA"; -const char CONSOLE_WARNING_BACKGROUND_SELECTED_COLOR[] = "#F3EED1"; -const char CONSOLE_ERROR_BACKGROUND_SELECTED_COLOR[] = "#F5D4CB"; -const char CONSOLE_EDITOR_BACKGROUND_SELECTED_COLOR[] = "#DEDEDE"; - -const char CONSOLE_LOG_TEXT_COLOR[] = "#333333"; -const char CONSOLE_WARNING_TEXT_COLOR[] = "#666666"; -const char CONSOLE_ERROR_TEXT_COLOR[] = "#1D5B93"; -const char CONSOLE_EDITOR_TEXT_COLOR[] = "#000000"; - -const char CONSOLE_BORDER_COLOR[] = "#C9C9C9"; - const int ELLIPSIS_GRADIENT_WIDTH = 16; namespace Debugger { @@ -72,7 +56,8 @@ ConsoleItemDelegate::ConsoleItemDelegate(ConsoleItemModel *model, QObject *paren m_errorIcon(Utils::Icons::CRITICAL.icon()), m_expandIcon(Utils::Icons::EXPAND.icon()), m_collapseIcon(Utils::Icons::COLLAPSE.icon()), - m_prompt(QLatin1String(":/qmljstools/images/prompt.png")), + m_prompt(Utils::Icon({{QLatin1String(":/utils/images/next.png"), + Utils::Theme::TextColorNormal}}, Utils::Icon::Tint).icon()), m_cachedHeight(0) { } @@ -86,39 +71,15 @@ QColor ConsoleItemDelegate::drawBackground(QPainter *painter, const QRect &rect, const QModelIndex &index, bool selected) const { + const Utils::Theme *theme = Utils::creatorTheme(); painter->save(); - ConsoleItem::ItemType itemType = (ConsoleItem::ItemType)index.data( - ConsoleItem::TypeRole).toInt(); - QColor backgroundColor; - switch (itemType) { - case ConsoleItem::DebugType: - backgroundColor = selected ? QColor(CONSOLE_LOG_BACKGROUND_SELECTED_COLOR) : - QColor(CONSOLE_LOG_BACKGROUND_COLOR); - break; - case ConsoleItem::WarningType: - backgroundColor = selected ? QColor(CONSOLE_WARNING_BACKGROUND_SELECTED_COLOR) : - QColor(CONSOLE_WARNING_BACKGROUND_COLOR); - break; - case ConsoleItem::ErrorType: - backgroundColor = selected ? QColor(CONSOLE_ERROR_BACKGROUND_SELECTED_COLOR) : - QColor(CONSOLE_ERROR_BACKGROUND_COLOR); - break; - case ConsoleItem::InputType: - default: - backgroundColor = selected ? QColor(CONSOLE_EDITOR_BACKGROUND_SELECTED_COLOR) : - QColor(CONSOLE_EDITOR_BACKGROUND_COLOR); - break; - } + QColor backgroundColor = theme->color(selected + ? Utils::Theme::BackgroundColorSelected + : Utils::Theme::BackgroundColorNormal); if (!(index.flags() & Qt::ItemIsEditable)) painter->setBrush(backgroundColor); painter->setPen(Qt::NoPen); painter->drawRect(rect); - - // Separator lines - painter->setPen(QColor(CONSOLE_BORDER_COLOR)); - if (!(index.flags() & Qt::ItemIsEditable)) - painter->drawLine(0, rect.bottom(), rect.right(), - rect.bottom()); painter->restore(); return backgroundColor; } @@ -126,6 +87,7 @@ QColor ConsoleItemDelegate::drawBackground(QPainter *painter, const QRect &rect, void ConsoleItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { + const Utils::Theme *theme = Utils::creatorTheme(); QStyleOptionViewItem opt = option; initStyleOption(&opt, index); painter->save(); @@ -137,23 +99,23 @@ void ConsoleItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &o ConsoleItem::TypeRole).toInt(); switch (type) { case ConsoleItem::DebugType: - textColor = QColor(CONSOLE_LOG_TEXT_COLOR); + textColor = theme->color(Utils::Theme::OutputPanes_NormalMessageTextColor); taskIcon = m_logIcon; break; case ConsoleItem::WarningType: - textColor = QColor(CONSOLE_WARNING_TEXT_COLOR); + textColor = theme->color(Utils::Theme::OutputPanes_WarningMessageTextColor); taskIcon = m_warningIcon; break; case ConsoleItem::ErrorType: - textColor = QColor(CONSOLE_ERROR_TEXT_COLOR); + textColor = theme->color(Utils::Theme::OutputPanes_ErrorMessageTextColor); taskIcon = m_errorIcon; break; case ConsoleItem::InputType: - textColor = QColor(CONSOLE_EDITOR_TEXT_COLOR); + textColor = theme->color(Utils::Theme::TextColorNormal); taskIcon = m_prompt; break; default: - textColor = QColor(CONSOLE_EDITOR_TEXT_COLOR); + textColor = theme->color(Utils::Theme::TextColorNormal); break; } @@ -307,18 +269,11 @@ QWidget *ConsoleItemDelegate::createEditor(QWidget *parent, { ConsoleEdit *editor = new ConsoleEdit(index, parent); - // Fiddle the prompt into the margin so that we don't have to put it into the text. - // Apparently you can have both background-image and background-color, which conveniently - // prevents the painted text from shining through. + // Make the background transparent so that the prompt shines through editor->setStyleSheet(QLatin1String("QTextEdit {" "margin-left: 24px;" "margin-top: 4px;" - "color: black;" - "background-color: white;" - "background-image: url(:/qmljstools/images/prompt.png);" - "background-position: baseline left;" - "background-origin: margin;" - "background-repeat: none;" + "background-color: transparent;" "}")); connect(editor, &ConsoleEdit::editingFinished, this, [this, editor] { auto delegate = const_cast(this); diff --git a/src/plugins/debugger/console/consoleview.cpp b/src/plugins/debugger/console/consoleview.cpp index db80e9cee6a..b3586ce6e56 100644 --- a/src/plugins/debugger/console/consoleview.cpp +++ b/src/plugins/debugger/console/consoleview.cpp @@ -97,9 +97,7 @@ ConsoleView::ConsoleView(ConsoleItemModel *model, QWidget *parent) : "QTreeView::branch:open:has-children:!has-siblings," "QTreeView::branch:open:has-children:has-siblings {" "border-image: none;" - "image: none; }" - "QTreeView {" - "background-color: white; }")); + "image: none; }")); QString baseName = QApplication::style()->objectName(); if (Utils::HostOsInfo::isAnyUnixHost() && !Utils::HostOsInfo::isMacHost() diff --git a/src/plugins/qmljstools/images/prompt.png b/src/plugins/qmljstools/images/prompt.png deleted file mode 100644 index a333a871986aa563fc8e394ab0193de61474ae50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1049 zcmeAS@N?(olHy`uVBq!ia0y~yVBiE{4mJh`h6fYb1Q-|?BuiW)N`mv#O3D+9QW+dm z@{>{(JaZG%Q-e|yQz{EjrrIztFlS_jM3hAM`dB6B=jtVb)aX^@7BGN-jeSKyVsdtB zi9%9pdS;%j()-=}l@u~lY?Z=IeGPmIoKrJ0J*tXQgRA^PlB=?lEmM^2?G$V(tSWK~ za#KqZ6)JLb@`|l0Y?Z*~TICg6frRyy6u?SKvTcwn`Gtf;oFf&vz zGto0NF|ahT)KM@pFf`CNG}1RP*EKY-GBvj{FjRm7B|8P1qLehNAQv~NT}3Hrwn`Z# zB?VUc`sL;2dgaD?`9ucp-l$oBHmzd*{pIn-onpfiKVyje< zTcDScnPO$>W^7_^Z0KlcU}RusVQ6S!;cVt+>f&l_WNBjTWb6tv1DjqaS93>G7c)x} z3paB^LsvsbQ$sT+OG9U4OJfs57e`~5UeCPZlEl2^RG7V)nJHFKy%u=&S~(Y`CYIzE zh2-bwz*0a!Mt(_taYlZDf^)E`o}q$oVsd64NCXr?;Lx{nNiE7OOHFYr%Fk5*hp<&9 z78elqIYe&?IiaR+r(mNGN*+kb1tt{a;s#=ZQ#L4-+bJNjPikI@tx}Pay`3m;&khC# z26s;v$B>F!Nq_$Tw`W#7&~nDm#NY@2ksqRrjLHJZ8Yzd8tlFGJT%YU5I0SZFR#|cA ve?aRE(MFm6H4LlYUl470tEM)Gfr*E~=$)wF(@g>0pv>y&>gTe~DWM4f4+}-e diff --git a/src/plugins/qmljstools/qmljstools.qrc b/src/plugins/qmljstools/qmljstools.qrc index 3c9877514d0..d663b7c095f 100644 --- a/src/plugins/qmljstools/qmljstools.qrc +++ b/src/plugins/qmljstools/qmljstools.qrc @@ -1,6 +1,5 @@ images/category_qml.png - images/prompt.png