patches/qt3-0016-qpopup_has_mouse.patch
author jurikm
Sun, 12 Feb 2012 14:04:10 +0000
changeset 8245 383896da4129
parent 782 a013313b88b4
permissions -rw-r--r--
SFEsauerbraten.spec: add IPS package name

--- qt-x11-free-3.3.8/src/widgets/qpopupmenu.cpp.orig	2007-02-02 19:31:23.000000000 +0530
+++ qt-x11-free-3.3.8/src/widgets/qpopupmenu.cpp	2008-01-08 22:45:36.500530694 +0530
@@ -253,6 +253,7 @@
     } scroll;
     QSize calcSize;
     QRegion mouseMoveBuffer;
+    uint hasmouse : 1;
 };
 
 static QPopupMenu* active_popup_menu = 0;
@@ -272,6 +273,7 @@
     d->scroll.scrollableSize = d->scroll.topScrollableIndex = 0;
     d->scroll.scrollable = QPopupMenuPrivate::Scroll::ScrollNone;
     d->scroll.scrolltimer = 0;
+    d->hasmouse = 0;
     isPopupMenu	  = TRUE;
 #ifndef QT_NO_ACCEL
     autoaccel	  = 0;
@@ -1741,6 +1743,11 @@
 
     int	 item = itemAtPos( e->pos() );
     if ( item == -1 ) {				// no valid item
+        if( !d->hasmouse ) {
+            tryMenuBar( e );
+            return;
+        }
+        d->hasmouse = 0;
 	int lastActItem = actItem;
 	actItem = -1;
 	if ( lastActItem >= 0 )
@@ -1752,6 +1759,7 @@
 	}
     } else {					// mouse on valid item
 	// but did not register mouse press
+        d->hasmouse = 1;
 	if ( (e->state() & Qt::MouseButtonMask) && !mouseBtDn )
 	    mouseBtDn = TRUE; // so mouseReleaseEvent will pop down
 
@@ -2160,6 +2168,7 @@
 */
 void QPopupMenu::leaveEvent( QEvent * )
 {
+    d->hasmouse = 0;
     if ( testWFlags( WStyle_Tool ) && style().styleHint(QStyle::SH_PopupMenu_MouseTracking, this) ) {
 	int lastActItem = actItem;
 	actItem = -1;