[PATCH wayland-protocols 3/4 v2] xdg-shell: Add resize_x/y constrain adjustment to positioner

Jonas Ådahl jadahl at gmail.com
Mon Aug 15 08:17:36 UTC 2016


On Fri, Aug 12, 2016 at 12:19:20PM -0700, Bryce Harrington wrote:
> On Fri, Aug 12, 2016 at 12:44:49PM +0800, Jonas Ådahl wrote:
> > On Thu, Aug 11, 2016 at 09:35:57PM -0700, Bryce Harrington wrote:
> > > On Fri, Aug 12, 2016 at 11:56:13AM +0800, Jonas Ådahl wrote:
> > > > On Thu, Aug 11, 2016 at 08:49:01PM -0700, Bryce Harrington wrote:
> > > > > On Fri, Jul 29, 2016 at 12:04:55PM +0800, Jonas Ådahl wrote:
> > > > > > In order to get feedback of available space where a client can create
> > > > > > its popup, let it create requset that its popup rectangle being resized
> > > > > > would it not fit the within the work area. This adds two new constrain
> > > > > > adjustment values to the adjustment enum, and dimension parameters to
> > > > > > the xdg_popup.configure event.
> > > > > > 
> > > > > > The existing constrain adjustment actions take precedence, and resizing
> > > > > > will only be triggered if all other adjustments requested didn't manage
> > > > > > to make the popup rectangle fully visible.
> > > > > > 
> > > > > > Signed-off-by: Jonas Ådahl <jadahl at gmail.com>
> > > > > > Acked-by: Quentin Glidic <sardemff7+git at sardemff7.net>
> > > > > > ---
> > > > > > 
> > > > > > Chances since v1: none
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > >  unstable/xdg-shell/xdg-shell-unstable-v6.xml | 40 +++++++++++++++++++++-------
> > > > > >  1 file changed, 30 insertions(+), 10 deletions(-)
> > > > > > 
> > > > > > diff --git a/unstable/xdg-shell/xdg-shell-unstable-v6.xml b/unstable/xdg-shell/xdg-shell-unstable-v6.xml
> > > > > > index 2c8f636..ef45ff4 100644
> > > > > > --- a/unstable/xdg-shell/xdg-shell-unstable-v6.xml
> > > > > > +++ b/unstable/xdg-shell/xdg-shell-unstable-v6.xml
> > > > > > @@ -249,6 +249,19 @@
> > > > > >      </request>
> > > > > >  
> > > > > >      <enum name="constrain_adjustment" bitfield="true">
> > > > > > +      <description summary="constraint adjustments">
> > > > > > +	The constrain adjustment value define ways the compositor will adjust
> > > > > > +	the position of the surface, if the unadjusted position would result
> > > > > > +	in the surface being partly constrained.
> > > > > 
> > > > > "constraint adjustment" maybe?
> > > > 
> > > > Isn't 'constraint' the noun, and 'constrain' the verb? What I mean is
> > > > the adjustment done while constraining. I'm not a native speaker, so I
> > > > suppose you'd know what to use better.
> > > 
> > > Yeah I'm not sure, Yong might have a better idea.  But "constrain
> > > adjustment" doesn't sound right to my ears.
> > > 
> > > Googling, I see the phrasing "constraint adjustment" and "constrained
> > > adjustment", but not "constrain adjustment".
> > > 
> > > Poking through the google results, "constraint adjustment" are
> > > adjustments that implement different types of constraints.  "Constrained
> > > adjustments" are types of adjustments which are constrained (as opposed
> > > to "free adjustments" that are not constrained).  So maybe "constraint
> > > adjustment" might be the right terminology here, but I'm not certain.
> > > 
> > > Also I think you can just say, "constraint adjustment" rather than
> > > "constraint adjustment value".
> > 
> > Maybe thats better than. Do you mean the request name or just the
> > documentation should be updated, if we decide something other than
> > 'constrain adjustment' should be used.
> 
> I'm only suggesting the documentation be corrected.  If the request name
> also can be updated to be consistent that would be ideal, if it doesn't
> break the API.
>  
> > CC:ing Yong for some grammar input.
> > 
> > > 
> > > > > > +	What a constrained surface means is compositor specific, but it could
> > > > > > +	for example be partly outside of the work area of a monitor.
> > > > > 
> > > > > I'm not sure what this sentence means.
> > > > 
> > > > What I try to communicate is that what a 'constrained' surface is an
> > > > implementation detail.  Commonly 'constrained' means to be partly
> > > > outside of the work area (monitor region excluding panel etc), while
> > > > unconstrained completely within that work area. Do you have a better
> > > > suggestion?
> > > 
> > > Ah, I think I get it now.
> > > 
> > > Whether a surface is considered 'constrained' is left to the compositor
> > > to determine.  For example, the surface may be partly outside the
> > > compositor's defined 'work area', thus necessitating the child surface's
> > > position be adjusted until it is entirely inside the work area.
> > 
> > Right. Its meant to be a compositor implementation detail so that we can
> > do crazy things like 3D compositors where 'unconstrained' might mean its
> > "inside a wall in the 3D space", or "infinite work areas" where nothing is ever
> > unconstrained.
> 
> Ok, sounds good.  So I'd suggest using the text I wrote there, I think
> that might be a bit clearer.

