* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* SECTION:gtkactivatable
* @Short_Description: An interface for activatable widgets
+ * @Title: GtkActivatable
*
* Activatable widgets can be connected to a #GtkAction and reflects
* the state of its action. A #GtkActivatable can also provide feedback
#include "config.h"
#include "gtkactivatable.h"
#include "gtkactiongroup.h"
-#include "gtktypeutils.h"
#include "gtkprivate.h"
#include "gtkintl.h"
-#include "gtkalias.h"
-static void gtk_activatable_class_init (gpointer g_iface);
-
-GType
-gtk_activatable_get_type (void)
-{
- static GType activatable_type = 0;
-
- if (!activatable_type)
- activatable_type =
- g_type_register_static_simple (G_TYPE_INTERFACE, I_("GtkActivatable"),
- sizeof (GtkActivatableIface),
- (GClassInitFunc) gtk_activatable_class_init,
- 0, NULL, 0);
-
- return activatable_type;
-}
+typedef GtkActivatableIface GtkActivatableInterface;
+G_DEFINE_INTERFACE (GtkActivatable, gtk_activatable, G_TYPE_OBJECT)
static void
-gtk_activatable_class_init (gpointer g_iface)
+gtk_activatable_default_init (GtkActivatableInterface *iface)
{
/**
* GtkActivatable:related-action:
*
* Since: 2.16
*/
- g_object_interface_install_property (g_iface,
+ g_object_interface_install_property (iface,
g_param_spec_object ("related-action",
P_("Related Action"),
P_("The action this activatable will activate and receive updates from"),
*
* Since: 2.16
*/
- g_object_interface_install_property (g_iface,
+ g_object_interface_install_property (iface,
g_param_spec_boolean ("use-action-appearance",
P_("Use Action Appearance"),
P_("Whether to use the related actions appearance properties"),
/**
* gtk_activatable_sync_action_properties:
* @activatable: a #GtkActivatable
- * @action: the related #GtkAction or %NULL
+ * @action: (allow-none): the related #GtkAction or %NULL
*
* This is called to update the activatable completely, this is called
- * internally when the #GtkActivatable::related-action property is set
+ * internally when the #GtkActivatable:related-action property is set
* or unset and by the implementing class when
- * #GtkActivatable::use-action-appearance changes.
+ * #GtkActivatable:use-action-appearance changes.
*
* Since: 2.16
**/
*
* <note><para>Be careful to call this before setting the local
* copy of the #GtkAction property, since this function uses
- * gtk_activatable_get_action() to retrieve the previous action</para></note>
+ * gtk_activatable_get_related_action() to retrieve the
+ * previous action</para></note>
*
* Since: 2.16
*/
{
g_signal_handlers_disconnect_by_func (prev_action, gtk_activatable_action_notify, activatable);
- _gtk_action_remove_from_proxy_list (prev_action, GTK_WIDGET (activatable));
+ /* Check the type so that actions can be activatable too. */
+ if (GTK_IS_WIDGET (activatable))
+ _gtk_action_remove_from_proxy_list (prev_action, GTK_WIDGET (activatable));
/* Some apps are using the object data directly...
* so continue to set it for a bit longer
g_signal_connect (G_OBJECT (action), "notify", G_CALLBACK (gtk_activatable_action_notify), activatable);
- _gtk_action_add_to_proxy_list (action, GTK_WIDGET (activatable));
+ if (GTK_IS_WIDGET (activatable))
+ _gtk_action_add_to_proxy_list (action, GTK_WIDGET (activatable));
g_object_set_data (G_OBJECT (activatable), "gtk-action", action);
}
*
* Gets the related #GtkAction for @activatable.
*
- * Returns: the related #GtkAction if one is set.
+ * Returns: (transfer none): the related #GtkAction if one is set.
*
* Since: 2.16
**/
return use_appearance;
}
-
-#define __GTK_ACTIVATABLE_C__
-#include "gtkaliasdef.c"