X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ed39ff57b30a70a2395e07887a70bc01e7a3b7ec..42b6a61ef6680602b4893a39e4a42d66bcb2f2a8:/include/wx/window.h diff --git a/include/wx/window.h b/include/wx/window.h index 590aaec381..ea437b4c39 100644 --- a/include/wx/window.h +++ b/include/wx/window.h @@ -40,6 +40,10 @@ #include "wx/accel.h" #endif // wxUSE_ACCEL +#if wxUSE_ACCESSIBILITY +#include "wx/access.h" +#endif + // when building wxUniv/Foo we don't want the code for native menu use to be // compiled in - it should only be used when building real wxFoo #ifdef __WXUNIVERSAL__ @@ -65,6 +69,10 @@ class WXDLLEXPORT wxToolTip; class WXDLLEXPORT wxWindowBase; class WXDLLEXPORT wxWindow; +#if wxUSE_ACCESSIBILITY +class WXDLLEXPORT wxAccessible; +#endif + // ---------------------------------------------------------------------------- // (pseudo)template list classes // ---------------------------------------------------------------------------- @@ -99,7 +107,7 @@ public: // pseudo ctor (can't be virtual, called from ctor) bool CreateBase(wxWindowBase *parent, - wxWindowID id, + wxWindowID winid, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, @@ -161,7 +169,7 @@ public: // window id uniquely identifies the window among its siblings unless // it is -1 which means "don't care" - void SetId( wxWindowID id ) { m_windowId = id; } + void SetId( wxWindowID winid ) { m_windowId = winid; } wxWindowID GetId() const { return m_windowId; } // generate a control id for the controls which were not given one by @@ -169,10 +177,10 @@ public: static int NewControlId() { return --ms_lastControlId; } // get the id of the control following the one with the given // (autogenerated) id - static int NextControlId(int id) { return id - 1; } + static int NextControlId(int winid) { return winid - 1; } // get the id of the control preceding the one with the given // (autogenerated) id - static int PrevControlId(int id) { return id + 1; } + static int PrevControlId(int winid) { return winid + 1; } // moving/resizing // --------------- @@ -456,11 +464,11 @@ public: // find window among the descendants of this one either by id or by // name (return NULL if not found) - wxWindow *FindWindow( long id ); + wxWindow *FindWindow( long winid ); wxWindow *FindWindow( const wxString& name ); // Find a window among any window (all return NULL if not found) - static wxWindow *FindWindowById( long id, const wxWindow *parent = NULL ); + static wxWindow *FindWindowById( long winid, const wxWindow *parent = NULL ); static wxWindow *FindWindowByName( const wxString& name, const wxWindow *parent = NULL ); static wxWindow *FindWindowByLabel( const wxString& label, @@ -818,6 +826,22 @@ public: void SetContainingSizer(wxSizer* sizer) { m_containingSizer = sizer; } wxSizer *GetContainingSizer() const { return m_containingSizer; } + // accessibility + // ---------------------- +#if wxUSE_ACCESSIBILITY + // Override to create a specific accessible object. + virtual wxAccessible* CreateAccessible(); + + // Sets the accessible object. + void SetAccessible(wxAccessible* accessible) ; + + // Returns the accessible object. + wxAccessible* GetAccessible() { return m_accessible; }; + + // Returns the accessible object, creating if necessary. + wxAccessible* GetOrCreateAccessible() ; +#endif + // backward compatibility // ---------------------- #if WXWIN_COMPATIBILITY @@ -867,6 +891,9 @@ protected: void SatisfyConstraints(); #endif // wxUSE_CONSTRAINTS + // Send the wxWindowDestroyEvent + void SendDestroyEvent(); + // the window id - a number which uniquely identifies a window among // its siblings unless it is -1 wxWindowID m_windowId; @@ -958,6 +985,9 @@ protected: bool m_hasCustomPalette; #endif // wxUSE_PALETTE +#if wxUSE_ACCESSIBILITY + wxAccessible* m_accessible; +#endif // Virtual size (scrolling) wxSize m_virtualSize; @@ -1125,6 +1155,14 @@ private: #define sm_classwxWindowMac sm_classwxWindow #endif // wxUniv #include "wx/mac/window.h" +#elif defined(__WXCOCOA__) + #ifdef __WXUNIVERSAL__ + #define wxWindowNative wxWindowCocoa + #else // !wxUniv + #define wxWindowCocoa wxWindow + #define sm_classwxWindowCocoa sm_classwxWindow + #endif // wxUniv + #include "wx/cocoa/window.h" #elif defined(__WXPM__) #ifdef __WXUNIVERSAL__ #define wxWindowNative wxWindowOS2 @@ -1175,6 +1213,102 @@ WXDLLEXPORT wxWindow* wxGetTopLevelParent(wxWindow *win); // deprecated (doesn't start with 'wx' prefix), use wxWindow::NewControlId() inline int NewControlId() { return wxWindowBase::NewControlId(); } +#if wxUSE_ACCESSIBILITY +// ---------------------------------------------------------------------------- +// accessible object for windows +// ---------------------------------------------------------------------------- + +class WXDLLEXPORT wxWindowAccessible: public wxAccessible +{ +public: + wxWindowAccessible(wxWindow* win): wxAccessible(win) { if (win) win->SetAccessible(this); } + virtual ~wxWindowAccessible() {}; + +// Overridables + + // Can return either a child object, or an integer + // representing the child element, starting from 1. + virtual wxAccStatus HitTest(const wxPoint& pt, int* childId, wxAccessible** childObject); + + // Returns the rectangle for this object (id = 0) or a child element (id > 0). + virtual wxAccStatus GetLocation(wxRect& rect, int elementId); + + // Navigates from fromId to toId/toObject. + virtual wxAccStatus Navigate(wxNavDir navDir, int fromId, + int* toId, wxAccessible** toObject); + + // Gets the name of the specified object. + virtual wxAccStatus GetName(int childId, wxString* name); + + // Gets the number of children. + virtual wxAccStatus GetChildCount(int* childId); + + // Gets the specified child (starting from 1). + // If *child is NULL and return value is wxACC_OK, + // this means that the child is a simple element and + // not an accessible object. + virtual wxAccStatus GetChild(int childId, wxAccessible** child); + + // Gets the parent, or NULL. + virtual wxAccStatus GetParent(wxAccessible** parent); + + // Performs the default action. childId is 0 (the action for this object) + // or > 0 (the action for a child). + // Return wxACC_NOT_SUPPORTED if there is no default action for this + // window (e.g. an edit control). + virtual wxAccStatus DoDefaultAction(int childId); + + // Gets the default action for this object (0) or > 0 (the action for a child). + // Return wxACC_OK even if there is no action. actionName is the action, or the empty + // string if there is no action. + // The retrieved string describes the action that is performed on an object, + // not what the object does as a result. For example, a toolbar button that prints + // a document has a default action of "Press" rather than "Prints the current document." + virtual wxAccStatus GetDefaultAction(int childId, wxString* actionName); + + // Returns the description for this object or a child. + virtual wxAccStatus GetDescription(int childId, wxString* description); + + // Returns help text for this object or a child, similar to tooltip text. + virtual wxAccStatus GetHelpText(int childId, wxString* helpText); + + // Returns the keyboard shortcut for this object or child. + // Return e.g. ALT+K + virtual wxAccStatus GetKeyboardShortcut(int childId, wxString* shortcut); + + // Returns a role constant. + virtual wxAccStatus GetRole(int childId, wxAccRole* role); + + // Returns a state constant. + virtual wxAccStatus GetState(int childId, long* state); + + // Returns a localized string representing the value for the object + // or child. + virtual wxAccStatus GetValue(int childId, wxString* strValue); + + // Selects the object or child. + virtual wxAccStatus Select(int childId, wxAccSelectionFlags selectFlags); + + // Gets the window with the keyboard focus. + // If childId is 0 and child is NULL, no object in + // this subhierarchy has the focus. + // If this object has the focus, child should be 'this'. + virtual wxAccStatus GetFocus(int* childId, wxAccessible** child); + + // Gets a variant representing the selected children + // of this object. + // Acceptable values: + // - a null variant (IsNull() returns TRUE) + // - a list variant (GetType() == wxT("list") + // - an integer representing the selected child element, + // or 0 if this object is selected (GetType() == wxT("long") + // - a "void*" pointer to a wxAccessible child object + virtual wxAccStatus GetSelections(wxVariant* selections); +}; + +#endif // wxUSE_ACCESSIBILITY + + #endif // _WX_WINDOW_H_BASE_