Duing the the discussion about annoying page flipping during
interactive move Thomas said that he switched it off because it
was annoying and that the pages then felt like disconnected
desktops.

This is precisely true and matches my own opinion.  Fvwm should be
better than that.  The big, paged virtual desktop should not feel
like disjoint desktops but like a big sketch block with plenty of
space.

=> Make crossing the page boundaries easier and intuitive without
   being annoying.

Situation:  At the moment, interactive move with the mouse feels
awkward.  Pushing windows past the page edge often fails because
the pointer hits the edge and cannot move further.  It's annoying
and uncomfortable.  The "pointer hits page border" this is a real
show stopper.

--

This is the idea (working title "elastic paging"):

1. When an interactive move starts:

    - Replace the pointer with an invisible one.
    - Warp the pointer to the middle of the screen.  There it can
      always be moved in all directions.
    - If the pointer gets too close to the page edges, warp it back
      to the middle of the screen.
    - At the end of the move, warp it back to the original
      position relative to the window.
   (- Maybe a fake cursor can be drawn at the original position so
      that the user does not get confused.)

   Note: Its then possible to move a window any distance without
   releasing the pointer.

   Note 2: As a side effect, windows can also be pushed over the
   desktop borders (maybe enforce that at least a couple of pixels
   remain visible).

2. Remove timed paging during interactive move completely
   (EdgeMoveDelay style)

3. Instead, when you push the original pointer position off page
   the viewport automatically starts scrolling to keep that
   position (the fake pointer) visible.

   Think of the current viewport position being connected with the
   original one with a rubber band:  If you change you mind and
   move the window back towards its original position, the viewport
   also moves back, relaxing the rubber band.

   (When windows on other pages become visible, snapattraction
   automatically allows to snap to them.)

4. When the move ends, the window is placed and the viewport snaps
   back to a full page.  It may be a bit tricky to choose the
   proper page automatically.  It's easy if the window has
   completely moved to another page, but what if it's stuck between
   two or even four pages?

5. Visual feedback (optional)

    - If the viewport jumps use some kind of smooth animation.
      This may be especially important if the viewport snaps to a
      full page when the move ends.

    - See how the fake pointer can be implemented.

    - Add a new "activity" colour to window decorations.  This
      colour may be used while a long running action affects a
      window (interactive move/resize etc.).

    - The "activity" colour could also be used when a window
      border hits the page edge during an interactive move.  Say,
      if the window is already at the edge and you keep "pushing",
      that border uses the "activity" colour to indicate that
      something is happening.

6. Future

    - Also do something about interactive resize.
    - If elastic paging works nicely, it should become the default
      behaviour.  To disable it, you have to turn it off
      explicitly - an empty config still has it on.


Ciao

Dominik ^_^  ^_^

--

Dominik Vogt

Reply via email to