[Tickit-dev] Released: Tickit 0.08, Upcoming Plans

Paul LeoNerd Evans leonerd at leonerd.org.uk
Sun Jul 24 21:18:30 BST 2011


Seems I haven't written a release announcement in a while, so here's the
changes in 0.08, since the last mail at 0.05. I won't list every change,
just highlight some of the more important bits.

Tickit 0.08:
 * More efficient XS implementation of low-level string length handling
   utilities in Tickit::Util

   These XS versions are now much more efficient than the Pure Perl ones
   (see also
     http://leonerds-code.blogspot.com/2011/07/xs-beats-pure-perl.html)

 * Pass region information into Widget->render methods; even if currently
   it is a fixed 0/0/$lines/$cols

   This gives a way for render methods to redraw only parts of the
   Window that require it. While it isn't currently provided yet, methods
   should make use of this information anyway, because this will be
   provided in a future version. More on this later...

 * Implement Window->scrollrect; deprecate ->insertch and ->deletech
 
   insertch and deletech depend on knowing where the cursor is, and only
   make sense when the Window extends all the way to the RHS of the
   screen. Some terminals may be able to provide better, so by making
   Widgets use scrollrect, we give the terminal the chance to support it
   more generally.

Tickit 0.07:
 * Provide (trivial) Tickit::Async subclass for users to prepare for
   IO::Async split

   Anything that tries to treat a Tickit object as an IO::Async subclass
   should instead use Tickit::Async. Currently this is a trivial
   subclass, but next release or so will start to move the logic around,
   for an eventual split between a Tickit distribution and a separate
   Tickit::Async.

 * Try to find $TERM-specific subclass of Tickit::Term for terminal-specific
   optimisations or abilities
 * Support 256 colour xterm

   By borrowing a similar trick to Class::ByOS, Tickit will try to
   instantiate a Tickit::Term::$ENV{TERM} object, if possible, falling
   back on the generic Tickit::Term if not. The distribution ships with
   a subclass for xterm, which provides extra 256-colour support. In
   future I expect this will also provide truely arbitrary scrollrect
   handling, by use of the DECCRA and DECERA sequences that xterm
   supports.

Tickit 0.06:
 * Cope correctly with zero-sized children in {V,H,}Box and Frame

   Ensures that small or zero-sized children are rendered correctly,
   rather than crashing the program.

 * Broadcast unhandled keypresses out to sibling windows around the
   widget tree

   Allows for such logic as a Scroller widget near to an Entry widget to
   respond to PageUp/PageDown keys while the Entry widget has focus.
   Currently used by the still-in-progress circle-fe-term.

-----

And now to some upcoming plans.

 * Give Window an 'on_expose' event, which passes a region.

 * Since Window keeps a list of all its child windows, to pass mouse
   events down the window chain, it will be able to pass an on_expose
   into all the appropriate child windows as well.

 * Have the Widget that owns a Window hook the 'on_expose' event, and
   use it to call the render method passing in the region hints.

 * Use this new expose event chain as the primary way that Widgets get
   redrawn, retiring the current redraw logic.

 * Allow Windows to be constructed that aren't just subregions of their
   parents; clip drawing operations off the boundaries.

 * Consider how to build layered windows; child windows that obscure
   content from their parent. Possibly allow floating pop-up windows,
   for menus and so on.

-- 
Paul "LeoNerd" Evans

leonerd at leonerd.org.uk
ICQ# 4135350       |  Registered Linux# 179460
http://www.leonerd.org.uk/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 190 bytes
Desc: Digital signature
URL: <http://mail.leonerd.org.uk/pipermail/tickit-dev/attachments/20110724/e79f53e9/attachment.pgp>


More information about the Tickit-dev mailing list