fix a crash error

it occurs when deleting a window in its certain event
This commit is contained in:
Jinhao 2015-03-20 14:55:17 +08:00
parent 75af5554a4
commit e99ebc6e2e
3 changed files with 8 additions and 5 deletions

View File

@ -719,12 +719,11 @@ namespace detail
if(kill_focus != new_focus) if(kill_focus != new_focus)
brock.wd_manager.do_lazy_refresh(kill_focus, false); brock.wd_manager.do_lazy_refresh(kill_focus, false);
} }
auto retain = msgwnd->together.event_ptr;
msgwnd->root_widget->other.attribute.root->context.focus_changed = false; msgwnd->root_widget->other.attribute.root->context.focus_changed = false;
context.event_window = msgwnd; context.event_window = msgwnd;
pressed_wd = nullptr; pressed_wd = nullptr;
//make_eventinfo(ei, msgwnd, message, xevent);
msgwnd->flags.action = mouse_action::pressed; msgwnd->flags.action = mouse_action::pressed;
arg_mouse arg; arg_mouse arg;
assign_arg(arg, msgwnd, ButtonPress, xevent); assign_arg(arg, msgwnd, ButtonPress, xevent);
@ -774,6 +773,8 @@ namespace detail
msgwnd->flags.action = mouse_action::normal; msgwnd->flags.action = mouse_action::normal;
if(msgwnd->flags.enabled) if(msgwnd->flags.enabled)
{ {
auto retain = msgwnd->together.event_ptr;
arg_mouse arg; arg_mouse arg;
assign_arg(arg, msgwnd, message, xevent); assign_arg(arg, msgwnd, message, xevent);

View File

@ -948,6 +948,8 @@ namespace detail
arg_mouse arg; arg_mouse arg;
assign_arg(arg, msgwnd, message, pmdec); assign_arg(arg, msgwnd, message, pmdec);
msgwnd->flags.action = mouse_action::pressed; msgwnd->flags.action = mouse_action::pressed;
auto retain = msgwnd->together.events_ptr;
if (brock.emit(event_code::mouse_down, msgwnd, arg, true, &context)) if (brock.emit(event_code::mouse_down, msgwnd, arg, true, &context))
{ {
//If a root_window is created during the mouse_down event, Nana.GUI will ignore the mouse_up event. //If a root_window is created during the mouse_down event, Nana.GUI will ignore the mouse_up event.
@ -982,6 +984,8 @@ namespace detail
msgwnd->flags.action = mouse_action::normal; msgwnd->flags.action = mouse_action::normal;
if(msgwnd->flags.enabled) if(msgwnd->flags.enabled)
{ {
auto retain = msgwnd->together.events_ptr;
nana::arg_mouse arg; nana::arg_mouse arg;
assign_arg(arg, msgwnd, message, pmdec); assign_arg(arg, msgwnd, message, pmdec);

View File

@ -8,8 +8,7 @@
* http://www.boost.org/LICENSE_1_0.txt) * http://www.boost.org/LICENSE_1_0.txt)
* *
* @file: nana/gui/widgets/listbox.cpp * @file: nana/gui/widgets/listbox.cpp
* @patchs: * @contributors: Hiroshi Seki, qPCR4vir
* Jan 03 2012, unsigned to std::size_t conversion fail for x64, Hiroshi Seki
*/ */
#include <nana/gui/widgets/listbox.hpp> #include <nana/gui/widgets/listbox.hpp>
@ -2614,7 +2613,6 @@ namespace nana
{ {
const auto & header = essence_->header.column(index); const auto & header = essence_->header.column(index);
auto it_bgcolor = bgcolor; auto it_bgcolor = bgcolor;
//auto it_fgcolor = fgcolor;
if ((item.cells.size() > index) && (header.pixels > 5)) if ((item.cells.size() > index) && (header.pixels > 5))
{ {