add event stop_propagation
This commit is contained in:
parent
fc76758197
commit
46f8182c50
@ -315,6 +315,7 @@ namespace nana
|
||||
///< Blends two colors with the specified alpha, and the alpha values that come with these two colors are both ignored.
|
||||
color blend(const color& bgcolor, double alpha) const;
|
||||
|
||||
///< Determines whether the color is completely transparent.
|
||||
bool invisible() const;
|
||||
pixel_color_t px_color() const;
|
||||
pixel_argb_t argb() const;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* A Bedrock Implementation
|
||||
* Nana C++ Library(http://www.nanapro.org)
|
||||
* Copyright(C) 2003-2014 Jinhao(cnjinhao@hotmail.com)
|
||||
* Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com)
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* (See accompanying file LICENSE_1_0.txt or copy at
|
||||
@ -81,16 +81,16 @@ namespace detail
|
||||
widget_colors& get_scheme_template(scheme_factory_base&&);
|
||||
std::unique_ptr<widget_colors> make_scheme(scheme_factory_base&&);
|
||||
public:
|
||||
window_manager_t wd_manager;
|
||||
events_operation evt_operation;
|
||||
window_manager_t wd_manager;
|
||||
|
||||
runtime_manager<core_window_t*, bedrock> rt_manager;
|
||||
|
||||
bool emit(event_code, core_window_t*, const arg_mouse&, bool ask_update, thread_context*);
|
||||
bool emit(event_code, core_window_t*, const event_arg_interface&, bool ask_update, thread_context*);
|
||||
bool emit_drawer(event_code, core_window_t*, const event_arg_interface&, thread_context*);
|
||||
bool emit(event_code, core_window_t*, const event_arg&, bool ask_update, thread_context*);
|
||||
bool emit_drawer(event_code, core_window_t*, const event_arg&, thread_context*);
|
||||
private:
|
||||
void _m_emit_core(event_code, core_window_t*, bool draw_only, const event_arg_interface&);
|
||||
void _m_emit_core(event_code, core_window_t*, bool draw_only, const event_arg&);
|
||||
void _m_event_filter(event_code, core_window_t*, thread_context*);
|
||||
void _m_except_handler();
|
||||
private:
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Definition of General Events
|
||||
* Nana C++ Library(http://www.nanapro.org)
|
||||
* Copyright(C) 2003-2014 Jinhao(cnjinhao@hotmail.com)
|
||||
* Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com)
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* (See accompanying file LICENSE_1_0.txt or copy at
|
||||
@ -39,16 +39,21 @@ namespace nana
|
||||
virtual event_interface* get_event() const = 0;
|
||||
};
|
||||
|
||||
class event_arg_interface
|
||||
{
|
||||
public:
|
||||
virtual ~event_arg_interface() = default;
|
||||
};
|
||||
|
||||
void events_operation_register(event_handle);
|
||||
void events_operation_cancel(event_handle);
|
||||
}//end namespace detail
|
||||
|
||||
class event_arg
|
||||
{
|
||||
public:
|
||||
virtual ~event_arg();
|
||||
|
||||
void stop_propagation() const;
|
||||
bool propagation_stopped() const;
|
||||
private:
|
||||
mutable bool stop_propagation_{ false };
|
||||
};
|
||||
|
||||
struct general_events;
|
||||
|
||||
template<typename Arg>
|
||||
@ -62,15 +67,16 @@ namespace nana
|
||||
{
|
||||
basic_event * const event_ptr;
|
||||
std::function<void(arg_reference)> invoke;
|
||||
bool flag_entered = false;
|
||||
bool flag_deleted = false;
|
||||
bool flag_entered{ false };
|
||||
bool flag_deleted{ false };
|
||||
bool unignorable{false};
|
||||
|
||||
docker(basic_event * s, std::function<void(arg_reference)> && ivk)
|
||||
: event_ptr(s), invoke(std::move(ivk))
|
||||
docker(basic_event * s, std::function<void(arg_reference)> && ivk, bool unignorable_flag)
|
||||
: event_ptr(s), invoke(std::move(ivk)), unignorable(unignorable_flag)
|
||||
{}
|
||||
|
||||
docker(basic_event * s, const std::function<void(arg_reference)> & ivk)
|
||||
: event_ptr(s), invoke(ivk)
|
||||
docker(basic_event * s, const std::function<void(arg_reference)> & ivk, bool unignorable_flag)
|
||||
: event_ptr(s), invoke(ivk), unignorable(unignorable_flag)
|
||||
{}
|
||||
|
||||
~docker()
|
||||
@ -91,8 +97,8 @@ namespace nana
|
||||
if (nullptr == dockers_)
|
||||
dockers_.reset(new std::vector<std::unique_ptr<docker>>);
|
||||
|
||||
typedef typename std::remove_reference<Function>::type prototype;
|
||||
std::unique_ptr<docker> dck(new docker(this, factory<prototype, std::is_bind_expression<prototype>::value>::build(std::forward<Function>(fn))));
|
||||
using prototype = typename std::remove_reference<Function>::type;
|
||||
std::unique_ptr<docker> dck(new docker(this, factory<prototype, std::is_bind_expression<prototype>::value>::build(std::forward<Function>(fn)), false));
|
||||
auto evt = reinterpret_cast<event_handle>(static_cast<detail::docker_interface*>(dck.get()));
|
||||
dockers_->emplace(dockers_->begin(), std::move(dck));
|
||||
detail::events_operation_register(evt);
|
||||
@ -113,8 +119,8 @@ namespace nana
|
||||
if (nullptr == dockers_)
|
||||
dockers_.reset(new std::vector<std::unique_ptr<docker>>);
|
||||
|
||||
typedef typename std::remove_reference<Function>::type prototype;
|
||||
std::unique_ptr<docker> dck(new docker(this, factory<prototype, std::is_bind_expression<prototype>::value>::build(std::forward<Function>(fn))));
|
||||
using prototype = typename std::remove_reference<Function>::type;
|
||||
std::unique_ptr<docker> dck(new docker(this, factory<prototype, std::is_bind_expression<prototype>::value>::build(std::forward<Function>(fn)), false));
|
||||
auto evt = reinterpret_cast<event_handle>(static_cast<detail::docker_interface*>(dck.get()));
|
||||
dockers_->emplace_back(std::move(dck));
|
||||
detail::events_operation_register(evt);
|
||||
@ -127,6 +133,24 @@ namespace nana
|
||||
return connect(std::forward<Function>(fn));
|
||||
}
|
||||
|
||||
template<typename Function>
|
||||
event_handle connect_unignorable(Function && fn, bool in_front = false)
|
||||
{
|
||||
internal_scope_guard lock;
|
||||
if (nullptr == dockers_)
|
||||
dockers_.reset(new std::vector<std::unique_ptr<docker>>);
|
||||
|
||||
using prototype = typename std::remove_reference<Function>::type;
|
||||
std::unique_ptr<docker> dck(new docker(this, factory<prototype, std::is_bind_expression<prototype>::value>::build(std::forward<Function>(fn)), true));
|
||||
auto evt = reinterpret_cast<event_handle>(static_cast<detail::docker_interface*>(dck.get()));
|
||||
if (in_front)
|
||||
dockers_->emplace(dockers_->begin(), std::move(dck));
|
||||
else
|
||||
dockers_->emplace_back(std::move(dck));
|
||||
detail::events_operation_register(evt);
|
||||
return evt;
|
||||
}
|
||||
|
||||
std::size_t length() const
|
||||
{
|
||||
internal_scope_guard lock;
|
||||
@ -158,20 +182,30 @@ namespace nana
|
||||
(*output++) = dck.get();
|
||||
}
|
||||
|
||||
bool stop_propagation = false;
|
||||
for (; transitory != output; ++transitory)
|
||||
{
|
||||
std::unique_ptr<docker> p(*transitory);
|
||||
auto i = std::find(dockers.begin(), dockers.end(), p);
|
||||
auto docker_ptr = *transitory;
|
||||
if (stop_propagation && !docker_ptr->unignorable)
|
||||
continue;
|
||||
|
||||
auto i = std::find_if(dockers.begin(), dockers.end(), [docker_ptr](std::unique_ptr<docker>& p){
|
||||
return (docker_ptr == p.get());
|
||||
});
|
||||
|
||||
if (i != dockers.end())
|
||||
{
|
||||
(*transitory)->flag_entered = true;
|
||||
(*transitory)->invoke(arg);
|
||||
(*transitory)->flag_entered = false;
|
||||
docker_ptr->flag_entered = true;
|
||||
docker_ptr->invoke(arg);
|
||||
|
||||
if ((*transitory)->flag_deleted)
|
||||
if (arg.propagation_stopped())
|
||||
stop_propagation = true;
|
||||
|
||||
docker_ptr->flag_entered = false;
|
||||
|
||||
if (docker_ptr->flag_deleted)
|
||||
dockers.erase(i);
|
||||
}
|
||||
p.release();
|
||||
}
|
||||
}
|
||||
|
||||
@ -182,7 +216,7 @@ namespace nana
|
||||
dockers_.reset();
|
||||
}
|
||||
|
||||
void remove(event_handle evt)
|
||||
void remove(event_handle evt) override
|
||||
{
|
||||
internal_scope_guard lock;
|
||||
if (dockers_)
|
||||
@ -362,7 +396,7 @@ namespace nana
|
||||
};
|
||||
|
||||
struct arg_mouse
|
||||
: public detail::event_arg_interface
|
||||
: public event_arg
|
||||
{
|
||||
event_code evt_code;
|
||||
::nana::window window_handle;
|
||||
@ -386,27 +420,27 @@ namespace nana
|
||||
unsigned distance; //expressed in multiples or divisions of 120
|
||||
};
|
||||
|
||||
struct arg_dropfiles : public detail::event_arg_interface
|
||||
struct arg_dropfiles : public event_arg
|
||||
{
|
||||
::nana::window window_handle;
|
||||
::nana::point pos;
|
||||
std::vector<nana::string> files;
|
||||
};
|
||||
|
||||
struct arg_expose : public detail::event_arg_interface
|
||||
struct arg_expose : public event_arg
|
||||
{
|
||||
::nana::window window_handle;
|
||||
bool exposed;
|
||||
};
|
||||
|
||||
struct arg_focus : public detail::event_arg_interface
|
||||
struct arg_focus : public event_arg
|
||||
{
|
||||
::nana::window window_handle;
|
||||
::nana::native_window_type receiver;
|
||||
bool getting;
|
||||
};
|
||||
|
||||
struct arg_keyboard : public detail::event_arg_interface
|
||||
struct arg_keyboard : public event_arg
|
||||
{
|
||||
event_code evt_code;
|
||||
::nana::window window_handle;
|
||||
@ -416,21 +450,21 @@ namespace nana
|
||||
bool shift;
|
||||
};
|
||||
|
||||
struct arg_move : public detail::event_arg_interface
|
||||
struct arg_move : public event_arg
|
||||
{
|
||||
::nana::window window_handle;
|
||||
int x;
|
||||
int y;
|
||||
};
|
||||
|
||||
struct arg_resized : public detail::event_arg_interface
|
||||
struct arg_resized : public event_arg
|
||||
{
|
||||
::nana::window window_handle;
|
||||
unsigned width;
|
||||
unsigned height;
|
||||
};
|
||||
|
||||
struct arg_resizing : public detail::event_arg_interface
|
||||
struct arg_resizing : public event_arg
|
||||
{
|
||||
::nana::window window_handle;
|
||||
window_border border;
|
||||
@ -438,13 +472,13 @@ namespace nana
|
||||
mutable unsigned height;
|
||||
};
|
||||
|
||||
struct arg_unload : public detail::event_arg_interface
|
||||
struct arg_unload : public event_arg
|
||||
{
|
||||
::nana::window window_handle;
|
||||
mutable bool cancel;
|
||||
};
|
||||
|
||||
struct arg_destroy : public detail::event_arg_interface
|
||||
struct arg_destroy : public event_arg
|
||||
{
|
||||
::nana::window window_handle;
|
||||
};
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Definition of Notifier
|
||||
* Nana C++ Library(http://www.nanapro.org)
|
||||
* Copyright(C) 2003-2014 Jinhao(cnjinhao@hotmail.com)
|
||||
* Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com)
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* (See accompanying file LICENSE_1_0.txt or copy at
|
||||
@ -20,6 +20,7 @@ namespace nana
|
||||
class notifier;
|
||||
|
||||
struct arg_notifier
|
||||
: public event_arg
|
||||
{
|
||||
event_code evt_code;
|
||||
notifier* notifier_ptr;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Nana GUI Programming Interface Implementation
|
||||
* Nana C++ Library(http://www.nanapro.org)
|
||||
* Copyright(C) 2003-2014 Jinhao(cnjinhao@hotmail.com)
|
||||
* Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com)
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* (See accompanying file LICENSE_1_0.txt or copy at
|
||||
@ -164,7 +164,7 @@ namespace API
|
||||
return *widget_evt;
|
||||
}
|
||||
|
||||
template<typename EventArg, typename std::enable_if<std::is_base_of< ::nana::detail::event_arg_interface, EventArg>::value>::type* = nullptr>
|
||||
template<typename EventArg, typename std::enable_if<std::is_base_of< ::nana::event_arg, EventArg>::value>::type* = nullptr>
|
||||
bool emit_event(event_code evt_code, window wd, const EventArg& arg)
|
||||
{
|
||||
auto & brock = ::nana::detail::bedrock::instance();
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* A Timer Implementation
|
||||
* Copyright(C) 2003-2013 Jinhao(cnjinhao@hotmail.com)
|
||||
* Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com)
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* (See accompanying file LICENSE_1_0.txt or copy at
|
||||
@ -22,6 +22,7 @@ namespace nana
|
||||
/// Can repeatedly call a piece of code.
|
||||
|
||||
struct arg_elapse
|
||||
: public event_arg
|
||||
{
|
||||
long long id; //timer identifier;
|
||||
};
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* A Categorize Implementation
|
||||
* Nana C++ Library(http://www.nanapro.org)
|
||||
* Copyright(C) 2003-2014 Jinhao(cnjinhao@hotmail.com)
|
||||
* Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com)
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* (See accompanying file LICENSE_1_0.txt or copy at
|
||||
@ -23,6 +23,7 @@ namespace nana
|
||||
|
||||
template<typename ValueType>
|
||||
struct arg_categorize
|
||||
: public event_arg
|
||||
{
|
||||
categorize<ValueType> & widget;
|
||||
ValueType & value;
|
||||
|
||||
@ -25,6 +25,7 @@ namespace nana
|
||||
class combox;
|
||||
|
||||
struct arg_combox
|
||||
: public event_arg
|
||||
{
|
||||
combox & widget;
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* A List Box Implementation
|
||||
* Nana C++ Library(http://www.nanapro.org)
|
||||
* Copyright(C) 2003-2014 Jinhao(cnjinhao@hotmail.com)
|
||||
* Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com)
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* (See accompanying file LICENSE_1_0.txt or copy at
|
||||
@ -416,9 +416,12 @@ namespace nana
|
||||
}//end namespace drawerbase
|
||||
|
||||
struct arg_listbox
|
||||
: public event_arg
|
||||
{
|
||||
mutable drawerbase::listbox::item_proxy item;
|
||||
bool selected;
|
||||
|
||||
arg_listbox(drawerbase::listbox::item_proxy&, bool selected);
|
||||
};
|
||||
|
||||
namespace drawerbase
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* A Panel Implementation
|
||||
* Nana C++ Library(http://www.nanaro.org)
|
||||
* Copyright(C) 2003-2014 Jinhao(cnjinhao@hotmail.com)
|
||||
* Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com)
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* (See accompanying file LICENSE_1_0.txt or copy at
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* A Picture Implementation
|
||||
* Nana C++ Library(http://www.nanapro.org)
|
||||
* Copyright(C) 2003-2014 Jinhao(cnjinhao@hotmail.com)
|
||||
* Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com)
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* (See accompanying file LICENSE_1_0.txt or copy at
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* A Progress Indicator Implementation
|
||||
* Nana C++ Library(http://www.nanapro.org)
|
||||
* Copyright(C) 2003-2014 Jinhao(cnjinhao@hotmail.com)
|
||||
* Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com)
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* (See accompanying file LICENSE_1_0.txt or copy at
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* A Scroll Implementation
|
||||
* Nana C++ Library(http://www.nanapro.org)
|
||||
* Copyright(C) 2003-2014 Jinhao(cnjinhao@hotmail.com)
|
||||
* Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com)
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* (See accompanying file LICENSE_1_0.txt or copy at
|
||||
@ -22,8 +22,13 @@ namespace nana
|
||||
|
||||
template<bool Vert>
|
||||
struct arg_scroll
|
||||
: public event_arg
|
||||
{
|
||||
scroll<Vert> & widget;
|
||||
|
||||
arg_scroll(scroll<Vert> & wdg)
|
||||
: widget{ wdg }
|
||||
{}
|
||||
};
|
||||
|
||||
namespace drawerbase
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* A Slider Implementation
|
||||
* Nana C++ Library(http://www.nanapro.org)
|
||||
* Copyright(C) 2003-2014 Jinhao(cnjinhao@hotmail.com)
|
||||
* Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com)
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* (See accompanying file LICENSE_1_0.txt or copy at
|
||||
@ -19,8 +19,11 @@ namespace nana
|
||||
class slider;
|
||||
|
||||
struct arg_slider
|
||||
: public event_arg
|
||||
{
|
||||
slider & widget;
|
||||
|
||||
arg_slider(slider&);
|
||||
};
|
||||
|
||||
namespace drawerbase
|
||||
|
||||
@ -20,6 +20,7 @@ namespace nana
|
||||
class spinbox;
|
||||
|
||||
struct arg_spinbox
|
||||
: public event_arg
|
||||
{
|
||||
spinbox & widget;
|
||||
|
||||
@ -123,7 +124,17 @@ namespace nana
|
||||
private:
|
||||
::nana::string _m_caption() const;
|
||||
void _m_caption(::nana::string&&);
|
||||
};
|
||||
}; //end class spinbox
|
||||
|
||||
namespace dev
|
||||
{
|
||||
template<>
|
||||
struct widget_traits<spinbox>
|
||||
{
|
||||
using event_type = drawerbase::spinbox::spinbox_events;
|
||||
using scheme_type = ::nana::widgets::skeletons::text_editor_scheme;
|
||||
};
|
||||
}
|
||||
}//end namespace nana
|
||||
|
||||
#endif //NANA_GUI_WIDGET_SPINBOX_HPP
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* A Tabbar implementation
|
||||
* Nana C++ Library(http://www.nanapro.org)
|
||||
* Copyright(C) 2003-2014 Jinhao(cnjinhao@hotmail.com)
|
||||
* Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com)
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* (See accompanying file LICENSE_1_0.txt or copy at
|
||||
@ -24,9 +24,14 @@ namespace nana
|
||||
|
||||
template<typename T>
|
||||
struct arg_tabbar
|
||||
: public event_arg
|
||||
{
|
||||
tabbar<T> & widget;
|
||||
T & value;
|
||||
|
||||
arg_tabbar(tabbar<T>& wdg, T& v)
|
||||
: widget{ wdg }, value{ v }
|
||||
{}
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
|
||||
@ -20,8 +20,11 @@ namespace nana
|
||||
class textbox;
|
||||
|
||||
struct arg_textbox
|
||||
: public event_arg
|
||||
{
|
||||
textbox& widget;
|
||||
|
||||
arg_textbox(textbox&);
|
||||
};
|
||||
|
||||
namespace widgets
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* A Toolbar Implementation
|
||||
* Nana C++ Library(http://www.nanapro.org)
|
||||
* Copyright(C) 2003-2014 Jinhao(cnjinhao@hotmail.com)
|
||||
* Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com)
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* (See accompanying file LICENSE_1_0.txt or copy at
|
||||
@ -21,9 +21,12 @@ namespace nana
|
||||
class toolbar;
|
||||
|
||||
struct arg_toolbar
|
||||
: public event_arg
|
||||
{
|
||||
toolbar& widget;
|
||||
std::size_t button;
|
||||
|
||||
arg_toolbar(toolbar&, std::size_t);
|
||||
};
|
||||
|
||||
namespace drawerbase
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* A Tree Box Implementation
|
||||
* Nana C++ Library(http://www.nanapro.org)
|
||||
* Copyright(C) 2003-2014 Jinhao(cnjinhao@hotmail.com)
|
||||
* Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com)
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* (See accompanying file LICENSE_1_0.txt or copy at
|
||||
@ -333,10 +333,13 @@ namespace nana
|
||||
}//end namespace drawerbase
|
||||
|
||||
struct arg_treebox
|
||||
: public event_arg
|
||||
{
|
||||
treebox& widget;
|
||||
drawerbase::treebox::item_proxy & item;
|
||||
bool operated;
|
||||
|
||||
arg_treebox(treebox&, drawerbase::treebox::item_proxy&, bool operated);
|
||||
};
|
||||
|
||||
namespace drawerbase
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* The fundamental widget class implementation
|
||||
* Nana C++ Library(http://www.nanapro.org)
|
||||
* Copyright(C) 2003-2014 Jinhao(cnjinhao@hotmail.com)
|
||||
* Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com)
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* (See accompanying file LICENSE_1_0.txt or copy at
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* A Bedrock Platform-Independent Implementation
|
||||
* Nana C++ Library(http://www.nanapro.org)
|
||||
* Copyright(C) 2003-2014 Jinhao(cnjinhao@hotmail.com)
|
||||
* Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com)
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* (See accompanying file LICENSE_1_0.txt or copy at
|
||||
@ -25,6 +25,20 @@
|
||||
|
||||
namespace nana
|
||||
{
|
||||
//class event_arg
|
||||
event_arg::~event_arg(){}
|
||||
|
||||
void event_arg::stop_propagation() const
|
||||
{
|
||||
stop_propagation_ = true;
|
||||
}
|
||||
|
||||
bool event_arg::propagation_stopped() const
|
||||
{
|
||||
return stop_propagation_;
|
||||
}
|
||||
//end class event_arg
|
||||
|
||||
namespace detail
|
||||
{
|
||||
void events_operation_register(event_handle evt)
|
||||
@ -130,7 +144,7 @@ namespace nana
|
||||
return pi_data_->scheme.create(std::move(factory));
|
||||
}
|
||||
|
||||
void bedrock::_m_emit_core(event_code evt_code, core_window_t* wd, bool draw_only, const ::nana::detail::event_arg_interface& event_arg)
|
||||
void bedrock::_m_emit_core(event_code evt_code, core_window_t* wd, bool draw_only, const ::nana::event_arg& event_arg)
|
||||
{
|
||||
switch (evt_code)
|
||||
{
|
||||
|
||||
@ -381,10 +381,10 @@ namespace detail
|
||||
{
|
||||
if(evt_code != arg.evt_code)
|
||||
throw std::runtime_error("Nana.bedrock: Invalid event arg.");
|
||||
return emit(evt_code, wd, static_cast<const ::nana::detail::event_arg_interface&>(arg), ask_update, thrd);
|
||||
return emit(evt_code, wd, static_cast<const ::nana::event_arg&>(arg), ask_update, thrd);
|
||||
}
|
||||
|
||||
bool bedrock::emit(event_code evt_code, core_window_t* wd, const ::nana::detail::event_arg_interface& arg, bool ask_update, thread_context* thrd)
|
||||
bool bedrock::emit(event_code evt_code, core_window_t* wd, const ::nana::event_arg& arg, bool ask_update, thread_context* thrd)
|
||||
{
|
||||
if(wd_manager.available(wd) == false)
|
||||
return false;
|
||||
@ -411,7 +411,7 @@ namespace detail
|
||||
return true;
|
||||
}
|
||||
|
||||
bool bedrock::emit_drawer(event_code evt_code, core_window_t* wd, const ::nana::detail::event_arg_interface& arg, thread_context* thrd)
|
||||
bool bedrock::emit_drawer(event_code evt_code, core_window_t* wd, const ::nana::event_arg& arg, thread_context* thrd)
|
||||
{
|
||||
if(wd_manager.available(wd) == false)
|
||||
return false;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* A Bedrock Implementation
|
||||
* Nana C++ Library(http://www.nanapro.org)
|
||||
* Copyright(C) 2003-2014 Jinhao(cnjinhao@hotmail.com)
|
||||
* Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com)
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* (See accompanying file LICENSE_1_0.txt or copy at
|
||||
@ -1607,10 +1607,10 @@ namespace detail
|
||||
if (evt_code != arg.evt_code)
|
||||
throw std::runtime_error("Nana.bedrock: invalid event arg.");
|
||||
|
||||
return emit(evt_code, wd, static_cast<const ::nana::detail::event_arg_interface&>(arg), ask_update, thrd);
|
||||
return emit(evt_code, wd, static_cast<const ::nana::event_arg&>(arg), ask_update, thrd);
|
||||
}
|
||||
|
||||
bool bedrock::emit(event_code evt_code, core_window_t* wd, const ::nana::detail::event_arg_interface& arg, bool ask_update, thread_context* thrd)
|
||||
bool bedrock::emit(event_code evt_code, core_window_t* wd, const ::nana::event_arg& arg, bool ask_update, thread_context* thrd)
|
||||
{
|
||||
if (wd_manager.available(wd) == false)
|
||||
return false;
|
||||
@ -1637,7 +1637,7 @@ namespace detail
|
||||
return true;
|
||||
}
|
||||
|
||||
bool bedrock::emit_drawer(event_code evt_code, core_window_t* wd, const ::nana::detail::event_arg_interface& arg, thread_context* thrd)
|
||||
bool bedrock::emit_drawer(event_code evt_code, core_window_t* wd, const ::nana::event_arg& arg, thread_context* thrd)
|
||||
{
|
||||
if (bedrock_object.wd_manager.available(wd) == false)
|
||||
return false;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* A List Box Implementation
|
||||
* Nana C++ Library(http://www.nanapro.org)
|
||||
* Copyright(C) 2003-2014 Jinhao(cnjinhao@hotmail.com)
|
||||
* Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com)
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* (See accompanying file LICENSE_1_0.txt or copy at
|
||||
@ -3489,6 +3489,12 @@ namespace nana
|
||||
}
|
||||
}//end namespace drawerbase
|
||||
|
||||
arg_listbox::arg_listbox(drawerbase::listbox::item_proxy& m, bool selected)
|
||||
: item(m), selected(selected)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//class listbox
|
||||
listbox::listbox(window wd, bool visible)
|
||||
{
|
||||
|
||||
@ -3,6 +3,10 @@
|
||||
|
||||
namespace nana
|
||||
{
|
||||
arg_slider::arg_slider(slider& wdg)
|
||||
: widget{ wdg }
|
||||
{}
|
||||
|
||||
namespace drawerbase
|
||||
{
|
||||
namespace slider
|
||||
|
||||
@ -15,7 +15,13 @@
|
||||
#include <stdexcept>
|
||||
#include <sstream>
|
||||
|
||||
namespace nana{ namespace drawerbase {
|
||||
namespace nana
|
||||
{
|
||||
arg_textbox::arg_textbox(textbox& wdg)
|
||||
: widget{wdg}
|
||||
{}
|
||||
|
||||
namespace drawerbase {
|
||||
namespace textbox
|
||||
{
|
||||
//class event_agent
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* A Toolbar Implementation
|
||||
* Copyright(C) 2003-2013 Jinhao(cnjinhao@hotmail.com)
|
||||
* Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com)
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* (See accompanying file LICENSE_1_0.txt or copy at
|
||||
@ -16,6 +16,10 @@
|
||||
|
||||
namespace nana
|
||||
{
|
||||
arg_toolbar::arg_toolbar(toolbar& tbar, std::size_t btn)
|
||||
: widget{ tbar }, button{btn}
|
||||
{}
|
||||
|
||||
namespace drawerbase
|
||||
{
|
||||
namespace toolbar
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* A Treebox Implementation
|
||||
* Nana C++ Library(http://www.nanapro.org)
|
||||
* Copyright(C) 2003-2014 Jinhao(cnjinhao@hotmail.com)
|
||||
* Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com)
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* (See accompanying file LICENSE_1_0.txt or copy at
|
||||
@ -18,6 +18,10 @@
|
||||
|
||||
namespace nana
|
||||
{
|
||||
arg_treebox::arg_treebox(treebox& wdg, drawerbase::treebox::item_proxy& m, bool op)
|
||||
: widget{ wdg }, item{ m }, operated{op}
|
||||
{}
|
||||
|
||||
namespace drawerbase
|
||||
{
|
||||
//Here defines some function objects
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user