Re: [directfb-dev] GtkComboBox drop down list covered by GtkDialogs



Jesus Ruiz de Infante wrote:
Denis Oliver Kropp wrote:
Jesus Ruiz de Infante wrote:
Denis Oliver Kropp wrote:
Jesus Ruiz de Infante wrote:
So it seems that, with respect to the window stacking, pop up windows are not in the same class
Correct.

as dialogs. How can that be changed?

I have found only a reference to DWSC_UPPER in gdk_window_set_modal_hint()
(in gdk/directfb/gdkwindow-directfb.c), which is only called by
gtk_window_set_modal() and gtk_window_realize() (in gtk/gtkwindow.c)
That's not good. As a hotfix you can comment out the change to DWSC_UPPER,
but to fix it properly, gdk_window_new() should detect that a popup is opened
for a dialog and that it should be in DWSC_UPPER, too.

Actually gdk_window_set_modal_hint() is called once on the dialog window
and, later, once on the popup window, when they are created, but it seems that this is not enough to
raise the popup when the combo box is clicked. Is there a way to shuffle windows
in the DWSC_UPPER class?
A call to IDirectFBWindow::RaiseToTop() should do it.

Also, if both the popup and the dialog are in the DWSC_UPPER stacking class, why don't
<Meta>-X or <Meta>-S bring the popup to the front?
That's indeed a good question. If you're running the multi app core you can try dfbdump to
verify the stacking classes.


Many thanks for your response.

Thanks for your investigations!

I have added an inconditional call to gdk_window_set_modal_hint() in gdk_directfb_window_new()
to put the created window in the DWSC_UPPER class.

But only the dialog is ever set to modal?

Here is the dfbdump output. Window ID 1 is a dbfterm. Window ID 3 is the dialog.
Window 5 is the popup drop down list, but it is not in the DWSC_UPPER class (no '^' adjacent to the ID).
No idea what id 4 is. It is out of the display (x = -100, y = -100)
and it does belong to the DWSC_UPPER class.


-----------------------------------[ Windows of Layer 0 ]-----------------------------------------
Reference   FID  . Refs     X     Y   Width Height Opacity   ID     Capabilities   State & Options
--------------------------------------------------------------------------------------------------
0x00000021 [  2] :   3      0,    0     75 x   45    0xff     3  ^  alphachannel
0x0000001f [  2] :   2      0,    0    640 x  480    0x00     2  -  alphachannel
0x00000011 [  1] :   6     12,   10    616 x  460    0xff     1  -  alphachannel   FOCUSED

-----------------------------------[ Windows of Layer 0 ]-----------------------------------------
Reference   FID  . Refs     X     Y   Width Height Opacity   ID     Capabilities   State & Options
--------------------------------------------------------------------------------------------------
0x00000024 [  2] :   2   -100, -100     10 x   10    0x00     4  ^  input only
0x00000021 [  2] :   3      0,    0     75 x   45    0xff     3  ^  alphachannel   FOCUSED
0x00000025 [  2] :   6      2,    2     71 x   81    0xff     5  -  alphachannel
0x0000001f [  2] :   2      0,    0    640 x  480    0x00     2  -  alphachannel
0x00000011 [  1] :   6     12,   10    616 x  460    0xff     1  -  alphachannel

Also, a new input window is created each time the drop down list pops up. Isn't this a leak?

Yep :-/


-----------------------------------[ Windows of Layer 0 ]-----------------------------------------
Reference   FID  . Refs     X     Y   Width Height Opacity   ID     Capabilities   State & Options
--------------------------------------------------------------------------------------------------
0x00000028 [  2] :   1   -100, -100     10 x   10    0x00     7  ^  input only
0x00000027 [  2] :   1   -100, -100     10 x   10    0x00     6  ^  input only
0x00000024 [  2] :   1   -100, -100     10 x   10    0x00     4  ^  input only
0x00000021 [  2] :   3      0,    0     75 x   45    0xff     3  ^  alphachannel
0x00000025 [  2] :   6      2,    0     71 x   81    0x00     5  -  alphachannel
0x0000001f [  2] :   2      0,    0    640 x  480    0x00     2  -  alphachannel
0x00000011 [  1] :   6     12,   10    616 x  460    0xff     1  -  alphachannel   FOCUSED

Not *too* bad, it's not allocating a surface at least, but it shows once more that GdkDirectFB
is having a problem with popup windows, or maybe input only windows created in addition.

Oh, looks like the input only is properly moved up a class, but not the "original" popup.

Who's creating this extra GdkWindow just for input and why?

--
Best regards,
  Denis Oliver Kropp

.------------------------------------------.
| DirectFB - Hardware accelerated graphics |
| http://www.directfb.org/                 |
"------------------------------------------"


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]