libwayland surface coordinate question

Jonas Ã…dahl jadahl at gmail.com
Fri Nov 22 07:52:23 UTC 2019


On Thu, Nov 21, 2019 at 07:17:11PM -0800, Ken C wrote:
> That is going to be it. The client happens to be a minimal gtk3 app.
> Thank-you so much for the pointer towards
> weston_desktop_surface_get_geometry().

FWIW, you should be able to make the gtk3 application not include any
pixels outside the window geometry by making it maximized. You should be
able to accomplish this by calling
weston_desktop_surface_set_maximized() with true on the corresponding
desktop surface instance.


Jonas

> 
> 
> On Thu, Nov 21, 2019 at 5:52 PM Scott Anderson
> <scott.anderson at collabora.com> wrote:
> >
> > On 22/11/19 2:40 pm, Ken C wrote:
> > > I am just starting out with libweston and have a beginner question
> > > regarding surface/view coordinates. I am looking to implement
> > > something along the lines of issue #277 on gitlab[1], "New shell
> > > plugin for single-app usecases". I have swapped out
> > > weston-desktop-shell with a toy client just to get grounded, and am
> > > using the X11 and RDP backends for testing. I can see where the
> > > initial client position gets set up in
> > > weston_view_set_initial_position() in shell.c. However I am finding
> > > that even if weston_view_set_position() is called with {0,0}, the
> > > resulting window on output is offset by ~32ish pixels. I've also
> > > started from westiny[2], which is about as simple as it gets, but find
> > > the same mysterious (to me) offset. I can set the initial position to
> > > a negative x,y value in weston_view_set_initial_position(), forcing
> > > the window into the corner. Maximizing the toy client interestingly
> > > enough fills the screen (a single head).
> > >
> > > I've looked high and low for where that ~32 pixel offset comes from,
> > > but have not had luck. While I look some more maybe someone has a
> > > quick pointer. If I can set a breakpoint I'm sure it will become
> > > obvious.
> > >
> > > [1] https://gitlab.freedesktop.org/wayland/weston/issues/277
> > > [2] https://gitlab.freedesktop.org/daniels/westiny/blob/master/westiny.c
> >
> > Hi,
> >
> > It may be because of the client's "window geometry"[1]. There may be
> > some drop shadows or otherwise transparent border around the client's
> > contents, and the window geometry will tell you which part of the
> > surface you should consider to be the client's contents.
> >
> > If you'll excuse the terrible ASCII drawing:
> >
> > (0,0)
> > +---------------+ <--- Surface
> > | (32,32)       |
> > |  +---------+<------- Geometry
> > |  |         |# |
> > |  |         |# |
> > |  |         |# |
> > |  +---------+# |
> > |  ############ |
> > +---------------+
> >
> > When a client is maximized or fullscreened, they're asked to not draw
> > these kinds of things, and should fill the entire surface with their
> > window's contents.
> >
> > weston_desktop_surface_get_geometry is the function you call to get this
> > information.
> >
> > Scott
> >
> >
> > [1]:
> > https://gitlab.freedesktop.org/wayland/wayland-protocols/blob/master/stable/xdg-shell/xdg-shell.xml#L445-476
> >
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/wayland-devel


More information about the wayland-devel mailing list