This method incorrectly calculates the position of checkboxes in the listbox content area. It uses the formula `new_where.second * item_h + header_visible_px()` to calculate the number of pixels between the top of the viewport and a checkbox.
The problem is that when the first visible item is only partially visible, `new_where.second * item_h` produces an excess of pixels equal to the vertical segment of the first visible item that is not in the viewport. This excess value produces a downward displacement of the calculated checkbox position, so it must be accounted for in the aforementioned formula.
This problem occurs because at some point, the library switched from scrolling in item-sized increments to smooth scrolling (in older versions, it used to be that it was impossible for an item to be only partially visible).
Relevant thread: http://nanapro.org/en-us/forum/index.php?u=/topic/1227/ggnana-listbox-with-a-check-box-for-each-list-item#post-3359
When a tab is deleted using `tabbar::erase`, `trigger::erase` is called. This function does not call `API::refresh_window` if the tab was erased successfully (unlike `trigger::tab_color`, `trigger::tab_image`, etc.), thus the tab is still visible until an interaction is made (like mouse click on `tabbar`).
fixed bug in dock_pane caption drawing function (used a workaround that hide the caption when the dock_pane width become too small)
fixed small bug in toolbar
Calling listbox::sort_col to change the sort column doesn't update the viewport to reflect the change, forcing the user to call API::refresh_window or otherwise perform stupid tricks to force the listbox to refresh.
impl_->set_expanded() was called unconditionally, even if the node had no children. This caused the node icon to change to the "expanded" icon if the node had an icon scheme, even when the node didn't have children.
Because Hangul is a combination character, WM_IME_STARTCOMPOSITION is only called once when the IME input is started, so the position of the composition window is strange.
Therefore, I solved the problem by controlling the state of characters combined using WM_IME_COMPOSITION and WM_IME_CHAR.
We have also improved to support other IME languages such as Chinese and Japanese.
Added function/method both to toolbar and item_proxy:
void textout(size_type index, bool show); ///< Show/Hide the text inside the button
Before: button without image weren't display
Now: button without image is display as empty square. In case the textout is on the text is show
Following functions/methods have been add both to toolbar and item_proxy:
bool istoggle() const; ///< Returns true if the tool style is toggle.
bool toggle() const; ///< Gets the tool toggle state (only if tool style is toggle).
item_proxy& toggle(bool toggle_state); ///< Sets the tool toggle state (only if tool style is toggle).
std::string toggle_group() const; ///< Returns the toggle group associated with the tool (only if tool style is toggle).
item_proxy& toggle_group(const ::std::string& group); ///< Adds the tool to a toggle group (only if tool style is toggle).
The treebox tooltip window is not initialized with the treebox scheme, which causes a crash in color_proxy::operator color(). Additionally, the tooltip window also uses a default font.