Landed this one with the adjustment you suggested. Thanks.


Jonas

> 
> Bryce
> 
> > Jonas
> > 
> > > 
> > > > > > +	Multiple constrain adjustment values can be combined, in which case
> > > > > > +	they have a defined precedence. The order of adjustments is: flip,
> > > > > > +	slide then resize.
> > > > > 
> > > > > 	The adjustments can be combined, according to a defined
> > > > > 	precedence: 1) Flip, 2) Slide, 3) Resize.
> > > > 
> > > > Thanks, thats better.
> > > > 
> > > > 
> > > > Jonas
> > > 
> > > Bryce
> > > 
> > > > > 
> > > > > > +      </description>
> > > > > > +
> > > > > >        <entry name="none" value="0">
> > > > > >  	<description summary="don't move the child surface when constrained">
> > > > > >  	  Don't alter the surface position even if it is constrained on some
> > > > > > @@ -268,8 +281,6 @@
> > > > > >  	  x axis until either the edge in the direction of the gravity is
> > > > > >  	  unconstrained or the edge in the opposite direction of the gravity is
> > > > > >  	  constrained.
> > > > > > -
> > > > > > -	  If 'slide_x' is combined with 'flip_x', 'flip_x' takes precedence.
> > > > > >  	</description>
> > > > > >        </entry>
> > > > > >        <entry name="slide_y" value="2">
> > > > > > @@ -285,8 +296,6 @@
> > > > > >  	  y axis until either the edge in the direction of the gravity is
> > > > > >  	  unconstrained or the edge in the opposite direction of the gravity is
> > > > > >  	  constrained.
> > > > > > -
> > > > > > -	  If 'slide_y' is combined with 'flip_y', 'flip_y' takes precedence.
> > > > > >  	</description>
> > > > > >        </entry>
> > > > > >        <entry name="flip_x" value="4">
> > > > > > @@ -297,9 +306,8 @@
> > > > > >  	  'left', change the gravity to 'right' and the anchor to 'right'.
> > > > > >  
> > > > > >  	  If the adjusted position also ends up being constrained, the resulting
> > > > > > -	  position will be the one before the adjustment. If the resulting
> > > > > > -	  position is still constrained, and 'flip_x' is combined with
> > > > > > -	  'slide_x', the position is adjusted according to 'slide_x'.
> > > > > > +	  position of the flip_x adjustment will be the one before the
> > > > > > +	  adjustment.
> > > > > >  	</description>
> > > > > >        </entry>
> > > > > >        <entry name="flip_y" value="8">
> > > > > > @@ -310,9 +318,19 @@
> > > > > >  	  'bottom', change the gravity to 'top' and the anchor to 'top'.
> > > > > >  
> > > > > >  	  If the adjusted position also ends up being constrained, the resulting
> > > > > > -	  position will be the one before the adjustment. If the resulting
> > > > > > -	  position is still constrained, and 'flip_y' is combined with
> > > > > > -	  'slide_y', the position is adjusted according to 'slide_y'.
> > > > > > +	  position of the flip_y adjustment will be the one before the
> > > > > > +	  adjustment.
> > > > > > +	</description>
> > > > > > +      </entry>
> > > > > > +      <entry name="resize_x" value="16">
> > > > > > +	<description summary="horizontally resize the surface">
> > > > > > +	  Resize the surface horizontally so that it is completely
> > > > > > +	  unconstrained.
> > > > > > +	</description>
> > > > > > +      </entry>
> > > > > > +      <entry name="resize_y" value="32">
> > > > > > +	<description summary="vertically resize the surface">
> > > > > > +	  Resize the surface vertically so that it is completely unconstrained.
> > > > > >  	</description>
> > > > > >        </entry>
> > > > > >      </enum>
> > > > > > @@ -1039,6 +1057,8 @@
> > > > > >  	   summary="x position relative to parent surface window geometry"/>
> > > > > >        <arg name="y" type="int"
> > > > > >  	   summary="y position relative to parent surface window geometry"/>
> > > > > > +      <arg name="width" type="int" summary="window geometry width"/>
> > > > > > +      <arg name="height" type="int" summary="window geometry height"/>
> > > > > >      </event>
> > > > > >  
> > > > > >      <event name="popup_done">
> > > > > > -- 
> > > > > > 2.7.4
> > > > > > 
> > > > > > _______________________________________________
> > > > > > 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