Right- this is what Thiago meant in his reply to my original posting.

And verified on Mac OS X: before posting, I tried QApplication::mouseButtons() 
to detect the mouse state, and got false information. The mouse events that 
drive the resizing aren't getting to Qt at all.

Well, then again, putting a breakpoint in my resize handler, I see this:

0       grafRec::doResizeEvent  GrafRecImplementation.cpp       966     
0x1011b0247     
1       wDataClass::baseDoResizeEvent   WM_WinClasses.cpp       1803    
0x1010b5f40     
2       IgorWindowWdPContentArea::resizeEvent   IgorWindowContentArea.cpp       
205     0x100a724a6     
3       QWidget::event  qwidget.cpp     8541    0x108547e4f     
4       IgorWindowWdPContentArea::event IgorWindowContentArea.cpp       181     
0x100a73225     
5       QApplicationPrivate::notify_helper      qapplication.cpp        4562    
0x1084d520f     
6       QApplication::notify    qapplication.cpp        4527    0x1084d85f5     
7       IgorAppObject::notify   IgorAppObject.cpp       537     0x100a48d4d     
8       QCoreApplication::notifyInternal        qcoreapplication.cpp    949     
0x109aefa2a     
9       QCoreApplication::sendEvent     qcoreapplication.h      231     
0x10003be39     
10      QWidgetPrivate::setGeometry_sys_helper  qwidget_mac.mm  4624    
0x10844af89     
11      QWidgetPrivate::setGeometry_sys qwidget_mac.mm  4556    0x10844b7c8     
12      QWidget::setGeometry    qwidget.cpp     6974    0x108543a71     
13      QWidget::setGeometry    qwidget.h       1018    0x1085141ba     
14      QWidgetItem::setGeometry        qlayoutitem.cpp 490     0x108517855     
15      QGridBox::setGeometry   qgridlayout.cpp 85      0x1085093ae     
16      QGridLayoutPrivate::distribute  qgridlayout.cpp 964     0x108507411     
17      QGridLayout::setGeometry        qgridlayout.cpp 1460    0x108507534     
18      QLayoutPrivate::doResize        qlayout.cpp     679     0x108513721     
19      QLayout::widgetEvent    qlayout.cpp     703     0x108513dc9     
20      QApplicationPrivate::notify_helper      qapplication.cpp        4553    
0x1084d51d9     
21      QApplication::notify    qapplication.cpp        4527    0x1084d85f5     
22      IgorAppObject::notify   IgorAppObject.cpp       537     0x100a48d4d     
23      QCoreApplication::notifyInternal        qcoreapplication.cpp    949     
0x109aefa2a     
24      QCoreApplication::sendSpontaneousEvent  qcoreapplication.h      234     
0x10843d6cf     
25      qt_sendSpontaneousEvent qapplication.cpp        5560    0x1084d4770     
26      -[QCocoaWindowDelegate syncSizeForWidget:toSize:fromSize:]      
qcocoawindowdelegate_mac.mm     139     0x10845d1bd     
27      -[QCocoaWindowDelegate windowDidResize:]        
qcocoawindowdelegate_mac.mm     219     0x10845cd68     
28      _nsnote_callback                        0x7fff868e6ad5  
29      __CFXNotificationPost                   0x7fff88f6cfd0  
30      _CFXNotificationPostNotification                        0x7fff88f59548  
31      -[NSNotificationCenter postNotificationName:object:userInfo:]           
        0x7fff868dda36  
32      -[NSWindow _setFrameCommon:display:stashSize:]                  
0x7fff807d284a  
33      -[NSTitledFrame resizeWithEvent:]                       0x7fff80d79845  
34      -[NSTitledFrame mouseDown:]                     0x7fff809ec255  
35      -[NSThemeFrame mouseDown:]                      0x7fff809ec1bb  
36      -[NSWindow sendEvent:]                  0x7fff808ea3a7  
37      -[QCocoaWindow sendEvent:]      qcocoasharedwindowmethods_mac_p.h       
183     0x10845a01b     
38      -[NSApplication sendEvent:]                     0x7fff8081fafa  
39      -[QNSApplication sendEvent:]    qcocoaapplication_mac.mm        186     
0x1084604b7     
40      -[NSApplication run]                    0x7fff807b66de  
41      QEventDispatcherMac::processEvents      qeventdispatcher_mac.mm 615     
0x10846d37a     
42      QEventLoop::processEvents       qeventloop.cpp  149     0x109aec3ca     
43      QEventLoop::exec        qeventloop.cpp  204     0x109aec61c     
44      QCoreApplication::exec  qcoreapplication.cpp    1221    0x109af03a0     
45      QApplication::exec      qapplication.cpp        3823    0x1084d8630     
46      main    IgorQtMain.cpp  497     0x101f0fd77     

The lines at 39 and 37 are Qt code where the NSEvent type is 1, a mouse-down 
event. So Qt does have the information, but chooses not to use it. I haven't 
looked at Windows, and we're not yet in a position to look at Linux, so I don't 
know how it works there.

I was looking at writing a bit of Cocoa code (yuck) to catch 
NSWindowWillStartLiveResizeNotification and 
NSWindowDidEndLiveResizeNotification, but a QTimer would be easier. The square 
brackets are in the right places, and it works on Windows, too.

On 24-Feb-2014, at 5:50 PM, Jason H wrote:

> The problem is the window resize does not come from the application, it comes 
> from the OS/Window Manager.
> 
> 
> From: "william.croc...@analog.com" <william.croc...@analog.com>
> To: interest@qt-project.org 
> Sent: Monday, February 24, 2014 8:46 PM
> Subject: Re: [Interest] Finished resizing a window?
> 
> 
> >
> > We have windows in our application that are potentially expensive to 
> > repaint, so
> > when the user resizes a window we may need to put off repainting until the
> > resizing is finished. It seems that we don't get mouse down/mouse up events 
> > when
> > the user clicks in the window frame/resize grip area, so I can't wait until
> > mouse up.
> >
> 
> Could you use this to watch for (then paint on) the mouse release?
> 
>     Qt::MouseButtons QApplication::mouseButtons() [static]
> 
> Bill
> 
> 
> _______________________________________________
> Interest mailing list
> Interest@qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest
> 
> 
> _______________________________________________
> Interest mailing list
> Interest@qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest

-John

_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to