[Tickit-dev] Released: Tickit 0.30
Paul LeoNerd Evans
leonerd at leonerd.org.uk
Thu May 2 21:42:02 BST 2013
A lot of stuff happening lately. And also I haven't written one of
these for ages. I won't go into every detail, but here's a rundown of
the most interesting parts:
* Rect/RectSet are now C library based (0.26)
Fairly simple, no surprises here. C implementation means it's
available in C and other languages, and probably a bit faster in
actual use.
* New Term event binding API (0.26)
Rather than a single on_key/on_mouse/etc..., there is now just a
list of possible event handlers. Event handling subs don't have to
be restricted to a single event; each is registered with a bitmask.
This is done to more closely match the C API.
The existing Perl API of having a single on_* handler for each event
type is still supported, by wrapping the newer API.
* All windows are now FLOAT windows (0.28)
As was first suggested in 0.23, all the windows now use the new
float logic. The previous environment variable has now been removed.
This hopefully shouldn't actually affect anything as it's been the
default for a while now, but does simplify the code internals.
* $win->close and no more weak references (0.28)
Using weak references and relying on DESTROY works OK in some
circumstances in Perl, but won't scale to C and other languages, and
still makes for tricky logic. To this end, I've removed all the
weaken()ing and replaced it with an explicit ->close method to
remove a window. This also makes it much more robust in nontrivial
cases.
This change is mostly of interest to container widget developers, or
in more dynamic long-lived programs.
* Tickit::Style (0.29)
This one's the big main one of the list; in fact so bit I'll
probably write another mail. In summary; we now have something of a
first attempt at being able to separate out style from widget
implementations, in a way that's easy to add to application- or
user-specific style files. More on this later.
* Tickit::Pen now comes in mutable and immutable forms (0.30)
Since most pens don't get mutated, and Tickit::Style performs better
with cached pens, I've split the idea of a Pen into mutable and
immutable types. Tickit::Style returns immutable pens, so widgets
shouldn't attempt to mutate them.
Tickit::Pen->new itself still returns a mutable pen for now, but in
the future this may change; code that specifically wants a mutable
or immutable pen should use the appropriate subclass.
Also some changes in the underlying libtickit C library:
* Generic string/integer value termctl operations
Primarily provided to let the xterm driver set the window title,
etc..., but the general idea is something similar to ioctl(), so we
don't have to extend the API a thousand times just to add lots of
little options for specific terminals.
* Split xterm/TI-based driver model
To support more specific options in future, and also to give a
better (or more accurate) terminfo-based driver. There are now two
drivers, selected by the $TERM environment variable, so the
xterm-specific things can be done nicely, and still arrange for the
generic terminfo driver to work.
This also allows for other terminal-specific drivers in future, in
case we find those useful. Perhaps a Win32 console one too.
--
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: 198 bytes
Desc: not available
URL: <http://mail.leonerd.org.uk/pipermail/tickit-dev/attachments/20130502/d0cddcbd/attachment.sig>
More information about the Tickit-dev
mailing list