Hello!
I'm trying to get two things running but can only manage to do either one or the other:
1.) I want to use the stack widget to let widgets overlap each other.
2.) I implemented my own widget in C++ and there want to capture the mouse to receive mouse events even when the mouse cursor leaves the mozilla window.
To get the nsIFrame::CaptureMouse method working, I need to create a View in the frame of my custom widget (I looked in nsISplitterFrame::Init for how to do it). But when I create a view, I can't place my widget in the stack - no matter what z-order is set, it will always be painted above all other widgets in the stack.
I found a bug that - I think - addresses my problem but the last comment dates march 2003. How are my chances that this bug will be fixed in the near future. I am developing a commercial product and have to find some solution.
http://bugzilla.mozilla.org/show_bug.cgi?id=32155
I tried to debug the painting process in mozilla but I don't know how
views and frames are involved and did not get very far. I compared the
call-stack when my custom widget has a view and the stack without a view. With private view, the paint is called from my own private view, without the view of the stackframe is called. The stack in turn paints all its contained frames.
nsCustomWidgetFrame::Paint(nsCustomWidgetFrame * const 0x06650a8c,
nsIPresContext * 0x0394d908, nsIRenderingContext & {...}, const nsRect &
{...}, nsFramePaintLayer eFramePaintLayer_Underlay, unsigned int
0x00000000) line 212 + 51 bytes
PresShell::Paint(PresShell * const 0x0146b284, nsIView * 0x06652438,
nsIRenderingContext & {...}, const nsRect & {...}) line 5561 + 33 bytes
nsView::Paint(nsView * const 0x06652438, nsIRenderingContext & {...},
const nsRect & {...}, unsigned int 0x00000000, int & 0xcccccccc) line 262
+ 37 bytes
nsViewManager::RenderDisplayListElement(DisplayListElement2 * 0x07348458,
nsIRenderingContext * 0x0734bc30) line 1427 + 32 bytes
nsViewManager::RenderViews(nsView * 0x06634bf8, nsIRenderingContext &
{...}, const nsRegion & {...}, void * 0x07348ca0, const nsVoidArray &
{...}) line 1347
nsViewManager::Refresh(nsView * 0x06634bf8, nsIRenderingContext *
0x0734bc30, nsIRegion * 0x0734bfc0, unsigned int 0x00000001) line 906
nsViewManager::DispatchEvent(nsViewManager * const 0x0394f660, nsGUIEvent
* 0x0012f64c, nsEventStatus * 0x0012f534) line 1878
HandleEvent(nsGUIEvent * 0x0012f64c) line 76 + 33 bytesI'll try some more tomorrow - maybe somebody can give me a hint on where to look.
Thanks, Ren� _______________________________________________ mozilla-layout mailing list [EMAIL PROTECTED] http://mail.mozilla.org/listinfo/mozilla-layout
