
Moving it to the correct namespace and marking as final Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3917>
101 lines
3.6 KiB
C
101 lines
3.6 KiB
C
/* CALLY - The Clutter Accessibility Implementation Library
|
|
*
|
|
* Copyright (C) 2010 Igalia, S.L.
|
|
*
|
|
* Author: Alejandro Piñeiro Iglesias <apinheiro@igalia.com>
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2 of the License, or (at your option) any later version.
|
|
*
|
|
* This library 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
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
/**
|
|
* ClutterCloneAccessible:
|
|
*
|
|
* Implementation of the ATK interfaces for a #ClutterClone
|
|
*
|
|
* #ClutterCloneAccessible implements the required ATK interfaces of [class@Clutter.Clone]
|
|
*
|
|
* In particular it sets a proper role for the clone, as just a image,
|
|
* as it is the sanest and simplest approach.
|
|
*/
|
|
|
|
/* Design rationale for ClutterCloneAccessible:
|
|
*
|
|
* In the old times, it was just ClutterCloneTexture. So, from a a11y POV
|
|
* ClutterCloneAccessibleTexture was just another image, like ClutterTexture, and if
|
|
* it was a clone was irrelevant. So on cally-0.8, ClutterCloneAccessibleTexture
|
|
* expose a object with role ATK_ROLE_IMAGE. But now, ClutterClone is more
|
|
* general. You can clone any object, including groups, and made things
|
|
* like have one text entry, and a clone with different properties in the
|
|
* same window, updated both at once.
|
|
*
|
|
* The question is if the idea is have a ClutterClone as a "first-class"
|
|
* citizen inside the stage hierarchy (full clone), or it is just supposed
|
|
* to be a mirror image of the original object.
|
|
*
|
|
* In the case of the a11y POV this would mean that if the text changes on
|
|
* the source, the clone should emit as well the text-changing signals.
|
|
*
|
|
* As ClutterClone smartly just paint the same object with different
|
|
* parameters, this would mean that it should be the cally object the one
|
|
* that should replicate the source clutter hierarchy to do that,
|
|
* something that just sound crazy.
|
|
*
|
|
* Taking into account that:
|
|
*
|
|
* - ClutterClone doesn't re-emit mirrored signals from the source
|
|
* I think that likely the answer would be "yes, it is just a
|
|
* mirrored image, not a real full clone".
|
|
*
|
|
* - You can't interact directly with the clone (ie: focus, and so on).
|
|
* Its basic usage (right now) is clone textures.
|
|
*
|
|
* Any other solution could be overwhelming.
|
|
*
|
|
* I think that the final solution would be that ClutterClone from the
|
|
* a11y POV should still be managed as a image (with the proper properties,
|
|
* position, size, etc.).
|
|
*/
|
|
#include "config.h"
|
|
|
|
#include "clutter/clutter-clone-accessible-private.h"
|
|
|
|
struct _ClutterCloneAccessible
|
|
{
|
|
ClutterActorAccessible parent;
|
|
};
|
|
|
|
G_DEFINE_FINAL_TYPE (ClutterCloneAccessible, clutter_clone_accessible, CLUTTER_TYPE_ACTOR_ACCESSIBLE)
|
|
|
|
static void
|
|
clutter_clone_accessible_real_initialize (AtkObject *obj,
|
|
gpointer data)
|
|
{
|
|
ATK_OBJECT_CLASS (clutter_clone_accessible_parent_class)->initialize (obj, data);
|
|
|
|
obj->role = ATK_ROLE_IMAGE;
|
|
}
|
|
|
|
static void
|
|
clutter_clone_accessible_class_init (ClutterCloneAccessibleClass *klass)
|
|
{
|
|
AtkObjectClass *class = ATK_OBJECT_CLASS (klass);
|
|
|
|
class->initialize = clutter_clone_accessible_real_initialize;
|
|
}
|
|
|
|
static void
|
|
clutter_clone_accessible_init (ClutterCloneAccessible *clone)
|
|
{
|
|
}
|