[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