1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/accessible/src/atk/AccessibleWrap.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,106 @@ 1.4 +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 1.5 +/* vim: set ts=2 et sw=2 tw=80: */ 1.6 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.7 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.8 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.9 + 1.10 +#ifndef __NS_ACCESSIBLE_WRAP_H__ 1.11 +#define __NS_ACCESSIBLE_WRAP_H__ 1.12 + 1.13 +#include "nsCOMPtr.h" 1.14 +#include "Accessible.h" 1.15 + 1.16 +struct _AtkObject; 1.17 +typedef struct _AtkObject AtkObject; 1.18 + 1.19 +enum AtkProperty { 1.20 + PROP_0, // gobject convention 1.21 + PROP_NAME, 1.22 + PROP_DESCRIPTION, 1.23 + PROP_PARENT, // ancestry has changed 1.24 + PROP_ROLE, 1.25 + PROP_LAYER, 1.26 + PROP_MDI_ZORDER, 1.27 + PROP_TABLE_CAPTION, 1.28 + PROP_TABLE_COLUMN_DESCRIPTION, 1.29 + PROP_TABLE_COLUMN_HEADER, 1.30 + PROP_TABLE_ROW_DESCRIPTION, 1.31 + PROP_TABLE_ROW_HEADER, 1.32 + PROP_TABLE_SUMMARY, 1.33 + PROP_LAST // gobject convention 1.34 +}; 1.35 + 1.36 +struct AtkPropertyChange { 1.37 + int32_t type; // property type as listed above 1.38 + void *oldvalue; 1.39 + void *newvalue; 1.40 +}; 1.41 + 1.42 +namespace mozilla { 1.43 +namespace a11y { 1.44 + 1.45 +class MaiHyperlink; 1.46 + 1.47 +/** 1.48 + * AccessibleWrap, and its descendents in atk directory provide the 1.49 + * implementation of AtkObject. 1.50 + */ 1.51 +class AccessibleWrap : public Accessible 1.52 +{ 1.53 +public: 1.54 + AccessibleWrap(nsIContent* aContent, DocAccessible* aDoc); 1.55 + virtual ~AccessibleWrap(); 1.56 + void ShutdownAtkObject(); 1.57 + 1.58 + virtual void Shutdown(); 1.59 + 1.60 + // return the atk object for this AccessibleWrap 1.61 + NS_IMETHOD GetNativeInterface(void **aOutAccessible); 1.62 + virtual nsresult HandleAccEvent(AccEvent* aEvent); 1.63 + 1.64 + AtkObject * GetAtkObject(void); 1.65 + static AtkObject * GetAtkObject(nsIAccessible * acc); 1.66 + 1.67 + bool IsValidObject(); 1.68 + 1.69 + // get/set the MaiHyperlink object for this AccessibleWrap 1.70 + MaiHyperlink* GetMaiHyperlink(bool aCreate = true); 1.71 + void SetMaiHyperlink(MaiHyperlink* aMaiHyperlink); 1.72 + 1.73 + static const char * ReturnString(nsAString &aString) { 1.74 + static nsCString returnedString; 1.75 + returnedString = NS_ConvertUTF16toUTF8(aString); 1.76 + return returnedString.get(); 1.77 + } 1.78 + 1.79 +protected: 1.80 + 1.81 + nsresult FireAtkStateChangeEvent(AccEvent* aEvent, AtkObject *aObject); 1.82 + nsresult FireAtkTextChangedEvent(AccEvent* aEvent, AtkObject *aObject); 1.83 + nsresult FireAtkShowHideEvent(AccEvent* aEvent, AtkObject *aObject, 1.84 + bool aIsAdded); 1.85 + 1.86 + AtkObject *mAtkObject; 1.87 + 1.88 +private: 1.89 + 1.90 + /* 1.91 + * do we have text-remove and text-insert signals if not we need to use 1.92 + * text-changed see AccessibleWrap::FireAtkTextChangedEvent() and 1.93 + * bug 619002 1.94 + */ 1.95 + enum EAvailableAtkSignals { 1.96 + eUnknown, 1.97 + eHaveNewAtkTextSignals, 1.98 + eNoNewAtkSignals 1.99 + }; 1.100 + 1.101 + static EAvailableAtkSignals gAvailableAtkSignals; 1.102 + 1.103 + uint16_t CreateMaiInterfaces(void); 1.104 +}; 1.105 + 1.106 +} // namespace a11y 1.107 +} // namespace mozilla 1.108 + 1.109 +#endif /* __NS_ACCESSIBLE_WRAP_H__ */