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.
Post by Jason HThe problem is the window resize does not come from the application, it comes from the OS/Window Manager.
Sent: Monday, February 24, 2014 8:46 PM
Subject: Re: [Interest] Finished resizing a window?
Post by John WeeksWe 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
http://lists.qt-project.org/mailman/listinfo/interest
_______________________________________________
Interest mailing list
http://lists.qt-project.org/mailman/listinfo/interest
-John