[Qt-interest] gui disabled issue with PACE copy protection dialogsinside Qt (OSX/Carbon)
Philippe
philwave at gmail.com
Wed May 4 15:39:55 CEST 2011
Just read your solution many months after you posted it, and indeed I
confirm this is a good finding and fix (4.7.2)...
Philippe
On Tue, 20 Jul 2010 02:20:19 +1000
"Ross Bencina" <rossb-lists at audiomulch.com> wrote:
> Replying to my own message for the benefit of the next unfortunate soul who
> comes accross this bug...
>
> Apparently Qt/Carbon's QApplicationPrivate::globalEventProcessor() function
> was implemented with the assumption that the only windows in the application
> would be created by Qt. As a result, it eats kEventWindowActivated and
> kEventWindowDeactivated events for non-Qt windows, which the PACE iLok
> dialog (naturally) expects to recieve. This is a pretty bad bug in Qt, I was
> lead to believe it would leave events alone which were destined for non-Qt
> Windows.
>
> In any case, here's a patch if anyone ever needs it. It sets handled_event
> to false if the event is not associated with a QWidget:
>
> -- qapplication_mac.4.6.3.mm 2010-06-02 12:00:19.000000000 +1000
> +++ qapplication_mac.mm 2010-07-20 08:04:33.000000000 +1000
> @@ -2327,9 +2327,16 @@
> }
> QMenuBar::macUpdateMenuBar();
> }
> +
> + if( !widget )
> + handled_event = false;
> +
> } else if(ekind == kEventWindowDeactivated) {
> if(widget && QApplicationPrivate::active_window == widget)
> app->setActiveWindow(0);
> +
> + if( !widget )
> + handled_event = false;
> } else {
> handled_event = false;
> }
>
>
> Now my plugin's PACE dialog's activate correctly.
>
> Would be nice to hear from someone who can explain why this wasn't done
> right in the first place.
>
> I now suspect that it's also eating mouse (and perhaps other) events under
> some conditions since I have some plugin windows which don't respond to
> mouse events, and some that don't always redraw. If anyone is working on
> more patches/fixes for this kind of thing I'd love to hear about it.
>
> Thanks
>
> Ross.
>
> ----- Original Message -----
> From: "Ross Bencina" <rossb-lists at audiomulch.com>
> To: "Qt-Interest" <qt-interest at trolltech.com>
> Sent: Wednesday, July 14, 2010 9:21 PM
> Subject: [Qt-interest] gui disabled issue with PACE copy protection
> dialogsinside Qt (OSX)
>
>
> > Hi Everyone
> >
> > My Qt app hosts plugins developed by 3rd party developers. Some plugins
> > use
> > PACE copy protection (paceap.com). The problem is, when they get loaded
> > they
> > display an iLok or PACE dialog and then hang with all of the buttons on
> > the
> > PACE dialog disabled. This is a non-Qt dialog that the copy protection
> > code
> > displays. As far as I can tell, the dialog is running its own nested event
> > loop, although a few things in my Qt UI are still active (hover, some
> > clicks, tooltips). This is on OSX.
> >
> > I have only tested this with demo versions of plugins but my users are
> > reporting similar problems with their licenced versions. If I try to use
> > gdb
> > naturally PACE exits immediatly so it's hard to even give info about
> > threads
> > etc.
> >
> > I am guessing that Qt might be doing something (or not doing something)
> > with
> > event processing that is causing this but I wonder whether anyone has
> > encountered this before and has any ideas how I might solve it. I guess
> > there would be similar issues in displaying any 3rd party dialog inside a
> > Qt
> > GUI.
> >
> > Any and all thoughts and help appreciated.
> >
> > Many thanks
> >
> > Ross.
> >
> > _______________________________________________
> > Qt-interest mailing list
> > Qt-interest at trolltech.com
> > http://lists.trolltech.com/mailman/listinfo/qt-interest
>
> _______________________________________________
> Qt-interest mailing list
> Qt-interest at trolltech.com
> http://lists.trolltech.com/mailman/listinfo/qt-interest
More information about the Qt-interest-old
mailing list