Merge branch 'hotfix-1.4.1' into feature-listbox

This commit is contained in:
Jinhao 2017-01-13 07:14:45 +08:00
commit f342679d73
4 changed files with 25 additions and 5 deletions

View File

@ -421,6 +421,9 @@ namespace nana
bool checkable() const; ///< Determinte whether the checkboxs are enabled. bool checkable() const; ///< Determinte whether the checkboxs are enabled.
/// Clears the contents
void clear();
/// \brief Creates an icon scheme with the specified name. /// \brief Creates an icon scheme with the specified name.
/// ///
/// The icon scheme includes 3 images for node states. /// The icon scheme includes 3 images for node states.

View File

@ -866,8 +866,7 @@ namespace nana
item_proxy& item_proxy::check(bool ck) item_proxy& item_proxy::check(bool ck)
{ {
trigger_->check(node_, ck ? checkstate::checked : checkstate::unchecked); trigger_->check(node_, ck ? checkstate::checked : checkstate::unchecked);
if(trigger_->draw()) trigger_->draw();
API::update_window(trigger_->impl()->data.widget_ptr->handle());
return *this; return *this;
} }
@ -1664,7 +1663,8 @@ namespace nana
if (!impl_->attr.auto_draw) if (!impl_->attr.auto_draw)
return false; return false;
impl_->draw(false); if(impl_->draw(false))
API::update_window(impl_->data.widget_ptr->handle());
return true; return true;
} }
@ -2198,6 +2198,13 @@ namespace nana
return get_drawer_trigger().checkable(); return get_drawer_trigger().checkable();
} }
void treebox::clear()
{
auto impl = get_drawer_trigger().impl();
impl->attr.tree_cont.clear();
get_drawer_trigger().draw();
}
treebox::node_image_type& treebox::icon(const std::string& id) const treebox::node_image_type& treebox::icon(const std::string& id) const
{ {
return get_drawer_trigger().icon(id); return get_drawer_trigger().icon(id);

View File

@ -777,12 +777,22 @@ namespace paint
::ReleaseDC(reinterpret_cast<HWND>(dst), dc); ::ReleaseDC(reinterpret_cast<HWND>(dst), dc);
} }
#elif defined(NANA_X11) #elif defined(NANA_X11)
Display * display = nana::detail::platform_spec::instance().open_display(); auto & spec = nana::detail::platform_spec::instance();
Display * display = spec.open_display();
nana::detail::platform_scope_guard lock;
::XCopyArea(display, ::XCopyArea(display,
impl_->handle->pixmap, reinterpret_cast<Window>(dst), impl_->handle->context, impl_->handle->pixmap, reinterpret_cast<Window>(dst), impl_->handle->context,
sx, sy, width, height, dx, dy); sx, sy, width, height, dx, dy);
XWindowAttributes attr;
spec.set_error_handler();
::XGetWindowAttributes(display, reinterpret_cast<Window>(dst), &attr);
if(BadWindow != spec.rev_error_handler() && attr.map_state != IsUnmapped)
::XMapWindow(display, reinterpret_cast<Window>(dst)); ::XMapWindow(display, reinterpret_cast<Window>(dst));
::XFlush(display); ::XFlush(display);
#endif #endif
} }