Part II. Custom widgets


37. Introduction
Public and implementation objects
Implementing a custom widget
38. Custom x::w::canvas
Horizontal and vertical metrics
Mixin templates
Drawing custom widgets
Scratch buffers
Overriding process_button_event()
39. Custom x::w::element widgets
Resizing a custom widget
40. 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
41. Custom x::w::container
The x::w::container_elementObj template mixin
Overriding pointer_focus()
42. Custom font rendering
Font collections
Theme font rendering
The x::themedim_elementObj template mixin.
Typical implementation of custom theme-aware custom widgets