summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJanne Anttila <janne.anttila@digia.com>2009-11-26 12:50:37 (GMT)
committerJanne Anttila <janne.anttila@digia.com>2009-11-26 12:51:18 (GMT)
commit4160adc44a512a97d333227cfdde0648fb4132a9 (patch)
treef1383534ca0a716bbedf520691b99325891edba1
parentb56dcd0f2093c35b1d638eebe38d113e8d59ea0c (diff)
downloadQt-4160adc44a512a97d333227cfdde0648fb4132a9.zip
Qt-4160adc44a512a97d333227cfdde0648fb4132a9.tar.gz
Qt-4160adc44a512a97d333227cfdde0648fb4132a9.tar.bz2
Fixed context menu placement partially outside screen bug in Symbian.
In style demo example when spinbox was long tapped, the context menu was placed partially outside screen. The preconditions for bug were: 1. Tap position is near screen right edge 2. Minimum space width requested by context menu is > sreen width The new (simplified) logic is as follows: 1. If menus right edge in requested position is outside screen right edge, the menu is moved to left enough to fit on screen. i.e. if (tap position + menu width > screen right ) x = screen right - menu width 2. As a result of above statement the x position might go outside left boundary of screen. This is fixed by next statements if( x < screen left ) x = screen left Task-number: QTBUG-6164 Reviewed-by: Alessandro Portale
-rw-r--r--src/gui/widgets/qmenu.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/gui/widgets/qmenu.cpp b/src/gui/widgets/qmenu.cpp
index 761a060..2e27226 100644
--- a/src/gui/widgets/qmenu.cpp
+++ b/src/gui/widgets/qmenu.cpp
@@ -229,7 +229,7 @@ void QMenuPrivate::updateActionRects() const
Q_Q(const QMenu);
if (!itemsDirty)
return;
-
+
q->ensurePolished();
//let's reinitialize the buffer
@@ -292,7 +292,7 @@ void QMenuPrivate::updateActionRects() const
if (!action->isVisible() ||
(collapsibleSeparators && previousWasSeparator && action->isSeparator()))
continue; // we continue, this action will get an empty QRect
-
+
previousWasSeparator = action->isSeparator();
//let the style modify the above size..
@@ -1139,7 +1139,7 @@ void QMenuPrivate::_q_actionTriggered()
//we check the parent hierarchy
QList< QPointer<QWidget> > list;
for(QWidget *widget = q->parentWidget(); widget; ) {
- if (qobject_cast<QMenu*>(widget)
+ if (qobject_cast<QMenu*>(widget)
#ifndef QT_NO_MENUBAR
|| qobject_cast<QMenuBar*>(widget)
#endif
@@ -1306,7 +1306,7 @@ void QMenu::initStyleOption(QStyleOptionMenuItem *option, const QAction *action)
the addAction(), addActions() and insertAction() functions. An action
is represented vertically and rendered by QStyle. In addition, actions
can have a text label, an optional icon drawn on the very left side,
- and shortcut key sequence such as "Ctrl+X".
+ and shortcut key sequence such as "Ctrl+X".
The existing actions held by a menu can be found with actions().
@@ -1906,9 +1906,9 @@ void QMenu::popup(const QPoint &p, QAction *atAction)
pos.setX(qMax(p.x()-size.width(), screen.right()-desktopFrame-size.width()+1));
} else {
if (pos.x()+size.width()-1 > screen.right()-desktopFrame)
- pos.setX(qMin(p.x()+size.width(), screen.right()-desktopFrame-size.width()+1));
+ pos.setX(screen.right()-desktopFrame-size.width()+1);
if (pos.x() < screen.left()+desktopFrame)
- pos.setX(qMax(p.x(), screen.left() + desktopFrame));
+ pos.setX(screen.left() + desktopFrame);
}
if (pos.y() + size.height() - 1 > screen.bottom() - desktopFrame) {
if(snapToMouse)