[Tickit-dev] Released: Tickit 0.44
Paul "LeoNerd" Evans
leonerd at leonerd.org.uk
Mon Apr 7 16:26:23 BST 2014
Shortly following the recent Tickit 0.43, here's what's new in 0.44:
* Whole-tree window rendering with a single RenderBuffer instance
Long-awaited and now in place finally; this offers a big speed boost
to normal rendering operations. All the window overlapping test
logic is now performed by the RenderBuffer, implemented in C, by
using its ->mask() ability, rather than being in the span visibility
check logic in Window, in Perl.
The future direction of this code is now that $rb->flush_to_window
should go away, and eventually so too will the Window direct output
methods. At this point all the rendering logic will be in C, so the
RenderBuffer implementation can move to the libtickit C library.
* Window focus notifications for child windows
Windows can now optionally inform the on_focus callback of changes
in focus related to child widgets; being informed when the focus
chain enters or exits that window. This is mostly used to implement
the next feature...
* ContainerWidget :focus-child style tag
The ContainerWidget subclass now has a style tag, :focus-child,
which is active whenever a any descendent widget within the
container has input focus. This can be used for highlighting frames,
for instance.
* Smarter ContainerWidget logic for containers with hidden children
A couple of related changes. focus_next now only considers child
widgets with visible windows, it will skip over hidden windows. Also
ContainerWidget can now provide a different method for focus_next to
list its children. This is primarily aimed at T:W:Tabbed.
* Tickit::Debug
Largely intended for me to help debugging internal logic, this might
also be useful to Widget developers as well. It's not linked from
any of the other docs as it's still an "internal" feature, but it
can be found directly by its CPAN link
https://metacpan.org/pod/Tickit::Debug
* Key/mouse event modifier bitmask shortcuts
To avoid putting "magic constants" in code, or importing them from
Term::TermKey, the $ev structure now has three shortcut methods
->mod_is_shift, ->mod_is_ctrl, ->mod_is_alt.
Deprecations in 0.44, as promised:
* Non-with_rb expose callbacks
* Non-with_ev key/mouse callbacks
* Direct use of the "first position" field in event-structured
key/mouse events with overridden "->type" method
Next directions:
* Fix Tickit::Widget::Tabbed on CPAN to actually be a ContainerWidget,
now that the focus logic will be acceptable.
* Once all the container widgets are using the new ->requested_size
method, the next steps of the new Widget size model can be taken.
This will involve adding more Widget-level properties to control
minimum/maximum sizing requirements, that all the container widgets
will then obey.
See also the previous email (Tickit 0.43 release announcement) for
more detail.
--
Paul "LeoNerd" Evans
leonerd at leonerd.org.uk
http://www.leonerd.org.uk/ | https://metacpan.org/author/PEVANS
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 230 bytes
Desc: not available
URL: <http://mail.leonerd.org.uk/pipermail/tickit-dev/attachments/20140407/40a82d8f/attachment.sig>
More information about the Tickit-dev
mailing list