summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2010-06-04 00:34:18 (GMT)
committerQt Continuous Integration System <qt-info@nokia.com>2010-06-04 00:34:18 (GMT)
commitc3f891552693204e49db8e7d461c55aea804016e (patch)
tree77840815d9f6619f691c9d835de5b43c1c12b733 /src/gui
parent58c591974bf34577e27638f1328a04c4f7c698f8 (diff)
parent068177288001c46896d6b04c520731adb56ed288 (diff)
downloadQt-c3f891552693204e49db8e7d461c55aea804016e.zip
Qt-c3f891552693204e49db8e7d461c55aea804016e.tar.gz
Qt-c3f891552693204e49db8e7d461c55aea804016e.tar.bz2
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1 into 4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1: remove spurious empty lines in the linguist tools' output don't use qWarning() - or even qFatal()! - gratuitously. Styled item view backgrounds in Gtk+ Ensure that we only have one QLayoutStruct struct by renaming the other
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/styles/qgtkstyle.cpp56
-rw-r--r--src/gui/text/qtextdocumentlayout.cpp58
2 files changed, 70 insertions, 44 deletions
diff --git a/src/gui/styles/qgtkstyle.cpp b/src/gui/styles/qgtkstyle.cpp
index 5465c7b..b59a033 100644
--- a/src/gui/styles/qgtkstyle.cpp
+++ b/src/gui/styles/qgtkstyle.cpp
@@ -67,6 +67,7 @@
#include <QtGui/QRadioButton>
#include <QtGui/QCheckBox>
#include <QtGui/QTreeView>
+#include <QtGui/QStyledItemDelegate>
#include <qpixmapcache.h>
#undef signals // Collides with GTK stymbols
#include <private/qgtkpainter_p.h>
@@ -817,24 +818,49 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
option->state & State_Open ? openState : closedState , gtkTreeView->style);
}
break;
+
+ case PE_PanelItemViewRow:
+ // This primitive is only used to draw selection behind selected expander arrows.
+ // We try not to decorate the tree branch background unless you inherit from StyledItemDelegate
+ // The reason for this is that a lot of code that relies on custom item delegates will look odd having
+ // a gradient on the branch but a flat shaded color on the item itself.
+ QCommonStyle::drawPrimitive(element, option, painter, widget);
+ if (!option->state & State_Selected) {
+ break;
+ } else {
+ if (const QAbstractItemView *view = qobject_cast<const QAbstractItemView*>(widget)) {
+ if (!qobject_cast<QStyledItemDelegate*>(view->itemDelegate()))
+ break;
+ }
+ } // fall through
+
case PE_PanelItemViewItem:
if (const QStyleOptionViewItemV4 *vopt = qstyleoption_cast<const QStyleOptionViewItemV4 *>(option)) {
- if (vopt->state & State_Selected) {
- QLinearGradient gradient;
- gradient.setStart(option->rect.left(), option->rect.top());
- gradient.setFinalStop(option->rect.left(), option->rect.bottom());
- gradient.setColorAt(0, option->palette.highlight().color().lighter(105));
- gradient.setColorAt(0.5, option->palette.highlight().color().lighter(101));
- gradient.setColorAt(0.51, option->palette.highlight().color().darker(101));
- gradient.setColorAt(1, option->palette.highlight().color().darker(105));
- painter->fillRect(option->rect, gradient);
- } else {
- if (vopt->backgroundBrush.style() != Qt::NoBrush) {
- QPointF oldBO = painter->brushOrigin();
- painter->setBrushOrigin(vopt->rect.topLeft());
- painter->fillRect(vopt->rect, vopt->backgroundBrush);
- painter->setBrushOrigin(oldBO);
+ if (vopt->backgroundBrush.style() != Qt::NoBrush) {
+ QPointF oldBO = painter->brushOrigin();
+ painter->setBrushOrigin(vopt->rect.topLeft());
+ painter->fillRect(vopt->rect, vopt->backgroundBrush);
+ painter->setBrushOrigin(oldBO);
+ if (!(option->state & State_Selected))
+ break;
+ }
+ if (GtkWidget *gtkTreeView = d->gtkWidget("GtkTreeView")) {
+ const char *detail = "cell_even_ruled";
+ if (vopt && vopt->features & QStyleOptionViewItemV2::Alternate)
+ detail = "cell_odd_ruled";
+ bool isActive = option->state & State_Active;
+ QString key;
+ if (isActive ) {
+ // Required for active/non-active window appearance
+ key = QLS("a");
+ GTK_WIDGET_SET_FLAGS(gtkTreeView, GTK_HAS_FOCUS);
}
+ gtkPainter.paintFlatBox(gtkTreeView, detail, option->rect,
+ option->state & State_Selected ? GTK_STATE_SELECTED :
+ option->state & State_Enabled ? GTK_STATE_NORMAL : GTK_STATE_INSENSITIVE,
+ GTK_SHADOW_OUT, gtkTreeView->style, key);
+ if (isActive )
+ GTK_WIDGET_UNSET_FLAGS(gtkTreeView, GTK_HAS_FOCUS);
}
}
break;
diff --git a/src/gui/text/qtextdocumentlayout.cpp b/src/gui/text/qtextdocumentlayout.cpp
index f12bf0b..eeb66ce 100644
--- a/src/gui/text/qtextdocumentlayout.cpp
+++ b/src/gui/text/qtextdocumentlayout.cpp
@@ -79,7 +79,7 @@ Q_GUI_EXPORT extern int qt_defaultDpi();
// ################ should probably add frameFormatChange notification!
-struct QLayoutStruct;
+struct QTextLayoutStruct;
class QTextFrameData : public QTextFrameLayoutData
{
@@ -109,7 +109,7 @@ public:
QFixed minimumWidth;
QFixed maximumWidth;
- QLayoutStruct *currentLayoutStruct;
+ QTextLayoutStruct *currentLayoutStruct;
bool sizeDirty;
bool layoutDirty;
@@ -123,8 +123,8 @@ QTextFrameData::QTextFrameData()
{
}
-struct QLayoutStruct {
- QLayoutStruct() : maximumWidth(QFIXED_MAX), fullLayout(false)
+struct QTextLayoutStruct {
+ QTextLayoutStruct() : maximumWidth(QFIXED_MAX), fullLayout(false)
{}
QTextFrame *frame;
QFixed x_left;
@@ -477,9 +477,9 @@ public:
HitPoint hitTest(QTextTable *table, const QFixedPoint &point, int *position, QTextLayout **l, Qt::HitTestAccuracy accuracy) const;
HitPoint hitTest(QTextBlock bl, const QFixedPoint &point, int *position, QTextLayout **l, Qt::HitTestAccuracy accuracy) const;
- QLayoutStruct layoutCell(QTextTable *t, const QTextTableCell &cell, QFixed width,
- int layoutFrom, int layoutTo, QTextTableData *tableData, QFixed absoluteTableY,
- bool withPageBreaks);
+ QTextLayoutStruct layoutCell(QTextTable *t, const QTextTableCell &cell, QFixed width,
+ int layoutFrom, int layoutTo, QTextTableData *tableData, QFixed absoluteTableY,
+ bool withPageBreaks);
void setCellPosition(QTextTable *t, const QTextTableCell &cell, const QPointF &pos);
QRectF layoutTable(QTextTable *t, int layoutFrom, int layoutTo, QFixed parentY);
@@ -490,13 +490,13 @@ public:
QRectF layoutFrame(QTextFrame *f, int layoutFrom, int layoutTo, QFixed frameWidth, QFixed frameHeight, QFixed parentY = 0);
void layoutBlock(const QTextBlock &bl, int blockPosition, const QTextBlockFormat &blockFormat,
- QLayoutStruct *layoutStruct, int layoutFrom, int layoutTo, const QTextBlockFormat *previousBlockFormat);
- void layoutFlow(QTextFrame::Iterator it, QLayoutStruct *layoutStruct, int layoutFrom, int layoutTo, QFixed width = 0);
- void pageBreakInsideTable(QTextTable *table, QLayoutStruct *layoutStruct);
+ QTextLayoutStruct *layoutStruct, int layoutFrom, int layoutTo, const QTextBlockFormat *previousBlockFormat);
+ void layoutFlow(QTextFrame::Iterator it, QTextLayoutStruct *layoutStruct, int layoutFrom, int layoutTo, QFixed width = 0);
+ void pageBreakInsideTable(QTextTable *table, QTextLayoutStruct *layoutStruct);
- void floatMargins(const QFixed &y, const QLayoutStruct *layoutStruct, QFixed *left, QFixed *right) const;
- QFixed findY(QFixed yFrom, const QLayoutStruct *layoutStruct, QFixed requiredWidth) const;
+ void floatMargins(const QFixed &y, const QTextLayoutStruct *layoutStruct, QFixed *left, QFixed *right) const;
+ QFixed findY(QFixed yFrom, const QTextLayoutStruct *layoutStruct, QFixed requiredWidth) const;
QVector<QCheckPoint> checkPoints;
@@ -1487,12 +1487,12 @@ static QFixed firstChildPos(const QTextFrame *f)
return flowPosition(f->begin());
}
-QLayoutStruct QTextDocumentLayoutPrivate::layoutCell(QTextTable *t, const QTextTableCell &cell, QFixed width,
- int layoutFrom, int layoutTo, QTextTableData *td,
- QFixed absoluteTableY, bool withPageBreaks)
+QTextLayoutStruct QTextDocumentLayoutPrivate::layoutCell(QTextTable *t, const QTextTableCell &cell, QFixed width,
+ int layoutFrom, int layoutTo, QTextTableData *td,
+ QFixed absoluteTableY, bool withPageBreaks)
{
LDEBUG << "layoutCell";
- QLayoutStruct layoutStruct;
+ QTextLayoutStruct layoutStruct;
layoutStruct.frame = t;
layoutStruct.minimumWidth = 0;
layoutStruct.maximumWidth = QFIXED_MAX;
@@ -1641,9 +1641,9 @@ recalc_minmax_widths:
// to figure out the min and the max width lay out the cell at
// maximum width. otherwise the maxwidth calculation sometimes
// returns wrong values
- QLayoutStruct layoutStruct = layoutCell(table, cell, QFIXED_MAX, layoutFrom,
- layoutTo, td, absoluteTableY,
- /*withPageBreaks =*/false);
+ QTextLayoutStruct layoutStruct = layoutCell(table, cell, QFIXED_MAX, layoutFrom,
+ layoutTo, td, absoluteTableY,
+ /*withPageBreaks =*/false);
// distribute the minimum width over all columns the cell spans
QFixed widthToDistribute = layoutStruct.minimumWidth + widthPadding;
@@ -1868,10 +1868,10 @@ relayout:
++rowCellCount;
const QFixed width = td->cellWidth(c, cspan) - widthPadding;
- QLayoutStruct layoutStruct = layoutCell(table, cell, width,
- layoutFrom, layoutTo,
- td, absoluteTableY,
- /*withPageBreaks =*/true);
+ QTextLayoutStruct layoutStruct = layoutCell(table, cell, width,
+ layoutFrom, layoutTo,
+ td, absoluteTableY,
+ /*withPageBreaks =*/true);
const QFixed height = layoutStruct.y + bottomPadding + topPadding;
@@ -1976,7 +1976,7 @@ void QTextDocumentLayoutPrivate::positionFloat(QTextFrame *frame, QTextLine *cur
QTextFrameData *pd = data(parent);
Q_ASSERT(pd && pd->currentLayoutStruct);
- QLayoutStruct *layoutStruct = pd->currentLayoutStruct;
+ QTextLayoutStruct *layoutStruct = pd->currentLayoutStruct;
if (!pd->floats.contains(frame))
pd->floats.append(frame);
@@ -2116,7 +2116,7 @@ QRectF QTextDocumentLayoutPrivate::layoutFrame(QTextFrame *f, int layoutFrom, in
// function.
fd->contentsWidth = newContentsWidth;
- QLayoutStruct layoutStruct;
+ QTextLayoutStruct layoutStruct;
layoutStruct.frame = f;
layoutStruct.x_left = fd->leftMargin + fd->border + fd->padding;
layoutStruct.x_right = layoutStruct.x_left + newContentsWidth;
@@ -2179,7 +2179,7 @@ QRectF QTextDocumentLayoutPrivate::layoutFrame(QTextFrame *f, int layoutFrom, in
return layoutStruct.updateRect;
}
-void QTextDocumentLayoutPrivate::layoutFlow(QTextFrame::Iterator it, QLayoutStruct *layoutStruct,
+void QTextDocumentLayoutPrivate::layoutFlow(QTextFrame::Iterator it, QTextLayoutStruct *layoutStruct,
int layoutFrom, int layoutTo, QFixed width)
{
LDEBUG << "layoutFlow from=" << layoutFrom << "to=" << layoutTo;
@@ -2509,7 +2509,7 @@ void QTextDocumentLayoutPrivate::layoutFlow(QTextFrame::Iterator it, QLayoutStru
}
void QTextDocumentLayoutPrivate::layoutBlock(const QTextBlock &bl, int blockPosition, const QTextBlockFormat &blockFormat,
- QLayoutStruct *layoutStruct, int layoutFrom, int layoutTo, const QTextBlockFormat *previousBlockFormat)
+ QTextLayoutStruct *layoutStruct, int layoutFrom, int layoutTo, const QTextBlockFormat *previousBlockFormat)
{
Q_Q(QTextDocumentLayout);
@@ -2718,7 +2718,7 @@ void QTextDocumentLayoutPrivate::layoutBlock(const QTextBlock &bl, int blockPosi
}
}
-void QTextDocumentLayoutPrivate::floatMargins(const QFixed &y, const QLayoutStruct *layoutStruct,
+void QTextDocumentLayoutPrivate::floatMargins(const QFixed &y, const QTextLayoutStruct *layoutStruct,
QFixed *left, QFixed *right) const
{
// qDebug() << "floatMargins y=" << y;
@@ -2740,7 +2740,7 @@ void QTextDocumentLayoutPrivate::floatMargins(const QFixed &y, const QLayoutStru
// qDebug() << "floatMargins: left="<<*left<<"right="<<*right<<"y="<<y;
}
-QFixed QTextDocumentLayoutPrivate::findY(QFixed yFrom, const QLayoutStruct *layoutStruct, QFixed requiredWidth) const
+QFixed QTextDocumentLayoutPrivate::findY(QFixed yFrom, const QTextLayoutStruct *layoutStruct, QFixed requiredWidth) const
{
QFixed right, left;
requiredWidth = qMin(requiredWidth, layoutStruct->x_right - layoutStruct->x_left);