[Wayland-bugs] [Bug 771320] [Wayland] Maps widget is displayed at wrong position inside gnome-contacts
gtk+ (GNOME Bugzilla)
bugzilla at gnome.org
Wed Oct 12 07:18:08 UTC 2016
https://bugzilla.gnome.org/show_bug.cgi?id=771320
--- Comment #14 from Olivier Fourdan <ofourdan at redhat.com> ---
(In reply to Olivier Fourdan from comment #12)
> Yes, that's precisely the problem... abs_x/abs_y can be wrong when
> transitioning from/to fullscreen/maximized/normal because the shadows and
> header bar get added/removed.
Just to clarify a bit here, this part there is to keep clutter-gtk's
GtkClutterEmbed happy.
There are two things to consider, one is that clutter stage with gdk backend
resizes on configure events whereas clutter-gtk GtkClutterEmbed widget reizes
on size_allocate signal emitted by gtk+ (upper layer).
By putting traces in clutter gdk's backend
_clutter_stage_gdk_notify_configure():
https://git.gnome.org/browse/clutter/tree/clutter/gdk/clutter-stage-gdk.c#n282
And another in clutter-gtk gtk_clutter_embed_size_allocate():
https://git.gnome.org/browse/clutter-gtk/tree/clutter-gtk/gtk-clutter-embed.c#n670
We can see exactly what happens with and without the patch when running totem
while switchng to maximized state and back:
A) If we configure *only* if abs_x/abs_y have changed:
1. Start in normal state:
Clutter-Message: _clutter_stage_gdk_notify_configure() window 0x24f2650
(26,70) [661x429]
Clutter-Message: _clutter_stage_gdk_notify_configure() window 0x24f2650
(26,70) [661x429]
Clutter-Gtk-Message: gtk_clutter_embed_size_allocate() window 0x24f2650 (0,0)
[661x429]
Clutter-Message: _clutter_stage_gdk_notify_configure() window 0x24f2650
(26,70) [661x429]
2. Switch to maximized state:
Clutter-Gtk-Message: gtk_clutter_embed_size_allocate() window 0x24f2650 (0,0)
[1972x1205]
Clutter-Message: _clutter_stage_gdk_notify_configure() window 0x24f2650
(26,70) [1972x1205]
Clutter-Gtk-Message: gtk_clutter_embed_size_allocate() window 0x24f2650 (0,0)
[1920x1153]
Clutter-Message: _clutter_stage_gdk_notify_configure() window 0x24f2650
(0,47) [1920x1153]
Clutter-Message: _clutter_stage_gdk_notify_configure() window 0x24f2650
(0,47) [1972x1205]
3. Back to normal state:
Clutter-Gtk-Message: gtk_clutter_embed_size_allocate() window 0x24f2650 (0,0)
[609x377]
Clutter-Message: _clutter_stage_gdk_notify_configure() window 0x24f2650
(0,47) [609x377]
Clutter-Gtk-Message: gtk_clutter_embed_size_allocate() window 0x24f2650 (0,0)
[661x429]
Clutter-Message: _clutter_stage_gdk_notify_configure() window 0x24f2650
(26,70) [661x429]
Clutter-Message: _clutter_stage_gdk_notify_configure() window 0x24f2650
(26,70) [609x377]
=> The final configure event gives (26,70) [609x377] which is too small
B) Now with sending a configure event even if the abs_x/abs_y didn't change:
1. Start in normal state:
Clutter-Message: _clutter_stage_gdk_notify_configure() window 0x2a62650
(26,70) [661x429]
Clutter-Message: _clutter_stage_gdk_notify_configure() window 0x2a62650
(26,70) [661x429]
Clutter-Gtk-Message: gtk_clutter_embed_size_allocate() window 0x2a62650 (0,0)
[661x429]
Clutter-Message: _clutter_stage_gdk_notify_configure() window 0x2a62650
(26,70) [661x429]
2. Switch to maximized state:
Clutter-Gtk-Message: gtk_clutter_embed_size_allocate() window 0x2a62650 (0,0)
[1972x1205]
Clutter-Message: _clutter_stage_gdk_notify_configure() window 0x2a62650
(26,70) [1972x1205]
Clutter-Gtk-Message: gtk_clutter_embed_size_allocate() window 0x2a62650 (0,0)
[1920x1153]
Clutter-Message: _clutter_stage_gdk_notify_configure() window 0x2a62650
(0,47) [1920x1153]
Clutter-Message: _clutter_stage_gdk_notify_configure() window 0x2a62650
(0,47) [1972x1205]
Clutter-Message: _clutter_stage_gdk_notify_configure() window 0x2a62650
(0,47) [1972x1205]
Clutter-Message: _clutter_stage_gdk_notify_configure() window 0x2a62650
(0,47) [1920x1153]
Clutter-Message: _clutter_stage_gdk_notify_configure() window 0x2a62650
(0,47) [1920x1153]
3. Back to normal state:
Clutter-Gtk-Message: gtk_clutter_embed_size_allocate() window 0x2a62650 (0,0)
[609x377]
Clutter-Message: _clutter_stage_gdk_notify_configure() window 0x2a62650
(0,47) [609x377]
Clutter-Gtk-Message: gtk_clutter_embed_size_allocate() window 0x2a62650 (0,0)
[661x429]
Clutter-Message: _clutter_stage_gdk_notify_configure() window 0x2a62650
(26,70) [661x429]
Clutter-Message: _clutter_stage_gdk_notify_configure() window 0x2a62650
(26,70) [609x377]
Clutter-Message: _clutter_stage_gdk_notify_configure() window 0x2a62650
(26,70) [609x377]
Clutter-Message: _clutter_stage_gdk_notify_configure() window 0x2a62650
(26,70) [661x429]
Clutter-Message: _clutter_stage_gdk_notify_configure() window 0x2a62650
(26,70) [661x429]
=> The final configure event gives (26,70) [661x429] which is the right size
for the clutter stage window
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/wayland-bugs/attachments/20161012/dbcc6694/attachment-0001.html>
More information about the wayland-bugs
mailing list