Changeset 105749 in webkit
- Timestamp:
- Jan 24, 2012 10:28:22 AM (12 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 2 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r105748 r105749 1 2012-01-24 Mario Sanchez Prada <msanchez@igalia.com> 2 3 [GTK] Refactor GTK's accessibilitity code to be more modular 4 https://bugs.webkit.org/show_bug.cgi?id=76783 5 6 Reviewed by Martin Robinson. 7 8 New files for the implementation of the AtkTable interface, 9 containing the related code from WebKitAccessibleWrapperAtk.cpp. 10 11 * accessibility/gtk/WebKitAccessibleInterfaceTable.cpp: Added. 12 (core): 13 (cell): 14 (cellIndex): 15 (cellAtIndex): 16 (webkitAccessibleTableInterfaceInit): 17 (webkitAccessibleTableRefAt): 18 (webkitAccessibleTableGetIndexAt): 19 (webkitAccessibleTableGetColumnAtIndex): 20 (webkitAccessibleTableGetRowAtIndex): 21 (webkitAccessibleTableGetNColumns): 22 (webkitAccessibleTableGetNRows): 23 (webkitAccessibleTableGetColumnExtentAt): 24 (webkitAccessibleTableGetRowExtentAt): 25 (webkitAccessibleTableGetColumnHeader): 26 (webkitAccessibleTableGetRowHeader): 27 (webkitAccessibleTableGetCaption): 28 (webkitAccessibleTableGetColumnDescription): 29 (webkitAccessibleTableGetRowDescription): 30 * accessibility/gtk/WebKitAccessibleInterfaceTable.h: Added. 31 * accessibility/gtk/WebKitAccessibleWrapperAtk.cpp: Remove code 32 related to the implementation of the AtkTable interface. 33 34 Add new files to build files. 35 36 * GNUmakefile.list.am: Add WebKitAccessibleInterfaceTable.[h|cpp]. 37 * WebCore.gypi: Ditto. 38 1 39 2012-01-24 Vsevolod Vlasov <vsevik@chromium.org> 2 40 -
trunk/Source/WebCore/GNUmakefile.list.am
r105745 r105749 4440 4440 Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceSelection.cpp \ 4441 4441 Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceSelection.h \ 4442 Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceTable.cpp \ 4443 Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceTable.h \ 4442 4444 Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceText.cpp \ 4443 4445 Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceText.h \ -
trunk/Source/WebCore/WebCore.gypi
r105745 r105749 1362 1362 'accessibility/gtk/WebKitAccessibleInterfaceSelection.cpp', 1363 1363 'accessibility/gtk/WebKitAccessibleInterfaceSelection.h', 1364 'accessibility/gtk/WebKitAccessibleInterfaceTable.cpp', 1365 'accessibility/gtk/WebKitAccessibleInterfaceTable.h', 1364 1366 'accessibility/gtk/WebKitAccessibleInterfaceText.cpp', 1365 1367 'accessibility/gtk/WebKitAccessibleInterfaceText.h', -
trunk/Source/WebCore/accessibility/gtk/WebKitAccessibleWrapperAtk.cpp
r105745 r105749 72 72 #include "WebKitAccessibleInterfaceImage.h" 73 73 #include "WebKitAccessibleInterfaceSelection.h" 74 #include "WebKitAccessibleInterfaceTable.h" 74 75 #include "WebKitAccessibleInterfaceText.h" 75 76 #include "WebKitAccessibleInterfaceValue.h" … … 116 117 117 118 return core(WEBKIT_ACCESSIBLE(object)); 118 }119 120 static AccessibilityObject* core(AtkTable* table)121 {122 return core(ATK_OBJECT(table));123 119 } 124 120 … … 794 790 } 795 791 796 // Table797 798 static AccessibilityTableCell* cell(AtkTable* table, guint row, guint column)799 {800 AccessibilityObject* accTable = core(table);801 if (accTable->isAccessibilityRenderObject())802 return static_cast<AccessibilityTable*>(accTable)->cellForColumnAndRow(column, row);803 return 0;804 }805 806 static gint cellIndex(AccessibilityTableCell* axCell, AccessibilityTable* axTable)807 {808 // Calculate the cell's index as if we had a traditional Gtk+ table in809 // which cells are all direct children of the table, arranged row-first.810 AccessibilityObject::AccessibilityChildrenVector allCells;811 axTable->cells(allCells);812 AccessibilityObject::AccessibilityChildrenVector::iterator position;813 position = std::find(allCells.begin(), allCells.end(), axCell);814 if (position == allCells.end())815 return -1;816 return position - allCells.begin();817 }818 819 static AccessibilityTableCell* cellAtIndex(AtkTable* table, gint index)820 {821 AccessibilityObject* accTable = core(table);822 if (accTable->isAccessibilityRenderObject()) {823 AccessibilityObject::AccessibilityChildrenVector allCells;824 static_cast<AccessibilityTable*>(accTable)->cells(allCells);825 if (0 <= index && static_cast<unsigned>(index) < allCells.size()) {826 AccessibilityObject* accCell = allCells.at(index).get();827 return static_cast<AccessibilityTableCell*>(accCell);828 }829 }830 return 0;831 }832 833 static AtkObject* webkit_accessible_table_ref_at(AtkTable* table, gint row, gint column)834 {835 AccessibilityTableCell* axCell = cell(table, row, column);836 if (!axCell)837 return 0;838 return axCell->wrapper();839 }840 841 static gint webkit_accessible_table_get_index_at(AtkTable* table, gint row, gint column)842 {843 AccessibilityTableCell* axCell = cell(table, row, column);844 AccessibilityTable* axTable = static_cast<AccessibilityTable*>(core(table));845 return cellIndex(axCell, axTable);846 }847 848 static gint webkit_accessible_table_get_column_at_index(AtkTable* table, gint index)849 {850 AccessibilityTableCell* axCell = cellAtIndex(table, index);851 if (axCell) {852 pair<int, int> columnRange;853 axCell->columnIndexRange(columnRange);854 return columnRange.first;855 }856 return -1;857 }858 859 static gint webkit_accessible_table_get_row_at_index(AtkTable* table, gint index)860 {861 AccessibilityTableCell* axCell = cellAtIndex(table, index);862 if (axCell) {863 pair<int, int> rowRange;864 axCell->rowIndexRange(rowRange);865 return rowRange.first;866 }867 return -1;868 }869 870 static gint webkit_accessible_table_get_n_columns(AtkTable* table)871 {872 AccessibilityObject* accTable = core(table);873 if (accTable->isAccessibilityRenderObject())874 return static_cast<AccessibilityTable*>(accTable)->columnCount();875 return 0;876 }877 878 static gint webkit_accessible_table_get_n_rows(AtkTable* table)879 {880 AccessibilityObject* accTable = core(table);881 if (accTable->isAccessibilityRenderObject())882 return static_cast<AccessibilityTable*>(accTable)->rowCount();883 return 0;884 }885 886 static gint webkit_accessible_table_get_column_extent_at(AtkTable* table, gint row, gint column)887 {888 AccessibilityTableCell* axCell = cell(table, row, column);889 if (axCell) {890 pair<int, int> columnRange;891 axCell->columnIndexRange(columnRange);892 return columnRange.second;893 }894 return 0;895 }896 897 static gint webkit_accessible_table_get_row_extent_at(AtkTable* table, gint row, gint column)898 {899 AccessibilityTableCell* axCell = cell(table, row, column);900 if (axCell) {901 pair<int, int> rowRange;902 axCell->rowIndexRange(rowRange);903 return rowRange.second;904 }905 return 0;906 }907 908 static AtkObject* webkit_accessible_table_get_column_header(AtkTable* table, gint column)909 {910 AccessibilityObject* accTable = core(table);911 if (accTable->isAccessibilityRenderObject()) {912 AccessibilityObject::AccessibilityChildrenVector allColumnHeaders;913 static_cast<AccessibilityTable*>(accTable)->columnHeaders(allColumnHeaders);914 unsigned columnCount = allColumnHeaders.size();915 for (unsigned k = 0; k < columnCount; ++k) {916 pair<int, int> columnRange;917 AccessibilityTableCell* cell = static_cast<AccessibilityTableCell*>(allColumnHeaders.at(k).get());918 cell->columnIndexRange(columnRange);919 if (columnRange.first <= column && column < columnRange.first + columnRange.second)920 return allColumnHeaders[k]->wrapper();921 }922 }923 return 0;924 }925 926 static AtkObject* webkit_accessible_table_get_row_header(AtkTable* table, gint row)927 {928 AccessibilityObject* accTable = core(table);929 if (accTable->isAccessibilityRenderObject()) {930 AccessibilityObject::AccessibilityChildrenVector allRowHeaders;931 static_cast<AccessibilityTable*>(accTable)->rowHeaders(allRowHeaders);932 unsigned rowCount = allRowHeaders.size();933 for (unsigned k = 0; k < rowCount; ++k) {934 pair<int, int> rowRange;935 AccessibilityTableCell* cell = static_cast<AccessibilityTableCell*>(allRowHeaders.at(k).get());936 cell->rowIndexRange(rowRange);937 if (rowRange.first <= row && row < rowRange.first + rowRange.second)938 return allRowHeaders[k]->wrapper();939 }940 }941 return 0;942 }943 944 static AtkObject* webkit_accessible_table_get_caption(AtkTable* table)945 {946 AccessibilityObject* accTable = core(table);947 if (accTable->isAccessibilityRenderObject()) {948 Node* node = accTable->node();949 if (node && node->hasTagName(HTMLNames::tableTag)) {950 HTMLTableCaptionElement* caption = static_cast<HTMLTableElement*>(node)->caption();951 if (caption)952 return AccessibilityObject::firstAccessibleObjectFromNode(caption->renderer()->node())->wrapper();953 }954 }955 return 0;956 }957 958 static const gchar* webkit_accessible_table_get_column_description(AtkTable* table, gint column)959 {960 AtkObject* columnHeader = atk_table_get_column_header(table, column);961 if (columnHeader && ATK_IS_TEXT(columnHeader))962 return webkitAccessibleTextGetText(ATK_TEXT(columnHeader), 0, -1);963 964 return 0;965 }966 967 static const gchar* webkit_accessible_table_get_row_description(AtkTable* table, gint row)968 {969 AtkObject* rowHeader = atk_table_get_row_header(table, row);970 if (rowHeader && ATK_IS_TEXT(rowHeader))971 return webkitAccessibleTextGetText(ATK_TEXT(rowHeader), 0, -1);972 973 return 0;974 }975 976 static void atk_table_interface_init(AtkTableIface* iface)977 {978 iface->ref_at = webkit_accessible_table_ref_at;979 iface->get_index_at = webkit_accessible_table_get_index_at;980 iface->get_column_at_index = webkit_accessible_table_get_column_at_index;981 iface->get_row_at_index = webkit_accessible_table_get_row_at_index;982 iface->get_n_columns = webkit_accessible_table_get_n_columns;983 iface->get_n_rows = webkit_accessible_table_get_n_rows;984 iface->get_column_extent_at = webkit_accessible_table_get_column_extent_at;985 iface->get_row_extent_at = webkit_accessible_table_get_row_extent_at;986 iface->get_column_header = webkit_accessible_table_get_column_header;987 iface->get_row_header = webkit_accessible_table_get_row_header;988 iface->get_caption = webkit_accessible_table_get_caption;989 iface->get_column_description = webkit_accessible_table_get_column_description;990 iface->get_row_description = webkit_accessible_table_get_row_description;991 }992 993 792 static const GInterfaceInfo AtkInterfacesInitFunctions[] = { 994 793 {reinterpret_cast<GInterfaceInitFunc>(webkitAccessibleActionInterfaceInit), 0, 0}, … … 998 797 {reinterpret_cast<GInterfaceInitFunc>(webkitAccessibleComponentInterfaceInit), 0, 0}, 999 798 {reinterpret_cast<GInterfaceInitFunc>(webkitAccessibleImageInterfaceInit), 0, 0}, 1000 {(GInterfaceInitFunc)atk_table_interface_init, 1001 (GInterfaceFinalizeFunc) 0, 0}, 799 {reinterpret_cast<GInterfaceInitFunc>(webkitAccessibleTableInterfaceInit), 0, 0}, 1002 800 {reinterpret_cast<GInterfaceInitFunc>(webkitAccessibleHypertextInterfaceInit), 0, 0}, 1003 801 {reinterpret_cast<GInterfaceInitFunc>(webkitAccessibleHyperlinkImplInterfaceInit), 0, 0},
Note: See TracChangeset
for help on using the changeset viewer.