Bug Summary

File:ctk/a11y/ctkwindowaccessible.c
Warning:line 228, column 22
This statement is never executed

Annotated Source Code

Press '?' to see keyboard shortcuts

clang -cc1 -cc1 -triple x86_64-pc-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name ctkwindowaccessible.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/ctk -resource-dir /usr/lib/llvm-16/lib/clang/16 -D HAVE_CONFIG_H -I . -I .. -D G_LOG_DOMAIN="Ctk" -D G_LOG_USE_STRUCTURED=1 -D CTK_VERSION="3.25.5" -D CTK_BINARY_VERSION="3.0.0" -D CTK_COMPILATION -D CTK_PRINT_BACKEND_ENABLE_UNSUPPORTED -D CTK_LIBDIR="/usr/lib" -D CTK_LOCALEDIR="/usr/share/locale" -D CTK_DATADIR="/usr/share" -D CTK_DATA_PREFIX="/usr" -D CTK_SYSCONFDIR="/usr/etc" -D CTK_HOST="x86_64-pc-linux-gnu" -D CTK_PRINT_BACKENDS="file,cups" -D X11_DATA_PREFIX="/usr" -D ISO_CODES_PREFIX="" -I .. -I ../ctk -I .. -I ../cdk -I /usr/include/glib-2.0 -I /usr/lib/x86_64-linux-gnu/glib-2.0/include -I /usr/include/sysprof-6 -D G_ENABLE_DEBUG -D G_ENABLE_CONSISTENCY_CHECKS -D GLIB_MIN_REQUIRED_VERSION=GLIB_VERSION_2_66 -D GLIB_MAX_ALLOWED_VERSION=GLIB_VERSION_2_66 -I /usr/include/pango-1.0 -I /usr/include/glib-2.0 -I /usr/lib/x86_64-linux-gnu/glib-2.0/include -I /usr/include/sysprof-6 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/fribidi -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/atk-1.0 -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/x86_64-linux-gnu -I /usr/include/webp -I /usr/include/at-spi2-atk/2.0 -I /usr/include/at-spi-2.0 -I /usr/include/dbus-1.0 -I /usr/lib/x86_64-linux-gnu/dbus-1.0/include -I /usr/include/gio-unix-2.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/glib-2.0 -I /usr/lib/x86_64-linux-gnu/glib-2.0/include -I /usr/include/sysprof-6 -I /usr/include/pango-1.0 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/fribidi -I /usr/include/cairo -I /usr/include/pixman-1 -D PIC -internal-isystem /usr/lib/llvm-16/lib/clang/16/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdebug-compilation-dir=/rootdir/ctk -ferror-limit 19 -fvisibility=hidden -fgnuc-version=4.2.1 -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2024-09-19-170037-43636-1 -x c a11y/ctkwindowaccessible.c
1/* CTK+ - accessibility implementations
2 * Copyright 2011, F123 Consulting & Mais Diferenças
3 * Copyright 2001, 2002, 2003 Sun Microsystems Inc.
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19#include "config.h"
20
21#include <ctk/ctk.h>
22
23#include "ctkwidgetaccessibleprivate.h"
24#include "ctkwindowaccessible.h"
25#include "ctktoplevelaccessible.h"
26#include "ctkwindowprivate.h"
27
28/* atkcomponent.h */
29
30static void ctk_window_accessible_get_extents (AtkComponent *component,
31 gint *x,
32 gint *y,
33 gint *width,
34 gint *height,
35 AtkCoordType coord_type);
36static void ctk_window_accessible_get_size (AtkComponent *component,
37 gint *width,
38 gint *height);
39
40static void atk_component_interface_init (AtkComponentIface *iface);
41static void atk_window_interface_init (AtkWindowIface *iface);
42
43G_DEFINE_TYPE_WITH_CODE (CtkWindowAccessible,static void ctk_window_accessible_init (CtkWindowAccessible *
self); static void ctk_window_accessible_class_init (CtkWindowAccessibleClass
*klass); static GType ctk_window_accessible_get_type_once (void
); static gpointer ctk_window_accessible_parent_class = ((void
*)0); static gint CtkWindowAccessible_private_offset; static void
ctk_window_accessible_class_intern_init (gpointer klass) { ctk_window_accessible_parent_class
= g_type_class_peek_parent (klass); if (CtkWindowAccessible_private_offset
!= 0) g_type_class_adjust_private_offset (klass, &CtkWindowAccessible_private_offset
); ctk_window_accessible_class_init ((CtkWindowAccessibleClass
*) klass); } __attribute__ ((__unused__)) static inline gpointer
ctk_window_accessible_get_instance_private (CtkWindowAccessible
*self) { return (((gpointer) ((guint8*) (self) + (glong) (CtkWindowAccessible_private_offset
)))); } GType ctk_window_accessible_get_type (void) { static GType
static_g_define_type_id = 0; if ((__extension__ ({ _Static_assert
(sizeof *(&static_g_define_type_id) == sizeof (gpointer)
, "Expression evaluates to false"); (void) (0 ? (gpointer) * (
&static_g_define_type_id) : ((void*)0)); (!(__extension__
({ _Static_assert (sizeof *(&static_g_define_type_id) ==
sizeof (gpointer), "Expression evaluates to false"); __typeof__
(*(&static_g_define_type_id)) gapg_temp_newval; __typeof__
((&static_g_define_type_id)) gapg_temp_atomic = (&static_g_define_type_id
); __atomic_load (gapg_temp_atomic, &gapg_temp_newval, 5)
; gapg_temp_newval; })) && g_once_init_enter_pointer (
&static_g_define_type_id)); })) ) { GType g_define_type_id
= ctk_window_accessible_get_type_once (); (__extension__ ({ _Static_assert
(sizeof *(&static_g_define_type_id) == sizeof (gpointer)
, "Expression evaluates to false"); 0 ? (void) (*(&static_g_define_type_id
) = (g_define_type_id)) : (void) 0; g_once_init_leave_pointer
((&static_g_define_type_id), (gpointer) (guintptr) (g_define_type_id
)); })) ; } return static_g_define_type_id; } __attribute__ (
(__noinline__)) static GType ctk_window_accessible_get_type_once
(void) { GType g_define_type_id = g_type_register_static_simple
((ctk_container_accessible_get_type ()), g_intern_static_string
("CtkWindowAccessible"), sizeof (CtkWindowAccessibleClass), (
GClassInitFunc)(void (*)(void)) ctk_window_accessible_class_intern_init
, sizeof (CtkWindowAccessible), (GInstanceInitFunc)(void (*)(
void)) ctk_window_accessible_init, (GTypeFlags) 0); { {{ const
GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc
)(void (*)(void)) atk_component_interface_init, ((void*)0), (
(void*)0) }; g_type_add_interface_static (g_define_type_id, (
atk_component_get_type ()), &g_implement_interface_info);
} { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc
)(void (*)(void)) atk_window_interface_init, ((void*)0), ((void
*)0) }; g_type_add_interface_static (g_define_type_id, (atk_window_get_type
()), &g_implement_interface_info); };} } return g_define_type_id
; }
44 ctk_window_accessible,static void ctk_window_accessible_init (CtkWindowAccessible *
self); static void ctk_window_accessible_class_init (CtkWindowAccessibleClass
*klass); static GType ctk_window_accessible_get_type_once (void
); static gpointer ctk_window_accessible_parent_class = ((void
*)0); static gint CtkWindowAccessible_private_offset; static void
ctk_window_accessible_class_intern_init (gpointer klass) { ctk_window_accessible_parent_class
= g_type_class_peek_parent (klass); if (CtkWindowAccessible_private_offset
!= 0) g_type_class_adjust_private_offset (klass, &CtkWindowAccessible_private_offset
); ctk_window_accessible_class_init ((CtkWindowAccessibleClass
*) klass); } __attribute__ ((__unused__)) static inline gpointer
ctk_window_accessible_get_instance_private (CtkWindowAccessible
*self) { return (((gpointer) ((guint8*) (self) + (glong) (CtkWindowAccessible_private_offset
)))); } GType ctk_window_accessible_get_type (void) { static GType
static_g_define_type_id = 0; if ((__extension__ ({ _Static_assert
(sizeof *(&static_g_define_type_id) == sizeof (gpointer)
, "Expression evaluates to false"); (void) (0 ? (gpointer) * (
&static_g_define_type_id) : ((void*)0)); (!(__extension__
({ _Static_assert (sizeof *(&static_g_define_type_id) ==
sizeof (gpointer), "Expression evaluates to false"); __typeof__
(*(&static_g_define_type_id)) gapg_temp_newval; __typeof__
((&static_g_define_type_id)) gapg_temp_atomic = (&static_g_define_type_id
); __atomic_load (gapg_temp_atomic, &gapg_temp_newval, 5)
; gapg_temp_newval; })) && g_once_init_enter_pointer (
&static_g_define_type_id)); })) ) { GType g_define_type_id
= ctk_window_accessible_get_type_once (); (__extension__ ({ _Static_assert
(sizeof *(&static_g_define_type_id) == sizeof (gpointer)
, "Expression evaluates to false"); 0 ? (void) (*(&static_g_define_type_id
) = (g_define_type_id)) : (void) 0; g_once_init_leave_pointer
((&static_g_define_type_id), (gpointer) (guintptr) (g_define_type_id
)); })) ; } return static_g_define_type_id; } __attribute__ (
(__noinline__)) static GType ctk_window_accessible_get_type_once
(void) { GType g_define_type_id = g_type_register_static_simple
((ctk_container_accessible_get_type ()), g_intern_static_string
("CtkWindowAccessible"), sizeof (CtkWindowAccessibleClass), (
GClassInitFunc)(void (*)(void)) ctk_window_accessible_class_intern_init
, sizeof (CtkWindowAccessible), (GInstanceInitFunc)(void (*)(
void)) ctk_window_accessible_init, (GTypeFlags) 0); { {{ const
GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc
)(void (*)(void)) atk_component_interface_init, ((void*)0), (
(void*)0) }; g_type_add_interface_static (g_define_type_id, (
atk_component_get_type ()), &g_implement_interface_info);
} { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc
)(void (*)(void)) atk_window_interface_init, ((void*)0), ((void
*)0) }; g_type_add_interface_static (g_define_type_id, (atk_window_get_type
()), &g_implement_interface_info); };} } return g_define_type_id
; }
45 CTK_TYPE_CONTAINER_ACCESSIBLE,static void ctk_window_accessible_init (CtkWindowAccessible *
self); static void ctk_window_accessible_class_init (CtkWindowAccessibleClass
*klass); static GType ctk_window_accessible_get_type_once (void
); static gpointer ctk_window_accessible_parent_class = ((void
*)0); static gint CtkWindowAccessible_private_offset; static void
ctk_window_accessible_class_intern_init (gpointer klass) { ctk_window_accessible_parent_class
= g_type_class_peek_parent (klass); if (CtkWindowAccessible_private_offset
!= 0) g_type_class_adjust_private_offset (klass, &CtkWindowAccessible_private_offset
); ctk_window_accessible_class_init ((CtkWindowAccessibleClass
*) klass); } __attribute__ ((__unused__)) static inline gpointer
ctk_window_accessible_get_instance_private (CtkWindowAccessible
*self) { return (((gpointer) ((guint8*) (self) + (glong) (CtkWindowAccessible_private_offset
)))); } GType ctk_window_accessible_get_type (void) { static GType
static_g_define_type_id = 0; if ((__extension__ ({ _Static_assert
(sizeof *(&static_g_define_type_id) == sizeof (gpointer)
, "Expression evaluates to false"); (void) (0 ? (gpointer) * (
&static_g_define_type_id) : ((void*)0)); (!(__extension__
({ _Static_assert (sizeof *(&static_g_define_type_id) ==
sizeof (gpointer), "Expression evaluates to false"); __typeof__
(*(&static_g_define_type_id)) gapg_temp_newval; __typeof__
((&static_g_define_type_id)) gapg_temp_atomic = (&static_g_define_type_id
); __atomic_load (gapg_temp_atomic, &gapg_temp_newval, 5)
; gapg_temp_newval; })) && g_once_init_enter_pointer (
&static_g_define_type_id)); })) ) { GType g_define_type_id
= ctk_window_accessible_get_type_once (); (__extension__ ({ _Static_assert
(sizeof *(&static_g_define_type_id) == sizeof (gpointer)
, "Expression evaluates to false"); 0 ? (void) (*(&static_g_define_type_id
) = (g_define_type_id)) : (void) 0; g_once_init_leave_pointer
((&static_g_define_type_id), (gpointer) (guintptr) (g_define_type_id
)); })) ; } return static_g_define_type_id; } __attribute__ (
(__noinline__)) static GType ctk_window_accessible_get_type_once
(void) { GType g_define_type_id = g_type_register_static_simple
((ctk_container_accessible_get_type ()), g_intern_static_string
("CtkWindowAccessible"), sizeof (CtkWindowAccessibleClass), (
GClassInitFunc)(void (*)(void)) ctk_window_accessible_class_intern_init
, sizeof (CtkWindowAccessible), (GInstanceInitFunc)(void (*)(
void)) ctk_window_accessible_init, (GTypeFlags) 0); { {{ const
GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc
)(void (*)(void)) atk_component_interface_init, ((void*)0), (
(void*)0) }; g_type_add_interface_static (g_define_type_id, (
atk_component_get_type ()), &g_implement_interface_info);
} { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc
)(void (*)(void)) atk_window_interface_init, ((void*)0), ((void
*)0) }; g_type_add_interface_static (g_define_type_id, (atk_window_get_type
()), &g_implement_interface_info); };} } return g_define_type_id
; }
46 G_IMPLEMENT_INTERFACE (ATK_TYPE_COMPONENT,static void ctk_window_accessible_init (CtkWindowAccessible *
self); static void ctk_window_accessible_class_init (CtkWindowAccessibleClass
*klass); static GType ctk_window_accessible_get_type_once (void
); static gpointer ctk_window_accessible_parent_class = ((void
*)0); static gint CtkWindowAccessible_private_offset; static void
ctk_window_accessible_class_intern_init (gpointer klass) { ctk_window_accessible_parent_class
= g_type_class_peek_parent (klass); if (CtkWindowAccessible_private_offset
!= 0) g_type_class_adjust_private_offset (klass, &CtkWindowAccessible_private_offset
); ctk_window_accessible_class_init ((CtkWindowAccessibleClass
*) klass); } __attribute__ ((__unused__)) static inline gpointer
ctk_window_accessible_get_instance_private (CtkWindowAccessible
*self) { return (((gpointer) ((guint8*) (self) + (glong) (CtkWindowAccessible_private_offset
)))); } GType ctk_window_accessible_get_type (void) { static GType
static_g_define_type_id = 0; if ((__extension__ ({ _Static_assert
(sizeof *(&static_g_define_type_id) == sizeof (gpointer)
, "Expression evaluates to false"); (void) (0 ? (gpointer) * (
&static_g_define_type_id) : ((void*)0)); (!(__extension__
({ _Static_assert (sizeof *(&static_g_define_type_id) ==
sizeof (gpointer), "Expression evaluates to false"); __typeof__
(*(&static_g_define_type_id)) gapg_temp_newval; __typeof__
((&static_g_define_type_id)) gapg_temp_atomic = (&static_g_define_type_id
); __atomic_load (gapg_temp_atomic, &gapg_temp_newval, 5)
; gapg_temp_newval; })) && g_once_init_enter_pointer (
&static_g_define_type_id)); })) ) { GType g_define_type_id
= ctk_window_accessible_get_type_once (); (__extension__ ({ _Static_assert
(sizeof *(&static_g_define_type_id) == sizeof (gpointer)
, "Expression evaluates to false"); 0 ? (void) (*(&static_g_define_type_id
) = (g_define_type_id)) : (void) 0; g_once_init_leave_pointer
((&static_g_define_type_id), (gpointer) (guintptr) (g_define_type_id
)); })) ; } return static_g_define_type_id; } __attribute__ (
(__noinline__)) static GType ctk_window_accessible_get_type_once
(void) { GType g_define_type_id = g_type_register_static_simple
((ctk_container_accessible_get_type ()), g_intern_static_string
("CtkWindowAccessible"), sizeof (CtkWindowAccessibleClass), (
GClassInitFunc)(void (*)(void)) ctk_window_accessible_class_intern_init
, sizeof (CtkWindowAccessible), (GInstanceInitFunc)(void (*)(
void)) ctk_window_accessible_init, (GTypeFlags) 0); { {{ const
GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc
)(void (*)(void)) atk_component_interface_init, ((void*)0), (
(void*)0) }; g_type_add_interface_static (g_define_type_id, (
atk_component_get_type ()), &g_implement_interface_info);
} { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc
)(void (*)(void)) atk_window_interface_init, ((void*)0), ((void
*)0) }; g_type_add_interface_static (g_define_type_id, (atk_window_get_type
()), &g_implement_interface_info); };} } return g_define_type_id
; }
47 atk_component_interface_init)static void ctk_window_accessible_init (CtkWindowAccessible *
self); static void ctk_window_accessible_class_init (CtkWindowAccessibleClass
*klass); static GType ctk_window_accessible_get_type_once (void
); static gpointer ctk_window_accessible_parent_class = ((void
*)0); static gint CtkWindowAccessible_private_offset; static void
ctk_window_accessible_class_intern_init (gpointer klass) { ctk_window_accessible_parent_class
= g_type_class_peek_parent (klass); if (CtkWindowAccessible_private_offset
!= 0) g_type_class_adjust_private_offset (klass, &CtkWindowAccessible_private_offset
); ctk_window_accessible_class_init ((CtkWindowAccessibleClass
*) klass); } __attribute__ ((__unused__)) static inline gpointer
ctk_window_accessible_get_instance_private (CtkWindowAccessible
*self) { return (((gpointer) ((guint8*) (self) + (glong) (CtkWindowAccessible_private_offset
)))); } GType ctk_window_accessible_get_type (void) { static GType
static_g_define_type_id = 0; if ((__extension__ ({ _Static_assert
(sizeof *(&static_g_define_type_id) == sizeof (gpointer)
, "Expression evaluates to false"); (void) (0 ? (gpointer) * (
&static_g_define_type_id) : ((void*)0)); (!(__extension__
({ _Static_assert (sizeof *(&static_g_define_type_id) ==
sizeof (gpointer), "Expression evaluates to false"); __typeof__
(*(&static_g_define_type_id)) gapg_temp_newval; __typeof__
((&static_g_define_type_id)) gapg_temp_atomic = (&static_g_define_type_id
); __atomic_load (gapg_temp_atomic, &gapg_temp_newval, 5)
; gapg_temp_newval; })) && g_once_init_enter_pointer (
&static_g_define_type_id)); })) ) { GType g_define_type_id
= ctk_window_accessible_get_type_once (); (__extension__ ({ _Static_assert
(sizeof *(&static_g_define_type_id) == sizeof (gpointer)
, "Expression evaluates to false"); 0 ? (void) (*(&static_g_define_type_id
) = (g_define_type_id)) : (void) 0; g_once_init_leave_pointer
((&static_g_define_type_id), (gpointer) (guintptr) (g_define_type_id
)); })) ; } return static_g_define_type_id; } __attribute__ (
(__noinline__)) static GType ctk_window_accessible_get_type_once
(void) { GType g_define_type_id = g_type_register_static_simple
((ctk_container_accessible_get_type ()), g_intern_static_string
("CtkWindowAccessible"), sizeof (CtkWindowAccessibleClass), (
GClassInitFunc)(void (*)(void)) ctk_window_accessible_class_intern_init
, sizeof (CtkWindowAccessible), (GInstanceInitFunc)(void (*)(
void)) ctk_window_accessible_init, (GTypeFlags) 0); { {{ const
GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc
)(void (*)(void)) atk_component_interface_init, ((void*)0), (
(void*)0) }; g_type_add_interface_static (g_define_type_id, (
atk_component_get_type ()), &g_implement_interface_info);
} { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc
)(void (*)(void)) atk_window_interface_init, ((void*)0), ((void
*)0) }; g_type_add_interface_static (g_define_type_id, (atk_window_get_type
()), &g_implement_interface_info); };} } return g_define_type_id
; }
48 G_IMPLEMENT_INTERFACE (ATK_TYPE_WINDOW,static void ctk_window_accessible_init (CtkWindowAccessible *
self); static void ctk_window_accessible_class_init (CtkWindowAccessibleClass
*klass); static GType ctk_window_accessible_get_type_once (void
); static gpointer ctk_window_accessible_parent_class = ((void
*)0); static gint CtkWindowAccessible_private_offset; static void
ctk_window_accessible_class_intern_init (gpointer klass) { ctk_window_accessible_parent_class
= g_type_class_peek_parent (klass); if (CtkWindowAccessible_private_offset
!= 0) g_type_class_adjust_private_offset (klass, &CtkWindowAccessible_private_offset
); ctk_window_accessible_class_init ((CtkWindowAccessibleClass
*) klass); } __attribute__ ((__unused__)) static inline gpointer
ctk_window_accessible_get_instance_private (CtkWindowAccessible
*self) { return (((gpointer) ((guint8*) (self) + (glong) (CtkWindowAccessible_private_offset
)))); } GType ctk_window_accessible_get_type (void) { static GType
static_g_define_type_id = 0; if ((__extension__ ({ _Static_assert
(sizeof *(&static_g_define_type_id) == sizeof (gpointer)
, "Expression evaluates to false"); (void) (0 ? (gpointer) * (
&static_g_define_type_id) : ((void*)0)); (!(__extension__
({ _Static_assert (sizeof *(&static_g_define_type_id) ==
sizeof (gpointer), "Expression evaluates to false"); __typeof__
(*(&static_g_define_type_id)) gapg_temp_newval; __typeof__
((&static_g_define_type_id)) gapg_temp_atomic = (&static_g_define_type_id
); __atomic_load (gapg_temp_atomic, &gapg_temp_newval, 5)
; gapg_temp_newval; })) && g_once_init_enter_pointer (
&static_g_define_type_id)); })) ) { GType g_define_type_id
= ctk_window_accessible_get_type_once (); (__extension__ ({ _Static_assert
(sizeof *(&static_g_define_type_id) == sizeof (gpointer)
, "Expression evaluates to false"); 0 ? (void) (*(&static_g_define_type_id
) = (g_define_type_id)) : (void) 0; g_once_init_leave_pointer
((&static_g_define_type_id), (gpointer) (guintptr) (g_define_type_id
)); })) ; } return static_g_define_type_id; } __attribute__ (
(__noinline__)) static GType ctk_window_accessible_get_type_once
(void) { GType g_define_type_id = g_type_register_static_simple
((ctk_container_accessible_get_type ()), g_intern_static_string
("CtkWindowAccessible"), sizeof (CtkWindowAccessibleClass), (
GClassInitFunc)(void (*)(void)) ctk_window_accessible_class_intern_init
, sizeof (CtkWindowAccessible), (GInstanceInitFunc)(void (*)(
void)) ctk_window_accessible_init, (GTypeFlags) 0); { {{ const
GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc
)(void (*)(void)) atk_component_interface_init, ((void*)0), (
(void*)0) }; g_type_add_interface_static (g_define_type_id, (
atk_component_get_type ()), &g_implement_interface_info);
} { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc
)(void (*)(void)) atk_window_interface_init, ((void*)0), ((void
*)0) }; g_type_add_interface_static (g_define_type_id, (atk_window_get_type
()), &g_implement_interface_info); };} } return g_define_type_id
; }
49 atk_window_interface_init))static void ctk_window_accessible_init (CtkWindowAccessible *
self); static void ctk_window_accessible_class_init (CtkWindowAccessibleClass
*klass); static GType ctk_window_accessible_get_type_once (void
); static gpointer ctk_window_accessible_parent_class = ((void
*)0); static gint CtkWindowAccessible_private_offset; static void
ctk_window_accessible_class_intern_init (gpointer klass) { ctk_window_accessible_parent_class
= g_type_class_peek_parent (klass); if (CtkWindowAccessible_private_offset
!= 0) g_type_class_adjust_private_offset (klass, &CtkWindowAccessible_private_offset
); ctk_window_accessible_class_init ((CtkWindowAccessibleClass
*) klass); } __attribute__ ((__unused__)) static inline gpointer
ctk_window_accessible_get_instance_private (CtkWindowAccessible
*self) { return (((gpointer) ((guint8*) (self) + (glong) (CtkWindowAccessible_private_offset
)))); } GType ctk_window_accessible_get_type (void) { static GType
static_g_define_type_id = 0; if ((__extension__ ({ _Static_assert
(sizeof *(&static_g_define_type_id) == sizeof (gpointer)
, "Expression evaluates to false"); (void) (0 ? (gpointer) * (
&static_g_define_type_id) : ((void*)0)); (!(__extension__
({ _Static_assert (sizeof *(&static_g_define_type_id) ==
sizeof (gpointer), "Expression evaluates to false"); __typeof__
(*(&static_g_define_type_id)) gapg_temp_newval; __typeof__
((&static_g_define_type_id)) gapg_temp_atomic = (&static_g_define_type_id
); __atomic_load (gapg_temp_atomic, &gapg_temp_newval, 5)
; gapg_temp_newval; })) && g_once_init_enter_pointer (
&static_g_define_type_id)); })) ) { GType g_define_type_id
= ctk_window_accessible_get_type_once (); (__extension__ ({ _Static_assert
(sizeof *(&static_g_define_type_id) == sizeof (gpointer)
, "Expression evaluates to false"); 0 ? (void) (*(&static_g_define_type_id
) = (g_define_type_id)) : (void) 0; g_once_init_leave_pointer
((&static_g_define_type_id), (gpointer) (guintptr) (g_define_type_id
)); })) ; } return static_g_define_type_id; } __attribute__ (
(__noinline__)) static GType ctk_window_accessible_get_type_once
(void) { GType g_define_type_id = g_type_register_static_simple
((ctk_container_accessible_get_type ()), g_intern_static_string
("CtkWindowAccessible"), sizeof (CtkWindowAccessibleClass), (
GClassInitFunc)(void (*)(void)) ctk_window_accessible_class_intern_init
, sizeof (CtkWindowAccessible), (GInstanceInitFunc)(void (*)(
void)) ctk_window_accessible_init, (GTypeFlags) 0); { {{ const
GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc
)(void (*)(void)) atk_component_interface_init, ((void*)0), (
(void*)0) }; g_type_add_interface_static (g_define_type_id, (
atk_component_get_type ()), &g_implement_interface_info);
} { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc
)(void (*)(void)) atk_window_interface_init, ((void*)0), ((void
*)0) }; g_type_add_interface_static (g_define_type_id, (atk_window_get_type
()), &g_implement_interface_info); };} } return g_define_type_id
; }
;
50
51
52static void
53ctk_window_accessible_focus_event (AtkObject *obj,
54 gboolean focus_in)
55{
56 atk_object_notify_state_change (obj, ATK_STATE_ACTIVE, focus_in);
57}
58
59static void
60ctk_window_accessible_notify_ctk (GObject *obj,
61 GParamSpec *pspec)
62{
63 CtkWidget *widget = CTK_WIDGET (obj)((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((obj)), ((ctk_widget_get_type ()))))))
;
64 AtkObject* atk_obj = ctk_widget_get_accessible (widget);
65
66 if (g_strcmp0 (pspec->name, "title") == 0)
67 {
68 g_object_notify (G_OBJECT (atk_obj)((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((atk_obj)), (((GType) ((20) << (2))))))))
, "accessible-name");
69 g_signal_emit_by_name (atk_obj, "visible-data-changed");
70 }
71 else
72 CTK_WIDGET_ACCESSIBLE_CLASS (ctk_window_accessible_parent_class)((((CtkWidgetAccessibleClass*) (void *) g_type_check_class_cast
((GTypeClass*) ((ctk_window_accessible_parent_class)), ((ctk_widget_accessible_get_type
()))))))
->notify_ctk (obj, pspec);
73}
74
75static gboolean
76window_state_event_cb (CtkWidget *widget,
77 CdkEventWindowState *event)
78{
79 AtkObject* obj;
80
81 obj = ctk_widget_get_accessible (widget);
82 atk_object_notify_state_change (obj, ATK_STATE_ICONIFIED,
83 (event->new_window_state & CDK_WINDOW_STATE_ICONIFIED) != 0);
84
85 return FALSE(0);
86}
87
88static void
89ctk_window_accessible_initialize (AtkObject *obj,
90 gpointer data)
91{
92 CtkWidget *widget = CTK_WIDGET (data)((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((data)), ((ctk_widget_get_type ()))))))
;
93
94 ATK_OBJECT_CLASS (ctk_window_accessible_parent_class)((((AtkObjectClass*) (void *) g_type_check_class_cast ((GTypeClass
*) ((ctk_window_accessible_parent_class)), ((atk_object_get_type
()))))))
->initialize (obj, data);
95
96 g_signal_connect (data, "window-state-event", G_CALLBACK (window_state_event_cb), NULL)g_signal_connect_data ((data), ("window-state-event"), (((GCallback
) (window_state_event_cb))), (((void*)0)), ((void*)0), (GConnectFlags
) 0)
;
97 _ctk_widget_accessible_set_layer (CTK_WIDGET_ACCESSIBLE (obj)((((CtkWidgetAccessible*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((obj)), ((ctk_widget_accessible_get_type (
)))))))
, ATK_LAYER_WINDOW);
98
99 if (ctk_window_get_window_type (CTK_WINDOW (widget)((((CtkWindow*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((widget)), ((ctk_window_get_type ()))))))
) == CTK_WINDOW_POPUP)
100 obj->role = ATK_ROLE_WINDOW;
101 else
102 obj->role = ATK_ROLE_FRAME;
103}
104
105static CtkWidget *
106find_label_child (CtkContainer *container)
107{
108 GList *children, *tmp_list;
109 CtkWidget *child;
110
111 children = ctk_container_get_children (container);
112
113 child = NULL((void*)0);
114 for (tmp_list = children; tmp_list != NULL((void*)0); tmp_list = tmp_list->next)
115 {
116 if (CTK_IS_LABEL (tmp_list->data)(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (
(tmp_list->data)); GType __t = ((ctk_label_get_type ())); gboolean
__r; if (!__inst) __r = (0); else if (__inst->g_class &&
__inst->g_class->g_type == __t) __r = (!(0)); else __r
= g_type_check_instance_is_a (__inst, __t); __r; }))))
)
117 {
118 child = CTK_WIDGET (tmp_list->data)((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((tmp_list->data)), ((ctk_widget_get_type ()))))))
;
119 break;
120 }
121 else if (CTK_IS_CONTAINER (tmp_list->data)(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (
(tmp_list->data)); GType __t = ((ctk_container_get_type ()
)); gboolean __r; if (!__inst) __r = (0); else if (__inst->
g_class && __inst->g_class->g_type == __t) __r =
(!(0)); else __r = g_type_check_instance_is_a (__inst, __t);
__r; }))))
)
122 {
123 child = find_label_child (CTK_CONTAINER (tmp_list->data)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((tmp_list->data)), ((ctk_container_get_type ()))))))
);
124 if (child)
125 break;
126 }
127 }
128 g_list_free (children);
129 return child;
130}
131
132static const gchar *
133ctk_window_accessible_get_name (AtkObject *accessible)
134{
135 const gchar* name;
136 CtkWidget* widget;
137
138 widget = ctk_accessible_get_widget (CTK_ACCESSIBLE (accessible)((((CtkAccessible*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((accessible)), ((ctk_accessible_get_type ()))))))
);
139 if (widget == NULL((void*)0))
140 return NULL((void*)0);
141
142 name = ATK_OBJECT_CLASS (ctk_window_accessible_parent_class)((((AtkObjectClass*) (void *) g_type_check_class_cast ((GTypeClass
*) ((ctk_window_accessible_parent_class)), ((atk_object_get_type
()))))))
->get_name (accessible);
143 if (name != NULL((void*)0))
144 return name;
145
146 if (CTK_IS_WINDOW (widget)(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (
(widget)); GType __t = ((ctk_window_get_type ())); gboolean __r
; if (!__inst) __r = (0); else if (__inst->g_class &&
__inst->g_class->g_type == __t) __r = (!(0)); else __r
= g_type_check_instance_is_a (__inst, __t); __r; }))))
)
147 {
148 CtkWindow *window = CTK_WINDOW (widget)((((CtkWindow*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((widget)), ((ctk_window_get_type ()))))))
;
149
150 name = ctk_window_get_title (window);
151 if (name == NULL((void*)0) && accessible->role == ATK_ROLE_TOOL_TIP)
152 {
153 CtkWidget *child;
154
155 child = find_label_child (CTK_CONTAINER (window)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((window)), ((ctk_container_get_type ()))))))
);
156 if (CTK_IS_LABEL (child)(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (
(child)); GType __t = ((ctk_label_get_type ())); gboolean __r
; if (!__inst) __r = (0); else if (__inst->g_class &&
__inst->g_class->g_type == __t) __r = (!(0)); else __r
= g_type_check_instance_is_a (__inst, __t); __r; }))))
)
157 name = ctk_label_get_text (CTK_LABEL (child)((((CtkLabel*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((child)), ((ctk_label_get_type ()))))))
);
158 }
159 }
160 return name;
161}
162
163static gint
164ctk_window_accessible_get_index_in_parent (AtkObject *accessible)
165{
166 CtkWidget* widget;
167 AtkObject* atk_obj;
168 gint index = -1;
169
170 widget = ctk_accessible_get_widget (CTK_ACCESSIBLE (accessible)((((CtkAccessible*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((accessible)), ((ctk_accessible_get_type ()))))))
);
171 if (widget == NULL((void*)0))
172 return -1;
173
174 index = ATK_OBJECT_CLASS (ctk_window_accessible_parent_class)((((AtkObjectClass*) (void *) g_type_check_class_cast ((GTypeClass
*) ((ctk_window_accessible_parent_class)), ((atk_object_get_type
()))))))
->get_index_in_parent (accessible);
175 if (index != -1)
176 return index;
177
178 atk_obj = atk_get_root ();
179
180 if (CTK_IS_WINDOW (widget)(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (
(widget)); GType __t = ((ctk_window_get_type ())); gboolean __r
; if (!__inst) __r = (0); else if (__inst->g_class &&
__inst->g_class->g_type == __t) __r = (!(0)); else __r
= g_type_check_instance_is_a (__inst, __t); __r; }))))
)
181 {
182 CtkWindow *window = CTK_WINDOW (widget)((((CtkWindow*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((widget)), ((ctk_window_get_type ()))))))
;
183 if (CTK_IS_TOPLEVEL_ACCESSIBLE (atk_obj)(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (
(atk_obj)); GType __t = ((ctk_toplevel_accessible_get_type ()
)); gboolean __r; if (!__inst) __r = (0); else if (__inst->
g_class && __inst->g_class->g_type == __t) __r =
(!(0)); else __r = g_type_check_instance_is_a (__inst, __t);
__r; }))))
)
184 {
185 CtkToplevelAccessible *toplevel = CTK_TOPLEVEL_ACCESSIBLE (atk_obj)((((CtkToplevelAccessible*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((atk_obj)), ((ctk_toplevel_accessible_get_type
()))))))
;
186 index = g_list_index (ctk_toplevel_accessible_get_children (toplevel), window);
187 }
188 else
189 {
190 gint i, sibling_count;
191
192 sibling_count = atk_object_get_n_accessible_children (atk_obj);
193 for (i = 0; i < sibling_count && index == -1; ++i)
194 {
195 AtkObject *child = atk_object_ref_accessible_child (atk_obj, i);
196 if (accessible == child)
197 index = i;
198 g_object_unref (G_OBJECT (child)((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((child)), (((GType) ((20) << (2))))))))
);
199 }
200 }
201 }
202 return index;
203}
204
205static AtkRelationSet *
206ctk_window_accessible_ref_relation_set (AtkObject *obj)
207{
208 CtkWidget *widget;
209 AtkRelationSet *relation_set;
210 AtkObject *array[1];
211 AtkRelation* relation;
212 CtkWidget *current_widget;
213
214 widget = ctk_accessible_get_widget (CTK_ACCESSIBLE (obj)((((CtkAccessible*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((obj)), ((ctk_accessible_get_type ()))))))
);
215 if (widget == NULL((void*)0))
216 return NULL((void*)0);
217
218 relation_set = ATK_OBJECT_CLASS (ctk_window_accessible_parent_class)((((AtkObjectClass*) (void *) g_type_check_class_cast ((GTypeClass
*) ((ctk_window_accessible_parent_class)), ((atk_object_get_type
()))))))
->ref_relation_set (obj);
219
220 if (atk_object_get_role (obj) == ATK_ROLE_TOOL_TIP)
221 {
222 relation = atk_relation_set_get_relation_by_type (relation_set, ATK_RELATION_POPUP_FOR);
223 if (relation)
224 atk_relation_set_remove (relation_set, relation);
225
226 if (0) /* FIXME need a way to go from tooltip window to widget */
227 {
228 array[0] = ctk_widget_get_accessible (current_widget);
This statement is never executed
229 relation = atk_relation_new (array, 1, ATK_RELATION_POPUP_FOR);
230 atk_relation_set_add (relation_set, relation);
231 g_object_unref (relation);
232 }
233 }
234 return relation_set;
235}
236
237static AtkStateSet *
238ctk_window_accessible_ref_state_set (AtkObject *accessible)
239{
240 AtkStateSet *state_set;
241 CtkWidget *widget;
242 CtkWindow *window;
243 CdkWindow *cdk_window;
244 CdkWindowState state;
245
246 widget = ctk_accessible_get_widget (CTK_ACCESSIBLE (accessible)((((CtkAccessible*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((accessible)), ((ctk_accessible_get_type ()))))))
);
247 if (widget == NULL((void*)0))
248 return NULL((void*)0);
249
250 state_set = ATK_OBJECT_CLASS (ctk_window_accessible_parent_class)((((AtkObjectClass*) (void *) g_type_check_class_cast ((GTypeClass
*) ((ctk_window_accessible_parent_class)), ((atk_object_get_type
()))))))
->ref_state_set (accessible);
251
252 window = CTK_WINDOW (widget)((((CtkWindow*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((widget)), ((ctk_window_get_type ()))))))
;
253
254 if (ctk_window_has_toplevel_focus (window) && ctk_window_is_active (window))
255 atk_state_set_add_state (state_set, ATK_STATE_ACTIVE);
256
257 cdk_window = ctk_widget_get_window (widget);
258 if (cdk_window)
259 {
260 state = cdk_window_get_state (cdk_window);
261 if (state & CDK_WINDOW_STATE_ICONIFIED)
262 atk_state_set_add_state (state_set, ATK_STATE_ICONIFIED);
263 }
264 if (ctk_window_get_modal (window))
265 atk_state_set_add_state (state_set, ATK_STATE_MODAL);
266
267 if (ctk_window_get_resizable (window))
268 atk_state_set_add_state (state_set, ATK_STATE_RESIZABLE);
269
270 return state_set;
271}
272
273static void
274count_widget (CtkWidget *widget G_GNUC_UNUSED__attribute__ ((__unused__)),
275 gint *count)
276{
277 (*count)++;
278}
279
280static void
281prepend_widget (CtkWidget *widget,
282 GList **list)
283{
284 *list = g_list_prepend (*list, widget);
285}
286
287static gint
288ctk_window_accessible_get_n_children (AtkObject *object)
289{
290 CtkWidget *window;
291 gint count = 0;
292
293 window = ctk_accessible_get_widget (CTK_ACCESSIBLE (object)((((CtkAccessible*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((object)), ((ctk_accessible_get_type ()))))))
);
294 ctk_container_forall (CTK_CONTAINER (window)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((window)), ((ctk_container_get_type ()))))))
,
295 (CtkCallback) count_widget, &count);
296 return count;
297}
298
299static AtkObject *
300ctk_window_accessible_ref_child (AtkObject *object,
301 gint i)
302{
303 CtkWidget *window, *ref_child;
304 GList *children = NULL((void*)0);
305
306 window = ctk_accessible_get_widget (CTK_ACCESSIBLE (object)((((CtkAccessible*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((object)), ((ctk_accessible_get_type ()))))))
);
307 ctk_container_forall (CTK_CONTAINER (window)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((window)), ((ctk_container_get_type ()))))))
,
308 (CtkCallback) prepend_widget, &children);
309 ref_child = g_list_nth_data (children, i);
310 g_list_free (children);
311
312 if (!ref_child)
313 return NULL((void*)0);
314
315 return g_object_ref (ctk_widget_get_accessible (ref_child))((__typeof__ (ctk_widget_get_accessible (ref_child))) (g_object_ref
) (ctk_widget_get_accessible (ref_child)))
;
316}
317
318static AtkAttributeSet *
319ctk_widget_accessible_get_attributes (AtkObject *obj)
320{
321 CtkWidget *window;
322 CdkWindowTypeHint hint;
323 AtkAttributeSet *attributes;
324 AtkAttribute *attr;
325 GEnumClass *class;
326 GEnumValue *value;
327
328 attributes = ATK_OBJECT_CLASS (ctk_window_accessible_parent_class)((((AtkObjectClass*) (void *) g_type_check_class_cast ((GTypeClass
*) ((ctk_window_accessible_parent_class)), ((atk_object_get_type
()))))))
->get_attributes (obj);
329
330 attr = g_new (AtkAttribute, 1)((AtkAttribute *) g_malloc_n ((1), sizeof (AtkAttribute)));
331 attr->name = g_strdup ("window-type")g_strdup_inline ("window-type");
332
333 window = ctk_accessible_get_widget (CTK_ACCESSIBLE (obj)((((CtkAccessible*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((obj)), ((ctk_accessible_get_type ()))))))
);
334 hint = ctk_window_get_type_hint (CTK_WINDOW (window)((((CtkWindow*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((window)), ((ctk_window_get_type ()))))))
);
335
336 class = g_type_class_ref (CDK_TYPE_WINDOW_TYPE_HINT(cdk_window_type_hint_get_type ()));
337 for (value = class->values; value->value_name; value++)
338 {
339 if (hint == value->value)
340 {
341 attr->value = g_strdup (value->value_nick)g_strdup_inline (value->value_nick);
342 break;
343 }
344 }
345 g_type_class_unref (class);
346
347 attributes = g_slist_append (attributes, attr);
348
349 return attributes;
350}
351
352static void
353ctk_window_accessible_class_init (CtkWindowAccessibleClass *klass)
354{
355 CtkWidgetAccessibleClass *widget_class = (CtkWidgetAccessibleClass*)klass;
356 AtkObjectClass *class = ATK_OBJECT_CLASS (klass)((((AtkObjectClass*) (void *) g_type_check_class_cast ((GTypeClass
*) ((klass)), ((atk_object_get_type ()))))))
;
357
358 widget_class->notify_ctk = ctk_window_accessible_notify_ctk;
359
360 class->get_name = ctk_window_accessible_get_name;
361 class->get_index_in_parent = ctk_window_accessible_get_index_in_parent;
362 class->ref_relation_set = ctk_window_accessible_ref_relation_set;
363 class->ref_state_set = ctk_window_accessible_ref_state_set;
364 class->initialize = ctk_window_accessible_initialize;
365 class->focus_event = ctk_window_accessible_focus_event;
366 class->get_n_children = ctk_window_accessible_get_n_children;
367 class->ref_child = ctk_window_accessible_ref_child;
368 class->get_attributes = ctk_widget_accessible_get_attributes;
369}
370
371static void
372ctk_window_accessible_init (CtkWindowAccessible *accessible G_GNUC_UNUSED__attribute__ ((__unused__)))
373{
374}
375
376static void
377ctk_window_accessible_get_extents (AtkComponent *component,
378 gint *x,
379 gint *y,
380 gint *width,
381 gint *height,
382 AtkCoordType coord_type)
383{
384 CtkWidget *widget;
385 CdkWindow *window;
386 CdkRectangle rect;
387 gint x_toplevel, y_toplevel;
388
389 widget = ctk_accessible_get_widget (CTK_ACCESSIBLE (component)((((CtkAccessible*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((component)), ((ctk_accessible_get_type ()))))))
);
390 if (widget == NULL((void*)0))
391 return;
392
393 if (!ctk_widget_is_toplevel (widget))
394 {
395 AtkComponentIface *parent_iface;
396
397 parent_iface = (AtkComponentIface *) g_type_interface_peek_parent (ATK_COMPONENT_GET_IFACE (component)((((AtkComponentIface*) g_type_interface_peek (((GTypeInstance
*) ((component)))->g_class, ((atk_component_get_type ())))
)))
);
398 parent_iface->get_extents (component, x, y, width, height, coord_type);
399 return;
400 }
401
402 window = ctk_widget_get_window (widget);
403 if (window == NULL((void*)0))
404 return;
405
406 cdk_window_get_frame_extents (window, &rect);
407
408 *width = rect.width;
409 *height = rect.height;
410 if (!ctk_widget_is_drawable (widget))
411 {
412 *x = G_MININT(-2147483647 -1);
413 *y = G_MININT(-2147483647 -1);
414 return;
415 }
416
417 *x = rect.x;
418 *y = rect.y;
419 if (coord_type == ATK_XY_WINDOW)
420 {
421 cdk_window_get_origin (window, &x_toplevel, &y_toplevel);
422 *x -= x_toplevel;
423 *y -= y_toplevel;
424 }
425}
426
427static void
428ctk_window_accessible_get_size (AtkComponent *component,
429 gint *width,
430 gint *height)
431{
432 CtkWidget *widget;
433 CdkWindow *window;
434 CdkRectangle rect;
435
436 widget = ctk_accessible_get_widget (CTK_ACCESSIBLE (component)((((CtkAccessible*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((component)), ((ctk_accessible_get_type ()))))))
);
437 if (widget == NULL((void*)0))
438 return;
439
440 if (!ctk_widget_is_toplevel (widget))
441 {
442 AtkComponentIface *parent_iface;
443
444 parent_iface = (AtkComponentIface *) g_type_interface_peek_parent (ATK_COMPONENT_GET_IFACE (component)((((AtkComponentIface*) g_type_interface_peek (((GTypeInstance
*) ((component)))->g_class, ((atk_component_get_type ())))
)))
);
445 parent_iface->get_size (component, width, height);
446 return;
447 }
448
449 window = ctk_widget_get_window (widget);
450 if (window == NULL((void*)0))
451 return;
452
453 cdk_window_get_frame_extents (window, &rect);
454
455 *width = rect.width;
456 *height = rect.height;
457}
458
459static void
460atk_component_interface_init (AtkComponentIface *iface)
461{
462 iface->get_extents = ctk_window_accessible_get_extents;
463 iface->get_size = ctk_window_accessible_get_size;
464}
465
466static void
467atk_window_interface_init (AtkWindowIface *iface G_GNUC_UNUSED__attribute__ ((__unused__)))
468{
469 /* At this moment AtkWindow is just about signals */
470}