Revision history for Changes
0.41 2013/12/19 19:17:07
[CHANGES]
* Allow cursors to be entirely hidden on a Window
* Return $text width in columns from $rb->text and $rb->text_at
* Document that Tickit::Style->load_style* are methods, not functions
(RT89235)
[BUGFIXES]
* Fix for T:W:Box - set 'dir' of T:WR:Alignable, not 'style'
* Fix double-nested container focus management
0.40 2013/09/29 19:08:09
[CHANGES]
* New size model; ->requested_{size,lines,cols} which cache
* Lazy $parent->resize only when required
* Updated all examples/docs for new ->render_to_rb
* Print a legacy deprecation warning when constructing a
->render-based widget
* Allow Styled widgets to copy their base class
* Allow HBox/VBox to take a 'children' ARRAY to constructor
[BUGFIXES]
* Specify minimum required version of Alien::libtermkey to get
libtermkey >= 0.16
* Need to force TERM=xterm during sequence testing
0.39 CHANGES:
* Default expose_after_scroll true
* Don't ->resize a ::Static if its size hasn't actually changed
* Allow $win->scrollrect to take a Tickit::Rect instead of 4 ints
* Added $win->scroll_with_children
BUGFIXES:
* Fix for libtickit ICH/DCH
* Bundled libtickit bugfixes:
+ Implement tickit_term_scrollrect ICH/DCH correctly
**NOTE**: These changes will break Tickit::Widget::Entry prior to
Tickit-Widgets version 0.11, and so will need updating.
0.38 CHANGES:
* Added 'drag_stop' and 'drag_outside' mouse events
* More helpful error message if Tickit::Term constructor fails
* Support multiple mouse tracking modes in latest libtickit
* Bundled libtickit updates:
BUGFIXES:
* Disable experimental smartmatch warnings on recent perls
* Fixed examples/demo-dragndrop.pl for recent API changes
* Avoid GNU C99 anonymous unions in RenderBuffer cell struct
(RT87724)
* Bugfix to MockTerm's ICH/DCH emulation of horisontal scrollrect
0.37 CHANGES:
* Allow Style files to use :: in widget type names
* Added an experiment to test making child window list changes
asynchronously "later"
BUGFIXES:
* API fixes in demos
* Recognise (and truncate) non-integer cursor positions to
RenderBuffer
* Ensure that RenderBuffer->setpen can alter already-set attributes
0.36 CHANGES:
* Added bounds arguments to $rect->linerange
* Added $rb->eraserect
* Updated *Box container widgets to use ->render_to_rb
BUGFIXES:
* Avoid calling $win->clear when using ->render_to_rb
* Handle $rb->text entirely outside of clipping region
0.35 CHANGES:
* Give the terminal up to 100msec to initialise before running
* Added ContainerWidget->find_child and ->focus_next
* Implement Tab/Shift-Tab as focus movement keys
* Added style_redraw_keys
* Keybindings from Style
* Added ->render_to_rb alternative to ->render method
BUGFIXES:
* Clean up focus chain when removing a child window that has focus
* Make sure that RenderBuffer stores UTF-8 text bytes
0.34 CHANGES:
* Added timeout to Term->input_wait
* Added Tickit->timer
* Many internal updates to Window focus code
* Added Window->cursor_at, ->cursor_shape and ->take_focus
* Added Widget focus integration, including automatic ':focus' style
tag
* Added Window->subwindows
0.33 CHANGES:
* Added Tickit::RenderBuffer; a renamed copy of Tickit::RenderContext
from CPAN. Re-implemented more in XS/C code
* Removed Tickit::WidgetRole::Borderable
* Added 'bool' override for pens, rects and windows, because they are
all always true
0.32 CHANGES:
* Allow widgets to declare style keys to cause ->reshape calls
* Allow Windows to be re-ordered within their parent, better document
the behaviour of Window ordering
* Handle mouse drag/drop events at the rootwin level
* Pass key/mouse event arguments as a structure as well as positional
arguments
* Implement HBox/VBox spacing as style keys
* Wrap tickit_term_getctl_int()
* Bundled libtickit updates:
+ Down-convert colours to 8 or 16 colour palettes when on non-
256color-aware terminals
0.31 CHANGES:
* Define the behaviour of Tickit::Style on subclasses, allowing for
transparent or independent subclass types
* Declare the particular version of Alien::unibilium required
* Split pens into mutable and immutable forms; deprecate ->clone
method
* Added $pen->equiv and ->equiv_attr comparison methods
0.30 CHANGES:
* Allow modification of widget direct-applied style
* Split Tickit::Pen into mutable and immutable subclasses
* Return immutable pens from Tickit::Widget style
* Cache style pens
* Added opt-in optional feature to set widget pen from default
style pen
* Use default style pen as widget pen in built-in widget classes
* Pass keyboard modifier state through to key/mouse event handlers
* Avoid floating-point in Tickit::Utils::distribute()
* Avoid a memory leak bug in Tickit::Pen and Tickit::Term XS code
* Set TERM=xterm for whole-system unit testing so we get reliable
terminal initialisation sequence
* Bundled libtickit updates:
+ Split implementation of real xterm and other terminfo-driven
terminal drivers
+ Now requires unibilium for the terminfo-driven driver
* Currently requires unibilium version v1.1.0, which can be found at
https://github.com/mauke/unibilium
0.29 CHANGES:
* Added Tickit::Style, and the ability to set state-sensitive style
information on widgets
* Added on_click event to Tickit::Widget::Static
* Redraw a widget after pen change
* Added Tickit::Utils::distribute()
* Improvements and modifications to the way ContainerWidget works
+ can ->set_child directly
+ more abstract container logic that doesn't enforce an ordering
+ just stores per-child options
* Return a Tickit::StringPos from $win->erasech
* Abort if $win->print is given non-Unicode text
* Warn if CLEAR_BEFORE_RENDER is still set
0.28 CHANGES:
* Added $window->close method
* Make FLOAT_ALL_THE_WINDOWS behaviour default
BUGFIXES:
* Ensure HBox can handle out-of-space
* Correctly convert mouse wheel direction in args hash
0.27 BUGFIXES:
* Important bugfix to bundled libtickit:
+ Fix resize logic in tickit_rectset_add() so it doesn't grow
the object arbitrarily until it fails
VERSION 0.26 IS CRITICALLY BROKEN. DO NOT USE IT.
0.26 CHANGES:
* Re-implement Tickit::RectSet as a libtickit-backed object
* Expose Tickit::Term->setctl_{int,str} methods
* New Tickit::Term->bind_event API
0.25 CHANGES:
* Removed Tickit::Widget::Frame and Tickit::Widget::Box, now they
have been moved to Tickit-Widgets dist.
* Added a new, better idea for Tickit::Widget::Box
* Allow Tickit->new( root => ... )
* Re-implement Tickit::Rect as a libtickit-backed structure object
0.24 CHANGES:
* Many improvements to Window scroll logic; allow scroll with
terminal scrollrect even with obscuring floats
* Added Rect->add and ->subtract methods
* Added RectSet->subtract method
BUGFIXES:
* Correctly adjust pending window damage after ->scrollrect
0.23 CHANGES:
* Many improvements to Window float logic; beginning of merging float
and non-float implementations
* Added $win->bottom and $win->right
0.22 CHANGES:
* Window focus in/out events, $win->is_focused accessor
* Added Tickit::RectSet object class
* Allow Window to store a set of expose regions rather than just a
boolean flag
* Added Window expose-after-scroll behaviour
0.21 CHANGES:
* Wrap tickit_string_count and tickit_string_countmore; provide a
Tickit::StringPos counter object
* Have $win->print return a Tickit::StringPos
BUGFIXES:
* Don't use_ok Tickit::Widget::Entry
0.20 CHANGES:
* Allow $win->goto outside of its edges, apply clipping
* Removed Tickit::Widget::Entry; now found in the Tickit-Widgets
distribution
* Updated for latest libtickit
BUGFIXES:
* Ensure that Static widgets with empty text still behave correctly
* Fix test skip counts in t/02utils.t
0.19 CHANGES:
* Allow multi-line Static text
* Added a stringification overload to Pen to make unit testing easier
BUGFIXES:
* Better terminal flushing
* Force TERM=xterm during t/0term-output.t
0.18 CHANGES:
* Re-implement Term and Pen in XS/C using libtickit (bundled source
pkg-config driven build)
* Defined a new Tickit::WidgetRole::Penable
* Added $rect->linerange
* Added $win->clearrect
* Added $win->make_popup to create on-top floating input-stealing
Windows
BUGFIXES:
* Disallow $win->scrollrect if there are any floating windows in the
way
* Perform $win->erasech with the entire pen in case 'rv' is set
0.17 CHANGES:
* $win->hide, $win->show and the concept of hidden windows
* $win->make_float and the concept of floating windows
* A better clipping model to handle the above
* $pen->hasattr
* Tickit::Test::drain_termlog()
* Set the CANON_DELBS termkey flag in case of misconfigured terminals
* Make $tickit->stop a user-visible method
BUGFIXES:
* Ensure Tickit::Widget::Entry keybindings consume key press events
* Ensure Tickit::Widget::Static->set_text actually calls ->redraw
* Pass UTF8 => 1 to unit tests that test Unicode functionality
0.16 CHANGES:
* Represent mouse wheel events as 'wheel'/'up' or 'wheel'/'down'
* Fix argument order for Tickit::Rect->translate
* Allow $term->chpen/->setpen to take a Tickit::Pen object
* Added Pen->clone, ->copy_from and ->default_from methods
* Deprecated the pen attribute list returning methods of
Tickit::Window
BUGFIXES:
* Account for inter-child spacing when calculating minimum size
requirements for Tickit::Widget::{H,V}Box
0.15 CHANGES:
* $term->eraseline is now removed
* Provide a $tickit->tick method to finer-grained event handling
* Removed Tickit::RootWindow; the root window is now a regular
Tickit::Window
BUGFIXES:
* Force terminal size in t/80tickit.t so it doesn't cause failures on
oddly-sized terminals
0.14 CHANGES:
* $term->insertch and ->deletech are now removed
* Move key input behaviours into Tickit::Term; many other
refactorings between Tickit and Tickit::Term
* Renamed $tickit->start / ->stop to ->setup_term / ->teardown_term
0.13 CHANGES:
* Allow Widget subclasses to disable the clear-before-render
behaviour
* Avoid harmless warning about undef during global destruction
BUGFIXES:
* Skip Unicode-requiring tests unless we know we have a Unicode-aware
locale
0.12 CHANGES:
* Pass an opaque 'id' value through Pen->add_on_changed into
$observer->on_pen_changed
* Extend is_display() unit testing function to allow asserting pen
attributes as well as text-on-display
* Rewrote many unit tests to use only is_display() and not
is_termlog()
* Deleted now-deprecated Window methods of ->penprint, ->insertch and
->deletech
0.11 CHANGES:
* Allow Windows to be created overlapping their parent boundaries;
clip output - Work In Progress, so far only handles ->print and
->erasech, not the scrolling operations
* Represent on-screen rectangles as first-class Tickit::Rect object,
pass a 'rect' argument to Window on_expose event
* More diagnostic output from Tickit::Test::is_termlog failures
* Support (rarely-used) strikethrough pen attribute
* No longer depends on Term::TermKey::Async unnecessarily
0.10 CHANGES:
* Use Perl's ${^UTF8LOCALE} to detect UTF-8ness rather than relying
on libtermkey's flags. Avoids fragile dependency
* Use Term::TermKey 0.09's EINTR ability to simplify the main run
loop
* Split Tickit::Async out into its own distribution
0.09 CHANGES:
* Move IO::Async-based code out of Tickit into Tickit::Async,
reimplement a simple IO framework in Tickit itself.
* Added Window on_expose event that cascades down the Window tree
* Implement Widget drawing using Window on_expose events rather than
cascading logic down th Widget tree
* Print proper deprecation warnings from deprecated Window methods
penprint, insertch, deletech
0.08 CHANGES:
* More efficient XS implementation of low-level string length
handling utilities in Tickit::Util
* Allow forcing size of child widgets in Tickit::Widget::VBox and
::HBox
* Pass region information into Widget->render methods; even if
currently it is a fixed 0/0/$lines/$cols
* Accept a pen argmuent to Window->print; deprecate ->penprint
* Implement Window->scrollrect; deprecate ->insertch and ->deletech
* Print a deprecation warning if a plain Tickit object is used as an
IO::Async::Notifier
0.07 CHANGES:
* Provide (trivial) Tickit::Async subclass for users to prepare for
IO::Async split
* Try to find $TERM-specific subclass of Tickit::Term for terminal-
specific optimisations or abilities
* Support 256 colour xterm
* Unit test in more generic SCROLLRECT operation
BUGFIXES:
* Ensure Tickit::Test and Tickit::Test::MockTerm have a $VERSION
0.06 CHANGES:
* Shut down terminal state before $SIG{__DIE__}'ing
* Cope correctly with zero-sized children in {V,H,}Box and Frame
* Broadcast unhandled keypresses out to sibling windows around the
widget tree
* Neater unit testing functions
* Rearranged code to prepare for abstract/IO::Async split
0.05 CHANGES:
* Added mouse support
* Switchable insert/overwrite mode in Entry
* Markers at beginning/end of Entry to indicate scrolling
* Reduced API dependency on IO::Async; lazily construct a containing
Loop in ->run
* Reduced test-time dependency on IO::Async
* Export Tickit::Test as real code for out-of-distribution tests
* Miscellaneous bugfixes and improvements
0.04 CHANGES:
* Added Tickit::Widget::Frame and ::Box
* Support text scrolling in Entry
* Support renderable containers
* Updated Pen model; first-class objects, observers for updates
* Support high-intensity colours
* Entry->text_delete/_splice return the deleted text
0.03 CHANGES:
* Added Tickit::Widget::Entry
* Tickit::Pen as first-class object
* Support more pen attributes - reverse video, alternate font
0.02 CHANGES:
* Bind Ctrl-C to $loop->loop_stop by default
* Neater root widget and run API
* Added SYNOPSIS examples to most widget types; added examples/
directory
* Window 'on_key' event handling
* Keep cursor hidden unless it's on a focused window
0.01 First version, released on an unsuspecting world.