| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2011, Google Inc. All rights reserved. | 2 * Copyright (c) 2011, Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 81 int yOffset; // y offset of this item, relative to the top of the popup. | 81 int yOffset; // y offset of this item, relative to the top of the popup. |
| 82 TextDirection textDirection; | 82 TextDirection textDirection; |
| 83 bool hasTextDirectionOverride; | 83 bool hasTextDirectionOverride; |
| 84 bool enabled; | 84 bool enabled; |
| 85 bool displayNone; | 85 bool displayNone; |
| 86 }; | 86 }; |
| 87 | 87 |
| 88 // This class manages the scrollable content inside a <select> popup. | 88 // This class manages the scrollable content inside a <select> popup. |
| 89 class PopupListBox final : public Widget, public ScrollableArea, public PopupCon
tent { | 89 class PopupListBox final : public Widget, public ScrollableArea, public PopupCon
tent { |
| 90 public: | 90 public: |
| 91 static PassRefPtr<PopupListBox> create(PopupMenuClient* client, bool deviceS
upportsTouch, PopupContainer* container) | 91 static PassRefPtrWillBeRawPtr<PopupListBox> create(PopupMenuClient* client,
bool deviceSupportsTouch, PopupContainer* container) |
| 92 { | 92 { |
| 93 return adoptRef(new PopupListBox(client, deviceSupportsTouch, container)
); | 93 return adoptRefWillBeNoop(new PopupListBox(client, deviceSupportsTouch,
container)); |
| 94 } | 94 } |
| 95 | 95 |
| 96 // Widget | 96 // Widget |
| 97 virtual void invalidateRect(const IntRect&) override; | 97 virtual void invalidateRect(const IntRect&) override; |
| 98 virtual void paint(GraphicsContext*, const IntRect&) override; | 98 virtual void paint(GraphicsContext*, const IntRect&) override; |
| 99 virtual HostWindow* hostWindow() const override; | 99 virtual HostWindow* hostWindow() const override; |
| 100 virtual void setFrameRect(const IntRect&) override; | 100 virtual void setFrameRect(const IntRect&) override; |
| 101 virtual IntPoint convertChildToSelf(const Widget* child, const IntPoint&) co
nst override; | 101 virtual IntPoint convertChildToSelf(const Widget* child, const IntPoint&) co
nst override; |
| 102 virtual IntPoint convertSelfToChild(const Widget* child, const IntPoint&) co
nst override; | 102 virtual IntPoint convertSelfToChild(const Widget* child, const IntPoint&) co
nst override; |
| 103 | 103 |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 174 virtual void setMaxWidthAndLayout(int) override; | 174 virtual void setMaxWidthAndLayout(int) override; |
| 175 | 175 |
| 176 void disconnectClient() { m_popupClient = 0; } | 176 void disconnectClient() { m_popupClient = 0; } |
| 177 | 177 |
| 178 const Vector<PopupItem*>& items() const { return m_items; } | 178 const Vector<PopupItem*>& items() const { return m_items; } |
| 179 | 179 |
| 180 virtual int popupContentHeight() const override; | 180 virtual int popupContentHeight() const override; |
| 181 | 181 |
| 182 static const int defaultMaxHeight; | 182 static const int defaultMaxHeight; |
| 183 | 183 |
| 184 void trace(Visitor*) OVERRIDE; |
| 185 |
| 184 protected: | 186 protected: |
| 185 virtual void invalidateScrollCornerRect(const IntRect&) override { } | 187 virtual void invalidateScrollCornerRect(const IntRect&) override { } |
| 186 | 188 |
| 187 private: | 189 private: |
| 188 friend class PopupContainer; | 190 friend class PopupContainer; |
| 189 friend class RefCounted<PopupListBox>; | 191 friend class RefCounted<PopupListBox>; |
| 190 | 192 |
| 191 PopupListBox(PopupMenuClient*, bool deviceSupportsTouch, PopupContainer*); | 193 PopupListBox(PopupMenuClient*, bool deviceSupportsTouch, PopupContainer*); |
| 192 virtual ~PopupListBox(); | 194 virtual ~PopupListBox(); |
| 193 | 195 |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 281 int m_maxHeight; | 283 int m_maxHeight; |
| 282 | 284 |
| 283 // A list of the options contained within the <select> | 285 // A list of the options contained within the <select> |
| 284 Vector<PopupItem*> m_items; | 286 Vector<PopupItem*> m_items; |
| 285 | 287 |
| 286 // The <select> PopupMenuClient that opened us. | 288 // The <select> PopupMenuClient that opened us. |
| 287 PopupMenuClient* m_popupClient; | 289 PopupMenuClient* m_popupClient; |
| 288 | 290 |
| 289 // The scrollbar which has mouse capture. Mouse events go straight to this | 291 // The scrollbar which has mouse capture. Mouse events go straight to this |
| 290 // if not null. | 292 // if not null. |
| 291 RefPtr<Scrollbar> m_capturingScrollbar; | 293 RefPtrWillBeMember<Scrollbar> m_capturingScrollbar; |
| 292 | 294 |
| 293 // The last scrollbar that the mouse was over. Used for mouseover highlights
. | 295 // The last scrollbar that the mouse was over. Used for mouseover highlights
. |
| 294 RefPtr<Scrollbar> m_lastScrollbarUnderMouse; | 296 RefPtrWillBeMember<Scrollbar> m_lastScrollbarUnderMouse; |
| 295 | 297 |
| 296 // The string the user has typed so far into the popup. Used for typeAheadFi
nd. | 298 // The string the user has typed so far into the popup. Used for typeAheadFi
nd. |
| 297 String m_typedString; | 299 String m_typedString; |
| 298 | 300 |
| 299 // The char the user has hit repeatedly. Used for typeAheadFind. | 301 // The char the user has hit repeatedly. Used for typeAheadFind. |
| 300 UChar m_repeatingChar; | 302 UChar m_repeatingChar; |
| 301 | 303 |
| 302 // The last time the user hit a key. Used for typeAheadFind. | 304 // The last time the user hit a key. Used for typeAheadFind. |
| 303 TimeStamp m_lastCharTime; | 305 TimeStamp m_lastCharTime; |
| 304 | 306 |
| 305 // If width exeeds screen width, we have to clip it. | 307 // If width exeeds screen width, we have to clip it. |
| 306 int m_maxWindowWidth; | 308 int m_maxWindowWidth; |
| 307 | 309 |
| 308 // To forward last mouse release event. | 310 // To forward last mouse release event. |
| 309 RefPtrWillBePersistent<Element> m_focusedElement; | 311 RefPtrWillBeMember<Element> m_focusedElement; |
| 310 | 312 |
| 311 PopupContainer* m_container; | 313 // Oilpan: the container owns/wraps this listbox. A (strong) |
| 314 // Member can be used for the back reference without extending the |
| 315 // container's lifetime; the two objects live equally long. |
| 316 RawPtrWillBeMember<PopupContainer> m_container; |
| 312 | 317 |
| 313 RefPtr<Scrollbar> m_verticalScrollbar; | 318 RefPtrWillBeMember<Scrollbar> m_verticalScrollbar; |
| 314 IntSize m_contentsSize; | 319 IntSize m_contentsSize; |
| 315 IntPoint m_scrollOffset; | 320 IntPoint m_scrollOffset; |
| 316 }; | 321 }; |
| 317 | 322 |
| 318 } // namespace blink | 323 } // namespace blink |
| 319 | 324 |
| 320 #endif | 325 #endif |
| OLD | NEW |