summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gui/dialogs/qfontdialog.cpp2
-rw-r--r--src/gui/kernel/qcocoasharedwindowmethods_mac_p.h8
-rw-r--r--src/gui/text/qtextlayout.cpp19
3 files changed, 20 insertions, 9 deletions
diff --git a/src/gui/dialogs/qfontdialog.cpp b/src/gui/dialogs/qfontdialog.cpp
index 6a646ff..34b6317 100644
--- a/src/gui/dialogs/qfontdialog.cpp
+++ b/src/gui/dialogs/qfontdialog.cpp
@@ -160,7 +160,7 @@ QFontDialog::QFontDialog(QWidget *parent)
\since 4.5
Constructs a standard font dialog with the given \a parent and specified
- \a initial color.
+ \a initial font.
*/
QFontDialog::QFontDialog(const QFont &initial, QWidget *parent)
: QDialog(*new QFontDialogPrivate, parent, DefaultWindowFlags)
diff --git a/src/gui/kernel/qcocoasharedwindowmethods_mac_p.h b/src/gui/kernel/qcocoasharedwindowmethods_mac_p.h
index 3e8ce4e..a2eb484 100644
--- a/src/gui/kernel/qcocoasharedwindowmethods_mac_p.h
+++ b/src/gui/kernel/qcocoasharedwindowmethods_mac_p.h
@@ -327,7 +327,7 @@ QT_END_NAMESPACE
QWidget *target = [self dragTargetHitTest:sender];
if (!target)
- return [super draggingEntered:sender];
+ return NSDragOperationNone;
if (target->testAttribute(Qt::WA_DropSiteRegistered) == false)
return NSDragOperationNone;
@@ -339,7 +339,7 @@ QT_END_NAMESPACE
{
QWidget *target = [self dragTargetHitTest:sender];
if (!target)
- return [super draggingUpdated:sender];
+ return NSDragOperationNone;
if (target == *currentDragTarget()) {
// The drag continues to move over the widget that we have sendt
@@ -363,7 +363,7 @@ QT_END_NAMESPACE
{
QWidget *target = [self dragTargetHitTest:sender];
if (!target)
- return [super draggingExited:sender];
+ return;
if (*currentDragTarget()) {
[reinterpret_cast<NSView *>((*currentDragTarget())->winId()) draggingExited:sender];
@@ -375,7 +375,7 @@ QT_END_NAMESPACE
{
QWidget *target = [self dragTargetHitTest:sender];
if (!target)
- return [super performDragOperation:sender];
+ return NO;
BOOL dropResult = NO;
if (*currentDragTarget()) {
diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp
index 183bcea..d180f0e 100644
--- a/src/gui/text/qtextlayout.cpp
+++ b/src/gui/text/qtextlayout.cpp
@@ -1715,6 +1715,7 @@ namespace {
QFixed minimumRightBearing;
QFontEngine *fontEngine;
+ QFontEngine *previousFontEngine;
const unsigned short *logClusters;
bool manualWrap;
@@ -1735,12 +1736,19 @@ namespace {
return glyphs.glyphs[logClusters[currentPosition - 1]];
}
- inline void saveCurrentGlyph()
+ inline void resetPreviousGlyph()
{
previousGlyph = 0;
+ previousFontEngine = 0;
+ }
+
+ inline void saveCurrentGlyph()
+ {
+ resetPreviousGlyph();
if (currentPosition > 0 &&
logClusters[currentPosition - 1] < glyphs.numGlyphs) {
previousGlyph = currentGlyph(); // needed to calculate right bearing later
+ previousFontEngine = fontEngine;
}
}
@@ -1760,8 +1768,11 @@ namespace {
inline void adjustPreviousRightBearing()
{
- if (previousGlyph > 0)
- adjustRightBearing(previousGlyph);
+ if (previousGlyph > 0 && previousFontEngine) {
+ qreal rb;
+ previousFontEngine->getGlyphBearings(previousGlyph, 0, &rb);
+ rightBearing = qMin(QFixed(), QFixed::fromReal(rb));
+ }
}
inline void resetRightBearing()
@@ -1851,7 +1862,7 @@ void QTextLine::layout_helper(int maxGlyphs)
lbh.currentPosition = line.from;
int end = 0;
lbh.logClusters = eng->layoutData->logClustersPtr;
- lbh.previousGlyph = 0;
+ lbh.resetPreviousGlyph();
while (newItem < eng->layoutData->items.size()) {
lbh.resetRightBearing();