Part II. Custom widgets


38. Introduction
Public and implementation objects
Implementing a custom widget
39. Custom x::w::canvas
Horizontal and vertical metrics
Mixin templates
Drawing custom widgets
Scratch buffers
Overriding process_button_event()
40. Custom x::w::element widgets
Resizing a custom widget
41. Custom focusable x::w::element
Overriding keyboard_focus() and process_key_event()
Overriding elementObj::implObj's basic do_draw() method
Drawing the updated contents of a custom widget
Creating the standard input focus frame widget
Creating the standard input focus frame implementation object
The x::w::nonrecursive_visibilityObj template mixin
The x::w::always_visibleObj template mixin
The x::w::container_visibleObj template mixin
Creating the standard input focus frame public object
42. Custom x::w::container
The x::w::container_elementObj template mixin
Overriding pointer_focus()
43. Custom font rendering
Font collections
Theme font rendering
The x::themedim_elementObj template mixin.
Typical implementation of custom theme-aware custom widgets