On Thu, 31 Aug 2017 16:18:03 +0000 Mike Blumenkrantz
<michael.blumenkra...@gmail.com> said:

> Not all user complaints are items that we should rush to address by adding
> null checks.
> 
> This change, for example, has significant downsides:
> * causes new/unwanted pointer warping after pointer-initiated operations
> * causes new/unwanted pointer warping after menu uses
> * causes new/unwanted pointer warping after applying a window remember
> 
> In all cases except the case where the user is using click focus and does
> one of (move to desk from menu | pager drag | specific move client to desk
> action) this is broken. It seems much better to just handle those specific
> cases.

that's a LOT of cases to check:

 2:16PM ~/C/e ⎇ master █▓░ git grep e_client_desk_set | wc -l
52

> On Thu, Aug 31, 2017 at 2:51 AM Carsten Haitzler <ras...@rasterman.com>
> wrote:
> 
> > On Wed, 30 Aug 2017 14:27:09 +0000 Mike Blumenkrantz
> > <michael.blumenkra...@gmail.com> said:
> >
> > > On Wed, Aug 30, 2017 at 3:14 AM Carsten Haitzler <ras...@rasterman.com>
> > > wrote:
> > >
> > > > raster pushed a commit to branch master.
> > > >
> > > >
> > > >
> > http://git.enlightenment.org/core/enlightenment.git/commit/?id=418319fc942a2c9204c8ec1d3d9e9bb1bbfb83fa
> > > >
> > > > commit 418319fc942a2c9204c8ec1d3d9e9bb1bbfb83fa
> > > > Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
> > > > Date:   Wed Aug 30 16:13:50 2017 +0900
> > > >
> > > >     e client focus - fix focus if moving focused window to new desk
> > > >
> > > >     if the window being moved to a new desktop is focused, then ensure
> > > >     after the move to restore focus to the last focused in the focus
> > stack
> > > >     for this desk to something stays focused.
> > > >
> > > >     @fix
> > > >
> > >
> > > What scenario is this attempting to resolve? There are cases where
> > moving a
> > > focused client off the active desk should not result in another client
> > > being focused.
> >
> > when a user actively moves a focused window off the current desk to
> > another they
> > end up with zero windows focused (when other windows still are on the
> > desktop).
> > complaint directly from user. move by pager. by menu. by action as some of
> > the
> > paths at least.
> >
> > > > ---
> > > >  src/bin/e_client.c | 6 ++++++
> > > >  1 file changed, 6 insertions(+)
> > > >
> > > > diff --git a/src/bin/e_client.c b/src/bin/e_client.c
> > > > index d3dc6bdef..414220422 100644
> > > > --- a/src/bin/e_client.c
> > > > +++ b/src/bin/e_client.c
> > > > @@ -2805,6 +2805,7 @@ e_client_desk_set(E_Client *ec, E_Desk *desk)
> > > >  {
> > > >     E_Event_Client_Desk_Set *ev;
> > > >     E_Desk *old_desk;
> > > > +   Eina_Bool was_focused = ec->focused;
> > > >
> > >
> > > This is a forward null dereference and will create a new coverity issue.
> > >
> > >
> > > >
> > > >     E_OBJECT_CHECK(ec);
> > > >     E_OBJECT_TYPE_CHECK(ec, E_CLIENT_TYPE);
> > > > @@ -2872,6 +2873,11 @@ e_client_desk_set(E_Client *ec, E_Desk *desk)
> > > >               e_client_res_change_geometry_restore(ec);
> > > >               ec->pre_res_change.valid = 0;
> > > >            }
> > > > +        if (was_focused)
> > > > +          {
> > > > +             E_Client *ec_focus = e_desk_last_focused_focus(old_desk);
> > > >
> > >
> > > This function already performs a focus set where possible.
> > >
> > >
> > > > +             if (ec_focus) e_client_focus_set_with_pointer(ec_focus);
> > > >
> > >
> > > Manually forcing focus after the above function guarantees more focus
> > bugs,
> > > see 81a797a0fa1dbe3c979c97351b714e4b5a8024ee.
> > >
> > >
> > > > +          }
> > > >       }
> > > >
> > > >     if (ec->stack.prev || ec->stack.next)
> > > >
> > > > --
> > > >
> > > >
> > > >
> > > Overall, it seems to me like this is not an ideal change and that focus
> > > setting should be performed independently of this function in order to
> > > avoid creating more bugs.
> > >
> > ------------------------------------------------------------------------------
> > > Check out the vibrant tech community on one of the world's most
> > > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> > > _______________________________________________
> > > enlightenment-devel mailing list
> > > enlightenment-devel@lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> > >
> >
> >
> > --
> > ------------- Codito, ergo sum - "I code, therefore I am" --------------
> > The Rasterman (Carsten Haitzler)    ras...@rasterman.com
> >
> >
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> 


-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler)    ras...@rasterman.com


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to