[Pkg-owncloud-commits] [owncloud-client] 106/171: Fix the folder option button click
Sandro Knauß
hefee-guest at moszumanska.debian.org
Wed Feb 17 09:36:56 UTC 2016
This is an automated email from the git hooks/post-receive script.
hefee-guest pushed a commit to annotated tag upstream/2.1.1+dfsg
in repository owncloud-client.
commit 31da3e98c91facc27bf240b52d2fd26883df6a27
Author: Jocelyn Turcotte <jturcotte at woboq.com>
Date: Wed Jan 13 11:42:49 2016 +0100
Fix the folder option button click
The height adjustment done to place the button in the middle of the
non-error area was only done for rendering. Make sure that we do the
same adjustment when mapping click events as well.
Also replace some wrong occurences of aliasMargin*2 for margin.
---
src/gui/folderstatusdelegate.cpp | 57 ++++++++++++++++++++++++----------------
src/gui/folderstatusdelegate.h | 3 ++-
2 files changed, 37 insertions(+), 23 deletions(-)
diff --git a/src/gui/folderstatusdelegate.cpp b/src/gui/folderstatusdelegate.cpp
index 28e6b60..45fec4a 100644
--- a/src/gui/folderstatusdelegate.cpp
+++ b/src/gui/folderstatusdelegate.cpp
@@ -26,6 +26,14 @@
#include <QPainter>
#include <QApplication>
+inline static QFont makeAliasFont(const QFont &normalFont)
+{
+ QFont aliasFont = normalFont;
+ aliasFont.setBold(true);
+ aliasFont.setPointSize(normalFont.pointSize()+2);
+ return aliasFont;
+}
+
namespace OCC {
FolderStatusDelegate::FolderStatusDelegate() : QStyledItemDelegate() {
@@ -41,14 +49,12 @@ QString FolderStatusDelegate::addFolderText()
QSize FolderStatusDelegate::sizeHint(const QStyleOptionViewItem & option ,
const QModelIndex & index) const
{
- QFont aliasFont = option.font;
+ QFont aliasFont = makeAliasFont(option.font);
QFont font = option.font;
- aliasFont.setPointSize( font.pointSize() +2 );
QFontMetrics fm(font);
QFontMetrics aliasFm(aliasFont);
- int aliasMargin = aliasFm.height()/2;
int margin = fm.height()/4;
auto classif = static_cast<const FolderStatusModel *>(index.model())->classify(index);
@@ -60,7 +66,7 @@ QSize FolderStatusDelegate::sizeHint(const QStyleOptionViewItem & option ,
return QApplication::style()->sizeFromContents(
QStyle::CT_PushButton, &opt, fm.size(Qt::TextSingleLine, opt.text)).
expandedTo(QApplication::globalStrut())
- + QSize(0, 2*aliasMargin);
+ + QSize(0, margin);
}
if (classif != FolderStatusModel::RootFolder) {
@@ -68,6 +74,21 @@ QSize FolderStatusDelegate::sizeHint(const QStyleOptionViewItem & option ,
}
// calc height
+ int h = rootFolderHeightWithoutErrors(fm, aliasFm);
+
+ // add some space to show an error condition.
+ if( ! qvariant_cast<QStringList>(index.data(FolderErrorMsg)).isEmpty() ) {
+ QStringList errMsgs = qvariant_cast<QStringList>(index.data(FolderErrorMsg));
+ h += margin + errMsgs.count()*fm.height();
+ }
+
+ return QSize( 0, h);
+}
+
+int FolderStatusDelegate::rootFolderHeightWithoutErrors(const QFontMetrics &fm, const QFontMetrics &aliasFm)
+{
+ const int aliasMargin = aliasFm.height()/2;
+ const int margin = fm.height()/4;
int h = aliasMargin; // margin to top
h += aliasFm.height(); // alias
@@ -76,14 +97,7 @@ QSize FolderStatusDelegate::sizeHint(const QStyleOptionViewItem & option ,
h += margin; // between local and remote path
h += fm.height(); // remote path
h += aliasMargin; // bottom margin
-
- // add some space to show an error condition.
- if( ! qvariant_cast<QStringList>(index.data(FolderErrorMsg)).isEmpty() ) {
- QStringList errMsgs = qvariant_cast<QStringList>(index.data(FolderErrorMsg));
- h += aliasMargin*2 + errMsgs.count()*fm.height();
- }
-
- return QSize( 0, h);
+ return h;
}
void FolderStatusDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
@@ -93,15 +107,12 @@ void FolderStatusDelegate::paint(QPainter *painter, const QStyleOptionViewItem &
auto textAlign = Qt::AlignLeft;
- QFont aliasFont = option.font;
+ QFont aliasFont = makeAliasFont(option.font);
QFont subFont = option.font;
QFont errorFont = subFont;
QFont progressFont = subFont;
progressFont.setPointSize( subFont.pointSize()-2);
- //font.setPixelSize(font.weight()+);
- aliasFont.setBold(true);
- aliasFont.setPointSize( subFont.pointSize()+2 );
QFontMetrics subFm( subFont );
QFontMetrics aliasFm( aliasFont );
@@ -332,9 +343,6 @@ void FolderStatusDelegate::paint(QPainter *painter, const QStyleOptionViewItem &
painter->restore();
{
- QRect rectWithoutErrors = option.rect;
- rectWithoutErrors.setTop(iconRect.top());
- rectWithoutErrors.setBottom(iconRect.bottom());
QStyleOptionToolButton btnOpt;
//btnOpt.text = QLatin1String("...");
btnOpt.state = option.state;
@@ -342,7 +350,7 @@ void FolderStatusDelegate::paint(QPainter *painter, const QStyleOptionViewItem &
btnOpt.state |= QStyle::State_Raised;
btnOpt.arrowType = Qt::NoArrow;
btnOpt.subControls = QStyle::SC_ToolButton;
- btnOpt.rect = optionsButtonRect(rectWithoutErrors, btnOpt.direction);
+ btnOpt.rect = optionsButtonRect(option.rect, btnOpt.direction);
btnOpt.icon = m_moreIcon;
btnOpt.iconSize = btnOpt.rect.size();
QApplication::style()->drawComplexControl( QStyle::CC_ToolButton, &btnOpt, painter );
@@ -355,11 +363,16 @@ bool FolderStatusDelegate::editorEvent ( QEvent * event, QAbstractItemModel * mo
return QStyledItemDelegate::editorEvent(event, model, option, index);
}
-QRect FolderStatusDelegate::optionsButtonRect(const QRect &within, Qt::LayoutDirection direction)
+QRect FolderStatusDelegate::optionsButtonRect(QRect within, Qt::LayoutDirection direction)
{
+ QFont font = QFont();
+ QFont aliasFont = makeAliasFont(font);
+ QFontMetrics fm(font);
+ QFontMetrics aliasFm(aliasFont);
+ within.setHeight(FolderStatusDelegate::rootFolderHeightWithoutErrors(fm, aliasFm));
+
QStyleOptionToolButton opt;
opt.text = QLatin1String("...");
- QFontMetrics fm = QFontMetrics(QFont());
QSize textSize = fm.size(Qt::TextShowMnemonic, opt.text);
opt.rect.setSize(textSize);
QSize size = QApplication::style()->sizeFromContents(QStyle::CT_ToolButton, &opt, textSize).
diff --git a/src/gui/folderstatusdelegate.h b/src/gui/folderstatusdelegate.h
index 4f0c05d..85dab6e 100644
--- a/src/gui/folderstatusdelegate.h
+++ b/src/gui/folderstatusdelegate.h
@@ -55,7 +55,8 @@ public:
/**
* return the position of the option button within the item
*/
- static QRect optionsButtonRect(const QRect& within, Qt::LayoutDirection direction);
+ static QRect optionsButtonRect(QRect within, Qt::LayoutDirection direction);
+ static int rootFolderHeightWithoutErrors(const QFontMetrics &fm, const QFontMetrics &aliasFm);
private:
static QString addFolderText();
};
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud-client.git
More information about the Pkg-owncloud-commits
mailing list