782
|
1 |
--- qt-x11-free-3.3.8/src/widgets/qpopupmenu.cpp.orig 2007-02-02 19:31:23.000000000 +0530
|
|
2 |
+++ qt-x11-free-3.3.8/src/widgets/qpopupmenu.cpp 2008-01-08 22:45:36.500530694 +0530
|
|
3 |
@@ -253,6 +253,7 @@
|
|
4 |
} scroll;
|
|
5 |
QSize calcSize;
|
|
6 |
QRegion mouseMoveBuffer;
|
|
7 |
+ uint hasmouse : 1;
|
|
8 |
};
|
|
9 |
|
|
10 |
static QPopupMenu* active_popup_menu = 0;
|
|
11 |
@@ -272,6 +273,7 @@
|
|
12 |
d->scroll.scrollableSize = d->scroll.topScrollableIndex = 0;
|
|
13 |
d->scroll.scrollable = QPopupMenuPrivate::Scroll::ScrollNone;
|
|
14 |
d->scroll.scrolltimer = 0;
|
|
15 |
+ d->hasmouse = 0;
|
|
16 |
isPopupMenu = TRUE;
|
|
17 |
#ifndef QT_NO_ACCEL
|
|
18 |
autoaccel = 0;
|
|
19 |
@@ -1741,6 +1743,11 @@
|
|
20 |
|
|
21 |
int item = itemAtPos( e->pos() );
|
|
22 |
if ( item == -1 ) { // no valid item
|
|
23 |
+ if( !d->hasmouse ) {
|
|
24 |
+ tryMenuBar( e );
|
|
25 |
+ return;
|
|
26 |
+ }
|
|
27 |
+ d->hasmouse = 0;
|
|
28 |
int lastActItem = actItem;
|
|
29 |
actItem = -1;
|
|
30 |
if ( lastActItem >= 0 )
|
|
31 |
@@ -1752,6 +1759,7 @@
|
|
32 |
}
|
|
33 |
} else { // mouse on valid item
|
|
34 |
// but did not register mouse press
|
|
35 |
+ d->hasmouse = 1;
|
|
36 |
if ( (e->state() & Qt::MouseButtonMask) && !mouseBtDn )
|
|
37 |
mouseBtDn = TRUE; // so mouseReleaseEvent will pop down
|
|
38 |
|
|
39 |
@@ -2160,6 +2168,7 @@
|
|
40 |
*/
|
|
41 |
void QPopupMenu::leaveEvent( QEvent * )
|
|
42 |
{
|
|
43 |
+ d->hasmouse = 0;
|
|
44 |
if ( testWFlags( WStyle_Tool ) && style().styleHint(QStyle::SH_PopupMenu_MouseTracking, this) ) {
|
|
45 |
int lastActItem = actItem;
|
|
46 |
actItem = -1;
|