kenz-gelsoft / gecko-dev

Read-only Git mirror of the Mercurial gecko repositories at https://hg.mozilla.org. How to contribute: https://firefox-source-docs.mozilla.org/contributing/contribution_quickref.html
https://firefox-source-docs.mozilla.org/setup/index.html
Other
16 stars 2 forks source link

Fix popup behaviors #77

Open kenz-gelsoft opened 23 hours ago

kenz-gelsoft commented 23 hours ago
kenz-gelsoft commented 23 hours ago

Testing with WAYLAND_DEBUG=1 may help. Let's try.

kenz-gelsoft commented 23 hours ago
kenz-gelsoft commented 23 hours ago

I expected at least one log of above contains (xdg_)popup related log, but not found.

kenz-gelsoft commented 22 hours ago

In this scenario, whole popup placed inside parent window. So it is possible that no native (gtk/wayland level) popup window created.

If so, this may be invaldating or subsurface initialization problem.

kenz-gelsoft commented 22 hours ago

Actually subsurface created after button click.

There are two subsurfaces.

I guess one is for gtk popup thing and another is GL surface that gecko painting in.

No it seems the former is covering parent window and prevents events passed through. The latter is for the popup. Because we set position of popup to the latter.

1071756.839]  -> wl_pointer@8.button(4, 992004, 272, 1)
[1071756.885]  -> wl_pointer@8.frame()
[1071756.895] wl_pointer@8.button(4, 992004, 272, 1)
[1071756.942] wl_pointer@8.frame()
[1071757.968]  -> wl_surface@29.frame(new id wl_callback@39)
[1071757.996]  -> wl_surface@29.commit()
[1071758.003] wl_surface@29.frame(new id wl_callback@39)
[1071758.037] wl_surface@29.commit()
[1071759.756]  -> wl_compositor@5.create_surface(new id wl_surface@42)
[1071761.828] wl_compositor@5.create_surface(new id wl_surface@42)
[1071762.663]  -> wl_callback@39.done(992010)
[1071762.689]  -> wl_display@1.delete_id(39)
[1071766.825] wl_display@1.delete_id(39)
[1071766.846] wl_callback@39.done(992010)
[1071766.858]  -> wl_surface@29.frame(new id wl_callback@39)
[1071766.879]  -> wl_surface@29.commit()
[1071766.882] wl_surface@29.frame(new id wl_callback@39)
[1071766.907] wl_surface@29.commit()
[1071766.948]  -> wl_surface@29.commit()
[1071769.360]  -> wl_surface@29.damage_buffer(1024, 0, 293, 113)
[1071769.410]  -> wl_surface@29.attach(wl_buffer@38, 0, 0)
[1071769.436]  -> wl_surface@29.commit()
[1071770.064] wl_surface@29.commit()
[1071770.903]  -> wl_callback@39.done(992018)
[1071770.926]  -> wl_display@1.delete_id(39)
[1071770.942] wl_surface@29.damage_buffer(1024, 0, 293, 113)
[1071770.971] wl_surface@29.attach(wl_buffer@38, 0, 0)
[1071770.989] wl_surface@29.commit()
[1071770.995]  -> wl_buffer@34.release()
[1071771.023] wl_display@1.delete_id(39)
[1071771.042] wl_callback@39.done(992018)
[1071771.053]  -> wl_surface@29.frame(new id wl_callback@39)
[1071771.073]  -> wl_surface@29.commit([1071771.076] wl_surface@29.frame()
new id wl_callback@39)
[1071771.130] wl_surface@29.commit()
[1071771.160] wl_buffer@34.release()
[1071772.988]  -> wl_surface@42.set_buffer_scale(1)
[1071773.031]  -> wl_compositor@20.create_surface(new id wl_surface@43)
[1071773.048]  -> wl_subcompositor@21.get_subsurface(new id wl_subsurface@44, wl_surface@43, wl_surface@42)
[1071773.073]  -> wl_subsurface@44.set_desync()
[1071773.081]  -> wl_surface@42.frame(new id wl_callback@45)
[1071773.094]  -> wl_surface@43.commit()
[1071773.106]  -> wl_compositor@20.create_region(new id wl_region@46)
[1071773.120]  -> wl_surface@43.set_input_region(wl_region@46)
[1071773.130]  -> wl_region@46.destroy()
[1071773.152]  -> wl_subcompositor@6.get_subsurface(new id wl_subsurface@47, wl_surface@42, wl_surface@25)
[1071773.181]  -> wl_subsurface@47.set_position(1003, 76)
[1071774.878] wl_surface@42.set_buffer_scale(1)
[1071775.682]  -> wl_callback@39.done(992023)
[1071775.705]  -> wl_display@1.delete_id(39)
[1071775.719] wl_compositor@20.create_surface(new id wl_surface@43)
[1071775.762] wl_subcompositor@21.get_subsurface(new id wl_subsurface@44, wl_surface@43, wl_surface@42)
[!] HaikuSurface::AttachView(): view == NULL
[1071775.820] wl_subsurface@44.set_desync()
[1071775.830] wl_surface@42.frame(new id wl_callback@45)
[1071775.844] wl_surface@43.commit()
[1071775.851] wl_compositor@20.create_region(new id wl_region@46)
[1071775.866] wl_surface@43.set_input_region(wl_region@46)
[1071775.878] wl_region@46.destroy()
[1071775.890]  -> wl_display@1.delete_id(46)
[1071775.902] wl_subcompositor@6.get_subsurface(new id wl_subsurface@47, wl_surface@42, wl_surface@25)
[1071776.000] wl_subsurface@47.set_position(1003, 76)
[1071780.656]  -> wl_shm@16.create_pool(new id wl_shm_pool@48, fd 120, 863040)
[1071780.697]  -> wl_shm_pool@48.create_buffer([1071780.700] wl_shm@16.create_pool(new id wl_buffer@new id wl_shm_pool@4948, , 0fd 120, , 310863040, )
696, 1240, 0)
[1071780.847] wl_shm_pool@48.create_buffer(new id wl_buffer@49, 0, 310, 696, 1240, 0)
[1071784.938] wl_display@1.delete_id(39)
[1071784.961] wl_display@1.delete_id(46)
[1071784.973] wl_callback@39.done(992023)
[1071784.987]  -> wl_surface@29.frame(new id wl_callback@39)
[1071785.010]  -> wl_surface@29.commit()
[1071785.014] wl_surface@29.frame(new id wl_callback@39)
[1071785.067] wl_surface@29.commit()
[1071785.144]  -> wl_compositor@20.create_region(new id wl_region@46)
[1071785.174]  -> wl_surface@43.set_input_region(wl_region@46)
[1071785.189]  -> wl_region@46.destroy()
[1071785.352]  -> wl_shm@4.create_pool(new id wl_shm_pool@50, fd 121, 863040)
[1071785.409]  -> wl_shm_pool@50.create_buffer(new id wl_buffer@51, 0, 310, 696, 1240, 0)
[1071785.936]  -> wl_surface@42.attach(wl_buffer@51, 0, 0)
[1071785.964]  -> wl_surface@42.set_buffer_scale(1)
[1071785.975]  -> wl_surface@42.damage(0, 0, 310, 696)
[1071786.004]  -> wl_surface@42.set_opaque_region(nil)
[1071786.015]  -> wl_compositor@5.create_region(new id wl_region@52)
[1071786.029]  -> wl_surface@42.set_input_region(wl_region@52)
[1071786.040]  -> wl_region@52.destroy()
[1071786.060]  -> wl_surface@42.frame(new id wl_callback@53)
[1071786.074]  -> wl_surface@43.frame(new id wl_callback@54)
[1071786.089]  -> wl_surface@42.commit()
[1071786.109]  -> wl_surface@29.damage_buffer(0, 0, 1317, 877)
[1071786.155]  -> wl_surface@29.attach(wl_buffer@34, 0, 0)
[1071786.183]  -> wl_surface@29.commit()
[1071787.909]  -> wl_surface@25.frame(new id wl_callback@55)
[1071787.936]  -> wl_surface@29.frame(new id wl_callback@56)
[1071787.950]  -> wl_surface@25.commit()
[1071787.959]  -> wl_subsurface@47.set_desync()
[1071787.968]  -> wl_surface@29.commit()
[1071788.493] wl_compositor@20.create_region(new id wl_region@46)
[1071789.398]  -> wl_callback@39.done(992036)
[1071789.423]  -> wl_display@1.delete_id(39)
[1071789.441] wl_surface@43.set_input_region(wl_region@46)
[1071789.478] wl_region@46.destroy()
[1071789.488]  -> wl_display@1.delete_id(46)
[1071789.503] wl_shm@4.create_pool(new id wl_shm_pool@50, fd 121, 863040)
[1071789.604] wl_shm_pool@50.create_buffer(new id wl_buffer@51, 0, 310, 696, 1240, 0)
[1071789.692] wl_surface@42.attach(wl_buffer@51, 0, 0)
[1071789.731] wl_surface@42.set_buffer_scale(1)
[1071789.750] wl_surface@42.damage(0, 0, 310, 696)

(from menu1.txt)