gnomemm r1922 - in cluttermm/trunk: . clutter/src
- From: daniel svn gnome org
- To: svn-commits-list gnome org
- Subject: gnomemm r1922 - in cluttermm/trunk: . clutter/src
- Date: Mon, 29 Dec 2008 18:54:57 +0000 (UTC)
Author: daniel
Date: Mon Dec 29 18:54:57 2008
New Revision: 1922
URL: http://svn.gnome.org/viewvc/gnomemm?rev=1922&view=rev
Log:
* clutter/src/container.{ccg,hg} (Container::actor_added): New method
which emits the "actor-added" signal. This precludes the need to use
the GObject API directly when implementing a custom container in C++.
(Container::actor_removed): Likewise for the "actor-removed" signal.
Modified:
cluttermm/trunk/ChangeLog
cluttermm/trunk/clutter/src/container.ccg
cluttermm/trunk/clutter/src/container.hg
Modified: cluttermm/trunk/clutter/src/container.ccg
==============================================================================
--- cluttermm/trunk/clutter/src/container.ccg (original)
+++ cluttermm/trunk/clutter/src/container.ccg Mon Dec 29 18:54:57 2008
@@ -17,51 +17,66 @@
#include <clutter/clutter.h>
-
+namespace
+{
+extern "C"
+{
static void SignalProxy_Container_foreach_callback(ClutterActor *actor, gpointer user_data)
{
- Clutter::Container::SlotForEach* the_slot = static_cast<Clutter::Container::SlotForEach*>(user_data);
+ Clutter::Container::SlotForEach *const
+ the_slot = static_cast<Clutter::Container::SlotForEach*>(user_data);
- #ifdef GLIBMM_EXCEPTIONS_ENABLED
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
try
+#endif
{
- #endif //GLIBMM_EXCEPTIONS_ENABLED
- Glib::RefPtr<Clutter::Actor> cpp_actor = Glib::wrap(actor, true /* take reference */);
+ const Glib::RefPtr<Clutter::Actor> cpp_actor = Glib::wrap(actor, true /* take reference */);
(*the_slot)(cpp_actor);
- #ifdef GLIBMM_EXCEPTIONS_ENABLED
}
- catch(...)
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ catch (...)
{
Glib::exception_handlers_invoke();
}
- #endif //GLIBMM_EXCEPTIONS_ENABLED
+#endif
}
+} // extern "C"
+} // anonymous namespace
namespace Clutter
{
void Container::raise_child(const Glib::RefPtr<Actor>& actor)
{
- clutter_container_raise_child(gobj(), Glib::unwrap(actor), NULL);
+ clutter_container_raise_child(gobj(), Glib::unwrap(actor), 0);
}
void Container::lower_child(const Glib::RefPtr<Actor>& actor)
{
- clutter_container_lower_child(gobj(), Glib::unwrap(actor), NULL);
+ clutter_container_lower_child(gobj(), Glib::unwrap(actor), 0);
}
void Container::foreach(const SlotForEach& slot)
{
- clutter_container_foreach(
- gobj(),
+ clutter_container_foreach(gobj(),
&SignalProxy_Container_foreach_callback, const_cast<SlotForEach*>(&slot));
}
+void Container::get_child_property_value(const Glib::RefPtr<const Actor>& child,
+ const Glib::ustring& property_name, Glib::ValueBase& value) const
+{
+ clutter_container_child_get_property(const_cast<ClutterContainer*>(gobj()),
+ const_cast<ClutterActor*>(child->gobj()), property_name.c_str(), value.gobj());
+}
-void Container::get_child_property_value(const Glib::RefPtr<const Actor>& child, const Glib::ustring& property_name, Glib::ValueBase& value) const
+void Container::actor_added(const Glib::RefPtr<Actor>& actor)
{
- clutter_container_child_get_property(const_cast<ClutterContainer*>(gobj()), const_cast<ClutterActor*>(child->gobj()), property_name.c_str(), value.gobj());
+ g_signal_emit_by_name(gobj(), "actor_added", actor->gobj());
}
-} //namespace Clutter
+void Container::actor_removed(const Glib::RefPtr<Actor>& actor)
+{
+ g_signal_emit_by_name(gobj(), "actor_removed", actor->gobj());
+}
+} // namespace Clutter
Modified: cluttermm/trunk/clutter/src/container.hg
==============================================================================
--- cluttermm/trunk/clutter/src/container.hg (original)
+++ cluttermm/trunk/clutter/src/container.hg Mon Dec 29 18:54:57 2008
@@ -45,8 +45,8 @@
_WRAP_METHOD(void raise_child(const Glib::RefPtr<Actor>& actor, const Glib::RefPtr<Actor>& sibling), clutter_container_raise_child)
void raise_child(const Glib::RefPtr<Actor>& actor);
- _WRAP_METHOD(Glib::RefPtr<Actor> find_child (const Glib::ustring& child_name), clutter_container_find_child_by_name, refreturn)
- _WRAP_METHOD(Glib::RefPtr<const Actor> find_child (const Glib::ustring& child_name) const, clutter_container_find_child_by_name, constversion)
+ _WRAP_METHOD(Glib::RefPtr<Actor> find_child(const Glib::ustring& child_name), clutter_container_find_child_by_name, refreturn)
+ _WRAP_METHOD(Glib::RefPtr<const Actor> find_child(const Glib::ustring& child_name) const, clutter_container_find_child_by_name, constversion)
/** For instance,
* void on_foreach(const Glib::RefPtr<Actor>& actor)
@@ -57,7 +57,9 @@
_IGNORE(clutter_container_foreach)
// not sure the valist stuff is good to wrap in C++
- _IGNORE(clutter_container_add_valist, clutter_container_remove_valist, clutter_container_add, clutter_container_remove, clutter_container_child_get, clutter_container_child_set, clutter_container_class_find_child_property, clutter_container_class_list_child_properties)
+ _IGNORE(clutter_container_add_valist, clutter_container_remove_valist, clutter_container_add,
+ clutter_container_remove, clutter_container_child_get, clutter_container_child_set,
+ clutter_container_class_find_child_property, clutter_container_class_list_child_properties)
template <class PropertyType> inline
@@ -107,16 +109,24 @@
_WRAP_VFUNC(void add(const Glib::RefPtr<Actor>& actor), add)
_WRAP_VFUNC(void remove(const Glib::RefPtr<Actor>& actor), remove)
_WRAP_VFUNC(void raise(const Glib::RefPtr<Actor>& actor, const Glib::RefPtr<Actor>& sibling), raise)
- _WRAP_VFUNC(void lower(const Glib::RefPtr<Actor>& actor, const Glib::RefPtr<Actor>& lower), lower)
+ _WRAP_VFUNC(void lower(const Glib::RefPtr<Actor>& actor, const Glib::RefPtr<Actor>& sibling), lower)
_WRAP_VFUNC(void sort_depth_order(), sort_depth_order)
+ // TODO: C++ify?
_WRAP_VFUNC(void foreach(ClutterCallback callback, gpointer user_data), foreach)
+ /** Emit signal_actor_added().
+ */
+ void actor_added(const Glib::RefPtr<Actor>& actor);
+
+ /** Emit signal_actor_removed().
+ */
+ void actor_removed(const Glib::RefPtr<Actor>& actor);
+
// TODO: Do we want to wrap create_child_meta, destory_child_meta,
// get_child_meta?
};
-
#ifndef DOXYGEN_SHOULD_SKIP_THIS
template <class PropertyType> inline
@@ -142,7 +152,4 @@
#endif /* DOXYGEN_SHOULD_SKIP_THIS */
-
-
} // namespace Clutter
-//vim: ts=2,sw=2
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]