From 23823fdf3a54ed3851b8564fa8df993ce6e5e33f Mon Sep 17 00:00:00 2001 From: Murray Cumming Date: Wed, 31 Jul 2013 11:29:41 +0000 Subject: MenuItem: Reimplement the constructors. * gio/src/menuitem.[hg|ccg]: Because GMenuItem (and GMenu) do not have any properties and have actual code in their *_new() C convenience functions. Bug #705199 (Pete Woods) --- Index: glibmm2.4-2.37.4/gio/src/menuitem.ccg =================================================================== --- glibmm2.4-2.37.4.orig/gio/src/menuitem.ccg 2013-07-31 14:48:20.683811293 +0200 +++ glibmm2.4-2.37.4/gio/src/menuitem.ccg 2013-07-31 14:48:20.675811292 +0200 @@ -20,6 +20,31 @@ namespace Gio { +MenuItem::MenuItem(const Glib::ustring& label, const Glib::ustring& detailed_action) +: _CONSTRUCT() +{ + if(!label.empty()) + set_label(label); + + if(!detailed_action.empty()) + set_detailed_action(detailed_action); +} + +MenuItem::MenuItem(const Glib::ustring& label, const Glib::RefPtr& submenu) +: _CONSTRUCT() +{ + if(!label.empty()) + set_label(label); + + set_submenu(submenu); +} + +MenuItem::MenuItem(const Glib::RefPtr& submenu) +: _CONSTRUCT() +{ + set_submenu(submenu); +} + void MenuItem::set_action_and_target(const Glib::ustring& action) { g_menu_item_set_action_and_target_value(gobj(), action.c_str(), 0); Index: glibmm2.4-2.37.4/gio/src/menuitem.hg =================================================================== --- glibmm2.4-2.37.4.orig/gio/src/menuitem.hg 2013-07-31 14:48:20.683811293 +0200 +++ glibmm2.4-2.37.4/gio/src/menuitem.hg 2013-07-31 14:48:20.675811292 +0200 @@ -33,9 +33,16 @@ _CLASS_GOBJECT(MenuItem, GMenuItem, G_MENU_ITEM, Glib::Object, GObject) protected: - _WRAP_CTOR(MenuItem(const Glib::ustring& label = Glib::ustring(), const Glib::ustring& detailed_action = Glib::ustring()), g_menu_item_new) + //TODO: Documentation + explicit MenuItem(const Glib::ustring& label = Glib::ustring(), const Glib::ustring& detailed_action = Glib::ustring()); + _IGNORE(g_menu_item_new) - _WRAP_CTOR(MenuItem(const Glib::ustring& label{?}, const Glib::RefPtr& submenu), g_menu_item_new_submenu) + //TODO: Documentation + explicit MenuItem(const Glib::ustring& label, const Glib::RefPtr& submenu); + + //TODO: Documentation + explicit MenuItem(const Glib::RefPtr& submenu); + _IGNORE(g_menu_item_new_submenu) public: _WRAP_CREATE(const Glib::ustring& label, const Glib::ustring& detailed_action) --- a/gio/giomm/menuitem.cc +++ b/gio/giomm/menuitem.cc @@ -29,6 +29,37 @@ namespace Gio { +MenuItem::MenuItem(const Glib::ustring& label, const Glib::ustring& detailed_action) +: // Mark this class as non-derived to allow C++ vfuncs to be skipped. + Glib::ObjectBase(0), + Glib::Object(Glib::ConstructParams(menuitem_class_.init())) +{ + if(!label.empty()) + set_label(label); + + if(!detailed_action.empty()) + set_detailed_action(detailed_action); +} + +MenuItem::MenuItem(const Glib::ustring& label, const Glib::RefPtr& submenu) +: // Mark this class as non-derived to allow C++ vfuncs to be skipped. + Glib::ObjectBase(0), + Glib::Object(Glib::ConstructParams(menuitem_class_.init())) +{ + if(!label.empty()) + set_label(label); + + set_submenu(submenu); +} + +MenuItem::MenuItem(const Glib::RefPtr& submenu) +: // Mark this class as non-derived to allow C++ vfuncs to be skipped. + Glib::ObjectBase(0), + Glib::Object(Glib::ConstructParams(menuitem_class_.init())) +{ + set_submenu(submenu); +} + void MenuItem::set_action_and_target(const Glib::ustring& action) { g_menu_item_set_action_and_target_value(gobj(), action.c_str(), 0); @@ -135,36 +166,6 @@ } -MenuItem::MenuItem(const Glib::ustring& label, const Glib::ustring& detailed_action) -: - // Mark this class as non-derived to allow C++ vfuncs to be skipped. - Glib::ObjectBase(0), - Glib::Object(Glib::ConstructParams(menuitem_class_.init(), "label", label.c_str(), "detailed_action", detailed_action.c_str(), static_cast(0))) -{ - - -} - -MenuItem::MenuItem(const Glib::ustring& label, const Glib::RefPtr& submenu) -: - // Mark this class as non-derived to allow C++ vfuncs to be skipped. - Glib::ObjectBase(0), - Glib::Object(Glib::ConstructParams(menuitem_class_.init(), "label", label.c_str(), "submenu", const_cast(Glib::unwrap(submenu)), static_cast(0))) -{ - - -} - -MenuItem::MenuItem(const Glib::RefPtr& submenu) -: - // Mark this class as non-derived to allow C++ vfuncs to be skipped. - Glib::ObjectBase(0), - Glib::Object(Glib::ConstructParams(menuitem_class_.init(), "label", 0, "submenu", const_cast(Glib::unwrap(submenu)), static_cast(0))) -{ - - -} - Glib::RefPtr MenuItem::create(const Glib::ustring& label, const Glib::ustring& detailed_action) { return Glib::RefPtr( new MenuItem(label, detailed_action) ); --- a/gio/giomm/menuitem.h +++ b/gio/giomm/menuitem.h @@ -95,15 +95,16 @@ protected: - explicit MenuItem(const Glib::ustring& label = Glib::ustring(), const Glib::ustring& detailed_action = Glib::ustring()); - - - explicit MenuItem(const Glib::ustring& label, const Glib::RefPtr& submenu); + //TODO: Documentation + explicit MenuItem(const Glib::ustring& label = Glib::ustring(), const Glib::ustring& detailed_action = Glib::ustring()); + + //TODO: Documentation + explicit MenuItem(const Glib::ustring& label, const Glib::RefPtr& submenu); - /// A MenuItem() convenience overload. + //TODO: Documentation explicit MenuItem(const Glib::RefPtr& submenu); - + public: