On Sunday 29 September 2013 15:20:09 Martin Koller wrote:
> Hi,
> 
> I'm currently implementing a QPA plugin for Qt-4.8.4.
> What I now see is a crash (ASSERT) in QWidget::effectiveWinId() as 
> nativeParentWidget() returns 0.
> This is happening when I send mouse move events to Qt and the cursors leaves 
> a widget:
> 
> #5  0x00007ffff6541555 in qt_assert (assertion=0x7ffff789f049 "realParent", 
> file=
>     0x7ffff789ee50 "kernel/qwidget.cpp", line=2620) at global/qglobal.cpp:1996
> #6  0x00007ffff70f63f7 in QWidget::effectiveWinId (this=0x674f20) at 
> kernel/qwidget.cpp:2620
> #7  0x00007ffff7138767 in qt_qpa_set_cursor (w=0x674f20, force=false) at 
> kernel/qwidget_qpa.cpp:865
> #8  0x00007ffff713623b in QWidgetPrivate::unsetCursor_sys (this=0x6753c0) at 
> kernel/qwidget_qpa.cpp:258
> #9  0x00007ffff70fb337 in QWidget::unsetCursor (this=0x674f20) at 
> kernel/qwidget.cpp:5115
> #10 0x00007ffff75fb56e in QToolBar::event (this=0x674f20, 
> event=0x7fffffffcb10) at widgets/qtoolbar.cpp:1183
> 
> 
> It's not clear to me if I'm doing something wrong or if it's a bug in Qt.
> 
> What do I need to do in my QPA plugin so that a widgets has a 
> nativeParentWidget() ?

It seems I solved it now. Looking into the vnc plugin, I see that it just 
generates non-zero winIds
in a derived class of QPlatformWindow:
      static QAtomicInt winIdGenerator(1);
      windowId = winIdGenerator.fetchAndAddRelaxed(1);

and returns this in
virtual WId winId() const { return windowId; }

So I also implemented my own QPlatformWindow derived class.

-- 
Best regards/Schöne Grüße

Martin
A: Because it breaks the logical sequence of discussion
Q: Why is top posting bad?

()  ascii ribbon campaign - against html e-mail 
/\  www.asciiribbon.org   - against proprietary attachments

Geschenkideen, Accessoires, Seifen, Kulinarisches: www.bibibest.at
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to