diff --git a/src/core/meta-inhibit-shortcuts-dialog-default-private.h b/src/core/meta-inhibit-shortcuts-dialog-default-private.h new file mode 100644 index 000000000..af6b31024 --- /dev/null +++ b/src/core/meta-inhibit-shortcuts-dialog-default-private.h @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2017 Red Hat + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + */ + +#ifndef META_INHIBIT_SHORTCUTS_DIALOG_DEFAULT_H +#define META_INHIBIT_SHORTCUTS_DIALOG_DEFAULT_H + +#define META_TYPE_INHIBIT_SHORTCUTS_DIALOG_DEFAULT (meta_inhibit_shortcuts_dialog_default_get_type ()) +G_DECLARE_FINAL_TYPE (MetaInhibitShortcutsDialogDefault, + meta_inhibit_shortcuts_dialog_default, + META, INHIBIT_SHORTCUTS_DIALOG_DEFAULT, + GObject) + +MetaInhibitShortcutsDialog * meta_inhibit_shortcuts_dialog_default_new (MetaWindow *window); + +#endif /* META_INHIBIT_SHORTCUTS_DIALOG_DEFAULT_H */ diff --git a/src/core/meta-inhibit-shortcuts-dialog-default.c b/src/core/meta-inhibit-shortcuts-dialog-default.c new file mode 100644 index 000000000..74da70aef --- /dev/null +++ b/src/core/meta-inhibit-shortcuts-dialog-default.c @@ -0,0 +1,131 @@ +/* + * Copyright (C) 2001, 2002 Havoc Pennington + * Copyright (C) 2004 Elijah Newren + * Copyright (C) 2017 Red Hat + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + */ + +#include + +#include "util-private.h" +#include "window-private.h" +#include "meta/meta-inhibit-shortcuts-dialog.h" +#include "meta-inhibit-shortcuts-dialog-default-private.h" + +typedef struct _MetaInhibitShortcutsDialogDefaultPrivate MetaInhibitShortcutsDialogDefaultPrivate; + +struct _MetaInhibitShortcutsDialogDefault +{ + GObject parent_instance; + MetaWindow *window; +}; + +enum { + PROP_0, + PROP_WINDOW, + N_PROPS +}; + +static void meta_inhibit_shortcuts_dialog_iface_init (MetaInhibitShortcutsDialogInterface *iface); + +G_DEFINE_TYPE_WITH_CODE (MetaInhibitShortcutsDialogDefault, meta_inhibit_shortcuts_dialog_default, + G_TYPE_OBJECT, + G_IMPLEMENT_INTERFACE (META_TYPE_INHIBIT_SHORTCUTS_DIALOG, + meta_inhibit_shortcuts_dialog_iface_init)) + +static void +meta_inhibit_shortcuts_dialog_default_show (MetaInhibitShortcutsDialog *dialog) +{ + /* Default to allow shortcuts inhibitor, but complain that no dialog is implemented */ + g_warning ("No MetaInhibitShortcutDialog implementation, falling back on allowing"); + meta_inhibit_shortcuts_dialog_response (dialog, META_INHIBIT_SHORTCUTS_DIALOG_RESPONSE_ALLOW); +} + +static void +meta_inhibit_shortcuts_dialog_default_hide (MetaInhibitShortcutsDialog *dialog) +{ +} + +static void +meta_inhibit_shortcuts_dialog_iface_init (MetaInhibitShortcutsDialogInterface *iface) +{ + iface->show = meta_inhibit_shortcuts_dialog_default_show; + iface->hide = meta_inhibit_shortcuts_dialog_default_hide; +} + +static void +meta_inhibit_shortcuts_dialog_default_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + MetaInhibitShortcutsDialogDefault *dialog; + + dialog = META_INHIBIT_SHORTCUTS_DIALOG_DEFAULT (object); + + switch (prop_id) + { + case PROP_WINDOW: + dialog->window = g_value_get_object (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + } +} + +static void +meta_inhibit_shortcuts_dialog_default_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + MetaInhibitShortcutsDialogDefault *dialog; + + dialog = META_INHIBIT_SHORTCUTS_DIALOG_DEFAULT (object); + + switch (prop_id) + { + case PROP_WINDOW: + g_value_set_object (value, dialog->window); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + } +} + +static void +meta_inhibit_shortcuts_dialog_default_class_init (MetaInhibitShortcutsDialogDefaultClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->set_property = meta_inhibit_shortcuts_dialog_default_set_property; + object_class->get_property = meta_inhibit_shortcuts_dialog_default_get_property; + + g_object_class_override_property (object_class, PROP_WINDOW, "window"); +} + +static void +meta_inhibit_shortcuts_dialog_default_init (MetaInhibitShortcutsDialogDefault *dialog) +{ +} + +MetaInhibitShortcutsDialog * +meta_inhibit_shortcuts_dialog_default_new (MetaWindow *window) +{ + return g_object_new (META_TYPE_INHIBIT_SHORTCUTS_DIALOG_DEFAULT, + "window", window, + NULL); +}