[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