Currently there is one flag:
- NO_STEAL_FOCUS
This is used in the toast daemon so toasts don't steal focus.
Other flags will be added in the future to control whether a window is
displayed when created, whether it should animate a particular way, etc.
This provides more understandable behavior when snapping off small
windows, ensuring the mouse doesn't hang way off to the side of the
window. It's not ideal for large windows, but it's at least reasonable
there, so it's an overall win.
Resize and drag cursors have been added.
These new cursor types are exposed in two ways:
- Window drag and resize will automatically use the resize cursors if
a cursor is enabled for the window.
- Clients can use new values for yutani_window_show_mouse to set the
current cursor type, or reset it to the previous normal or hidden
state.
The latter functionality is now used in the decoration library to
present the appropriate resize cursor when the mouse is hovered over the
decoration borders.
More cursor options may be added in the future.
Cursor themes will be added in the future as well.
Cursors are stored in /usr/share/cursor
The arrow cursor has been moved to /usr/share/cursor/normal.png
ADDENDUM: A critical heisenbug with window resizing has been fixed in
this commit involving a race with window dimensions and
potentially also buffers.
- Supports directional resizing, including restricted left/right/up/down
- Decoration-initiated resizing is now supported
- Details of how the decorator determines up-restricted resizing
still need some work.
- Corrected issues when attempting to resize to the other side of the
origin.
- Corrected some other compositor issues.
Yutani, glogin, and wallpaper now use timing information from the kernel
to perform animations. Some animation lengths have been adjusted. The
animations should run at the same speed, though with varying
"smoothness" across different hardware (including non-KVM emulators).
Window moves are non-lazy, so continuous updates are received while a
window is being dragged. Prior to this change, a client would not have
any idea where a window was outside of its own idea of when it last
requested a move (which may have been denied, or immediately overriden).
This allows applications to produce child windows in appropriate
locations, or to drag child windows (undocked toolbars, etc.) while they
are being moved.
This uses the same message format as the request format, as well as the
same message type, as has been previously done for various events.