Changeset 64173 in webkit
- Timestamp:
- Jul 27, 2010 4:02:00 PM (14 years ago)
- Location:
- trunk
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r64164 r64173 1 2010-07-27 James Hawkins <jhawkins@chromium.org> 2 3 Reviewed by Darin Fisher. 4 5 Add itemIcon() method to the PopupMenuClient, used by Chrome AutoFill 6 to display right-aligned credit card icons in the suggestions popup. 7 https://bugs.webkit.org/show_bug.cgi?id=43076 8 9 No new tests as this is only used by the Chromium WebKit API. 10 11 * platform/PopupMenuClient.h: 12 * platform/chromium/PopupMenuChromium.cpp: 13 (WebCore::PopupListBox::paintRow): 14 * rendering/RenderMenuList.cpp: 15 (WebCore::RenderMenuList::itemIcon): 16 * rendering/RenderMenuList.h: 17 * rendering/RenderTextControlSingleLine.cpp: 18 (WebCore::RenderTextControlSingleLine::itemIcon): 19 * rendering/RenderTextControlSingleLine.h: 20 1 21 2010-07-27 Andreas Kling <andreas.kling@nokia.com> 2 22 -
trunk/WebCore/platform/PopupMenuClient.h
r63179 r64173 44 44 virtual String itemText(unsigned listIndex) const = 0; 45 45 virtual String itemLabel(unsigned listIndex) const = 0; 46 virtual String itemIcon(unsigned listIndex) const = 0; 46 47 virtual String itemToolTip(unsigned listIndex) const = 0; 47 48 virtual String itemAccessibilityText(unsigned listIndex) const = 0; -
trunk/WebCore/platform/chromium/PopupMenuChromium.cpp
r63504 r64173 72 72 static const int kBorderSize = 1; 73 73 static const int kTextToLabelPadding = 10; 74 static const int kLabelToIconPadding = 5; 74 75 static const TimeStamp kTypeAheadTimeoutMs = 1000; 75 76 … … 960 961 gc->drawBidiText(itemFont, textRun, IntPoint(textX, textY)); 961 962 963 // We are using the left padding as the right padding includes room for the scroll-bar which 964 // does not show in this case. 965 int rightPadding = max(0, m_popupClient->clientPaddingLeft() - m_popupClient->clientInsetLeft()); 966 int remainingWidth = rowRect.width() - rightPadding; 967 968 // Draw the icon if applicable. 969 String itemIcon = m_popupClient->itemIcon(rowIndex); 970 RefPtr<Image> image(Image::loadPlatformResource(itemIcon.utf8().data())); 971 if (image && !image->isNull()) { 972 IntRect imageRect = image->rect(); 973 remainingWidth -= (imageRect.width() + kLabelToIconPadding); 974 imageRect.setX(rowRect.width() - rightPadding - imageRect.width()); 975 imageRect.setY(rowRect.y() + (rowRect.height() - imageRect.height()) / 2); 976 gc->drawImage(image.get(), DeviceColorSpace, imageRect); 977 } 978 962 979 // Draw the the label if applicable. 963 980 if (itemLabel.isEmpty()) … … 966 983 if (rightAligned) 967 984 textX = max(0, m_popupClient->clientPaddingLeft() - m_popupClient->clientInsetLeft()); 968 else { 969 // We are using the left padding as the right padding includes room for the scroll-bar which 970 // does not show in this case. 971 int rightPadding = max(0, m_popupClient->clientPaddingLeft() - m_popupClient->clientInsetLeft()); 972 textX = rowRect.width() - rightPadding - itemFont.width(labelTextRun); 973 } 985 else 986 textX = remainingWidth - itemFont.width(labelTextRun); 974 987 975 988 gc->setFillColor(labelColor, DeviceColorSpace); -
trunk/WebCore/rendering/RenderMenuList.cpp
r63358 r64173 355 355 } 356 356 357 String RenderMenuList::itemIcon(unsigned) const 358 { 359 return String(); 360 } 361 357 362 String RenderMenuList::itemAccessibilityText(unsigned listIndex) const 358 363 { -
trunk/WebCore/rendering/RenderMenuList.h
r63179 r64173 84 84 virtual String itemText(unsigned listIndex) const; 85 85 virtual String itemLabel(unsigned listIndex) const; 86 virtual String itemIcon(unsigned listIndex) const; 86 87 virtual String itemToolTip(unsigned listIndex) const; 87 88 virtual String itemAccessibilityText(unsigned listIndex) const; -
trunk/WebCore/rendering/RenderTextControlSingleLine.cpp
r63288 r64173 917 917 } 918 918 919 String RenderTextControlSingleLine::itemIcon(unsigned) const 920 { 921 return String(); 922 } 923 919 924 bool RenderTextControlSingleLine::itemIsEnabled(unsigned listIndex) const 920 925 { -
trunk/WebCore/rendering/RenderTextControlSingleLine.h
r63288 r64173 118 118 virtual String itemText(unsigned listIndex) const; 119 119 virtual String itemLabel(unsigned listIndex) const; 120 virtual String itemIcon(unsigned listIndex) const; 120 121 virtual String itemToolTip(unsigned) const { return String(); } 121 122 virtual String itemAccessibilityText(unsigned) const { return String(); } -
trunk/WebKit/chromium/ChangeLog
r64160 r64173 1 2010-07-27 James Hawkins <jhawkins@chromium.org> 2 3 Reviewed by Darin Fisher. 4 5 [Chromium] Add the ability to show right-aligned icons in the AutoFill popup. 6 https://bugs.webkit.org/show_bug.cgi?id=43076 7 8 * public/WebView.h: 9 * src/AutoFillPopupMenuClient.cpp: 10 (WebKit::AutoFillPopupMenuClient::getIcon): 11 (WebKit::AutoFillPopupMenuClient::removeSuggestionAtIndex): 12 (WebKit::AutoFillPopupMenuClient::itemIcon): 13 (WebKit::AutoFillPopupMenuClient::initialize): 14 (WebKit::AutoFillPopupMenuClient::setSuggestions): 15 * src/AutoFillPopupMenuClient.h: 16 * src/WebViewImpl.cpp: 17 (WebKit::WebViewImpl::applyAutoFillSuggestions): 18 (WebKit::WebViewImpl::applyAutocompleteSuggestions): 19 * src/WebViewImpl.h: 20 1 21 2010-07-27 Brett Wilson <brettw@chromium.org> 2 22 -
trunk/WebKit/chromium/public/WebView.h
r63379 r64173 254 254 const WebVector<WebString>& names, 255 255 const WebVector<WebString>& labels, 256 const WebVector<int>& uniqueIDs, 256 257 int separatorIndex) = 0; 257 258 … … 263 264 const WebVector<WebString>& names, 264 265 const WebVector<WebString>& labels, 266 const WebVector<WebString>& icons, 265 267 const WebVector<int>& uniqueIDs, 266 268 int separatorIndex) = 0; -
trunk/WebKit/chromium/src/AutoFillPopupMenuClient.cpp
r63418 r64173 85 85 } 86 86 87 WebString AutoFillPopupMenuClient::getIcon(unsigned listIndex) const 88 { 89 int index = convertListIndexToInternalIndex(listIndex); 90 if (index == -1) 91 return WebString(); 92 93 ASSERT(index >= 0 && static_cast<size_t>(index) < m_icons.size()); 94 return m_icons[index]; 95 } 96 87 97 void AutoFillPopupMenuClient::removeSuggestionAtIndex(unsigned listIndex) 88 98 { … … 96 106 m_names.remove(index); 97 107 m_labels.remove(index); 108 m_icons.remove(index); 109 m_uniqueIDs.remove(index); 98 110 99 111 // Shift the separator index if necessary. … … 178 190 } 179 191 192 String AutoFillPopupMenuClient::itemIcon(unsigned listIndex) const 193 { 194 return getIcon(listIndex); 195 } 196 180 197 PopupMenuStyle AutoFillPopupMenuClient::itemStyle(unsigned listIndex) const 181 198 { … … 250 267 const WebVector<WebString>& names, 251 268 const WebVector<WebString>& labels, 269 const WebVector<WebString>& icons, 252 270 const WebVector<int>& uniqueIDs, 253 271 int separatorIndex) 254 272 { 255 273 ASSERT(names.size() == labels.size()); 274 ASSERT(names.size() == icons.size()); 256 275 ASSERT(names.size() == uniqueIDs.size()); 257 276 ASSERT(separatorIndex < static_cast<int>(names.size())); … … 262 281 // The suggestions must be set before initializing the 263 282 // AutoFillPopupMenuClient. 264 setSuggestions(names, labels, uniqueIDs, separatorIndex);283 setSuggestions(names, labels, icons, uniqueIDs, separatorIndex); 265 284 266 285 FontDescription fontDescription; … … 281 300 void AutoFillPopupMenuClient::setSuggestions(const WebVector<WebString>& names, 282 301 const WebVector<WebString>& labels, 302 const WebVector<WebString>& icons, 283 303 const WebVector<int>& uniqueIDs, 284 304 int separatorIndex) 285 305 { 286 306 ASSERT(names.size() == labels.size()); 307 ASSERT(names.size() == icons.size()); 287 308 ASSERT(names.size() == uniqueIDs.size()); 288 309 ASSERT(separatorIndex < static_cast<int>(names.size())); … … 290 311 m_names.clear(); 291 312 m_labels.clear(); 313 m_icons.clear(); 292 314 m_uniqueIDs.clear(); 293 315 for (size_t i = 0; i < names.size(); ++i) { 294 316 m_names.append(names[i]); 295 317 m_labels.append(labels[i]); 318 m_icons.append(icons[i]); 296 319 m_uniqueIDs.append(uniqueIDs[i]); 297 320 } -
trunk/WebKit/chromium/src/AutoFillPopupMenuClient.h
r63395 r64173 61 61 virtual WebString getLabel(unsigned listIndex) const; 62 62 63 // Returns the icon at |listIndex|. 64 virtual WebString getIcon(unsigned listIndex) const; 65 63 66 // Removes the suggestion at |listIndex| from the list of suggestions. 64 67 virtual void removeSuggestionAtIndex(unsigned listIndex); … … 73 76 virtual WebCore::String itemText(unsigned listIndex) const; 74 77 virtual WebCore::String itemLabel(unsigned listIndex) const; 78 virtual WebCore::String itemIcon(unsigned listIndex) const; 75 79 virtual WebCore::String itemToolTip(unsigned lastIndex) const { return WebCore::String(); } 76 80 virtual WebCore::String itemAccessibilityText(unsigned lastIndex) const { return WebCore::String(); } … … 101 105 const WebVector<WebString>& names, 102 106 const WebVector<WebString>& labels, 107 const WebVector<WebString>& icons, 103 108 const WebVector<int>& uniqueIDs, 104 109 int separatorIndex); … … 106 111 void setSuggestions(const WebVector<WebString>& names, 107 112 const WebVector<WebString>& labels, 113 const WebVector<WebString>& icons, 108 114 const WebVector<int>& uniqueIDs, 109 115 int separatorIndex); … … 125 131 void setSelectedIndex(int index) { m_selectedIndex = index; } 126 132 127 // The names and labels that make up the textof the menu items.133 // The names, labels and icons that make up the contents of the menu items. 128 134 Vector<WebCore::String> m_names; 129 135 Vector<WebCore::String> m_labels; 136 Vector<WebCore::String> m_icons; 130 137 Vector<int> m_uniqueIDs; 131 138 -
trunk/WebKit/chromium/src/WebViewImpl.cpp
r64042 r64173 1738 1738 const WebVector<WebString>& names, 1739 1739 const WebVector<WebString>& labels, 1740 const WebVector<int>& uniqueIDs, 1740 1741 int separatorIndex) 1741 1742 { 1742 WebVector< int> uniqueIDs(names.size());1743 applyAutoFillSuggestions(node, names, labels, uniqueIDs, separatorIndex);1743 WebVector<WebString> icons(names.size()); 1744 applyAutoFillSuggestions(node, names, labels, icons, uniqueIDs, separatorIndex); 1744 1745 } 1745 1746 … … 1748 1749 const WebVector<WebString>& names, 1749 1750 const WebVector<WebString>& labels, 1751 const WebVector<WebString>& icons, 1750 1752 const WebVector<int>& uniqueIDs, 1751 1753 int separatorIndex) … … 1778 1780 1779 1781 m_autoFillPopupClient->initialize( 1780 inputElem, names, labels, uniqueIDs, separatorIndex);1782 inputElem, names, labels, icons, uniqueIDs, separatorIndex); 1781 1783 1782 1784 if (!m_autoFillPopup.get()) { … … 1788 1790 if (m_autoFillPopupShowing) { 1789 1791 m_autoFillPopupClient->setSuggestions( 1790 names, labels, uniqueIDs, separatorIndex);1792 names, labels, icons, uniqueIDs, separatorIndex); 1791 1793 refreshAutoFillPopup(); 1792 1794 } else { … … 1810 1812 WebVector<WebString> names(suggestions.size()); 1811 1813 WebVector<WebString> labels(suggestions.size()); 1814 WebVector<WebString> icons(suggestions.size()); 1812 1815 WebVector<int> uniqueIDs(suggestions.size()); 1813 1816 … … 1815 1818 names[i] = suggestions[i]; 1816 1819 1817 applyAutoFillSuggestions(node, names, labels, uniqueIDs, -1);1820 applyAutoFillSuggestions(node, names, labels, icons, uniqueIDs, -1); 1818 1821 if (m_autoFillPopupClient) 1819 1822 m_autoFillPopupClient->setAutocompleteMode(true); -
trunk/WebKit/chromium/src/WebViewImpl.h
r64042 r64173 172 172 const WebVector<WebString>& names, 173 173 const WebVector<WebString>& labels, 174 const WebVector<int>& uniqueIDs, 174 175 int separatorIndex); 175 176 virtual void applyAutoFillSuggestions( … … 177 178 const WebVector<WebString>& names, 178 179 const WebVector<WebString>& labels, 180 const WebVector<WebString>& icons, 179 181 const WebVector<int>& uniqueIDs, 180 182 int separatorIndex);
Note: See TracChangeset
for help on using the changeset viewer.