Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(143)

Side by Side Diff: Source/core/platform/ScrollView.h

Issue 23819019: Refactor fixed layout mode (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Source/core/page/FrameView.cpp ('k') | Source/core/platform/ScrollView.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2004, 2006, 2007, 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2004, 2006, 2007, 2008 Apple Inc. All rights reserved.
3 * Copyright (C) 2009 Holger Hans Peter Freyther 3 * Copyright (C) 2009 Holger Hans Peter Freyther
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. 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 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 virtual PassRefPtr<Scrollbar> createScrollbar(ScrollbarOrientation); 113 virtual PassRefPtr<Scrollbar> createScrollbar(ScrollbarOrientation);
114 114
115 // Whether or not a scroll view will blit visible contents when it is scroll ed. Blitting is disabled in situations 115 // Whether or not a scroll view will blit visible contents when it is scroll ed. Blitting is disabled in situations
116 // where it would cause rendering glitches (such as with fixed backgrounds o r when the view is partially transparent). 116 // where it would cause rendering glitches (such as with fixed backgrounds o r when the view is partially transparent).
117 void setCanBlitOnScroll(bool); 117 void setCanBlitOnScroll(bool);
118 bool canBlitOnScroll() const; 118 bool canBlitOnScroll() const;
119 119
120 // The visible content rect has a location that is the scrolled offset of th e document. The width and height are the viewport width 120 // The visible content rect has a location that is the scrolled offset of th e document. The width and height are the viewport width
121 // and height. By default the scrollbars themselves are excluded from this r ectangle, but an optional boolean argument allows them to be 121 // and height. By default the scrollbars themselves are excluded from this r ectangle, but an optional boolean argument allows them to be
122 // included. 122 // included.
123 virtual IntRect visibleContentRect(VisibleContentRectIncludesScrollbars = Ex cludeScrollbars) const OVERRIDE; 123 virtual IntRect visibleContentRect(IncludeScrollbarsInRect = ExcludeScrollba rs) const OVERRIDE;
124 IntSize visibleSize() const { return visibleContentRect().size(); } 124 IntSize visibleSize() const { return visibleContentRect().size(); }
125 virtual int visibleWidth() const OVERRIDE { return visibleContentRect().widt h(); } 125 virtual int visibleWidth() const OVERRIDE { return visibleContentRect().widt h(); }
126 virtual int visibleHeight() const OVERRIDE { return visibleContentRect().hei ght(); } 126 virtual int visibleHeight() const OVERRIDE { return visibleContentRect().hei ght(); }
127 127
128 // visibleContentRect().size() is computed from unscaledVisibleContentSize() divided by the value of visibleContentScaleFactor. 128 // visibleContentRect().size() is computed from unscaledVisibleContentSize() divided by the value of visibleContentScaleFactor.
129 // For the main frame, visibleContentScaleFactor is equal to the page's page ScaleFactor; it's 1 otherwise. 129 // For the main frame, visibleContentScaleFactor is equal to the page's page ScaleFactor; it's 1 otherwise.
130 IntSize unscaledVisibleContentSize(VisibleContentRectIncludesScrollbars = Ex cludeScrollbars) const; 130 IntSize unscaledVisibleContentSize(IncludeScrollbarsInRect = ExcludeScrollba rs) const;
131 virtual float visibleContentScaleFactor() const { return 1; } 131 virtual float visibleContentScaleFactor() const { return 1; }
132 132
133 // Functions for getting/setting the size webkit should use to layout the co ntents. By default this is the same as the visible
134 // content size. Explicitly setting a layout size value will cause webkit to layout the contents using this size instead.
135 IntSize layoutSize(VisibleContentRectIncludesScrollbars = ExcludeScrollbars) const;
136 int layoutWidth(VisibleContentRectIncludesScrollbars scrollbarInclusion = Ex cludeScrollbars) const { return layoutSize(scrollbarInclusion).width(); }
137 int layoutHeight(VisibleContentRectIncludesScrollbars scrollbarInclusion = E xcludeScrollbars) const { return layoutSize(scrollbarInclusion).height(); }
138 IntSize fixedLayoutSize() const;
139 void setFixedLayoutSize(const IntSize&);
140 bool useFixedLayout() const;
141 void setUseFixedLayout(bool enable);
142
143 // Functions for getting/setting the size of the document contained inside t he ScrollView (as an IntSize or as individual width and height 133 // Functions for getting/setting the size of the document contained inside t he ScrollView (as an IntSize or as individual width and height
144 // values). 134 // values).
145 virtual IntSize contentsSize() const OVERRIDE; // Always at least as big as the visibleWidth()/visibleHeight(). 135 virtual IntSize contentsSize() const OVERRIDE; // Always at least as big as the visibleWidth()/visibleHeight().
146 int contentsWidth() const { return contentsSize().width(); } 136 int contentsWidth() const { return contentsSize().width(); }
147 int contentsHeight() const { return contentsSize().height(); } 137 int contentsHeight() const { return contentsSize().height(); }
148 virtual void setContentsSize(const IntSize&); 138 virtual void setContentsSize(const IntSize&);
149 139
150 // Functions for querying the current scrolled position (both as a point, a size, or as individual X and Y values). 140 // Functions for querying the current scrolled position (both as a point, a size, or as individual X and Y values).
151 virtual IntPoint scrollPosition() const OVERRIDE { return visibleContentRect ().location(); } 141 virtual IntPoint scrollPosition() const OVERRIDE { return visibleContentRect ().location(); }
152 IntSize scrollOffset() const { return toIntSize(visibleContentRect().locatio n()); } // Gets the scrolled position as an IntSize. Convenient for adding to ot her sizes. 142 IntSize scrollOffset() const { return toIntSize(visibleContentRect().locatio n()); } // Gets the scrolled position as an IntSize. Convenient for adding to ot her sizes.
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
268 virtual bool isScrollView() const OVERRIDE { return true; } 258 virtual bool isScrollView() const OVERRIDE { return true; }
269 259
270 protected: 260 protected:
271 ScrollView(); 261 ScrollView();
272 262
273 virtual void repaintContentRectangle(const IntRect&); 263 virtual void repaintContentRectangle(const IntRect&);
274 virtual void paintContents(GraphicsContext*, const IntRect& damageRect) = 0; 264 virtual void paintContents(GraphicsContext*, const IntRect& damageRect) = 0;
275 265
276 virtual void paintOverhangAreas(GraphicsContext*, const IntRect& horizontalO verhangArea, const IntRect& verticalOverhangArea, const IntRect& dirtyRect); 266 virtual void paintOverhangAreas(GraphicsContext*, const IntRect& horizontalO verhangArea, const IntRect& verticalOverhangArea, const IntRect& dirtyRect);
277 267
278 virtual void visibleContentsResized() = 0; 268 virtual void scrollbarExistenceDidChange() = 0;
279 // These functions are used to create/destroy scrollbars. 269 // These functions are used to create/destroy scrollbars.
280 void setHasHorizontalScrollbar(bool); 270 void setHasHorizontalScrollbar(bool);
281 void setHasVerticalScrollbar(bool); 271 void setHasVerticalScrollbar(bool);
282 272
283 virtual void updateScrollCorner(); 273 virtual void updateScrollCorner();
284 virtual void invalidateScrollCornerRect(const IntRect&) OVERRIDE; 274 virtual void invalidateScrollCornerRect(const IntRect&) OVERRIDE;
285 275
286 // Scroll the content by blitting the pixels. 276 // Scroll the content by blitting the pixels.
287 virtual bool scrollContentsFastPath(const IntSize& scrollDelta, const IntRec t& rectToScroll, const IntRect& clipRect); 277 virtual bool scrollContentsFastPath(const IntSize& scrollDelta, const IntRec t& rectToScroll, const IntRect& clipRect);
288 // Scroll the content by invalidating everything. 278 // Scroll the content by invalidating everything.
289 virtual void scrollContentsSlowPath(const IntRect& updateRect); 279 virtual void scrollContentsSlowPath(const IntRect& updateRect);
290 280
291 void setScrollOrigin(const IntPoint&, bool updatePositionAtAll, bool updateP ositionSynchronously); 281 void setScrollOrigin(const IntPoint&, bool updatePositionAtAll, bool updateP ositionSynchronously);
292 282
293 // Subclassed by FrameView to check the writing-mode of the document. 283 // Subclassed by FrameView to check the writing-mode of the document.
294 virtual bool isVerticalDocument() const { return true; } 284 virtual bool isVerticalDocument() const { return true; }
295 virtual bool isFlippedDocument() const { return false; } 285 virtual bool isFlippedDocument() const { return false; }
296 286
297 // Called to update the scrollbars to accurately reflect the state of the vi ew. 287 // Called to update the scrollbars to accurately reflect the state of the vi ew.
298 void updateScrollbars(const IntSize& desiredOffset); 288 void updateScrollbars(const IntSize& desiredOffset);
299 289
290 IntSize excludeScrollbars(const IntSize&) const;
291
300 private: 292 private:
301 RefPtr<Scrollbar> m_horizontalScrollbar; 293 RefPtr<Scrollbar> m_horizontalScrollbar;
302 RefPtr<Scrollbar> m_verticalScrollbar; 294 RefPtr<Scrollbar> m_verticalScrollbar;
303 ScrollbarMode m_horizontalScrollbarMode; 295 ScrollbarMode m_horizontalScrollbarMode;
304 ScrollbarMode m_verticalScrollbarMode; 296 ScrollbarMode m_verticalScrollbarMode;
305 297
306 bool m_horizontalScrollbarLock; 298 bool m_horizontalScrollbarLock;
307 bool m_verticalScrollbarLock; 299 bool m_verticalScrollbarLock;
308 300
309 HashSet<RefPtr<Widget> > m_children; 301 HashSet<RefPtr<Widget> > m_children;
310 302
311 // This bool is unused on Mac OS because we directly ask the platform widget 303 // This bool is unused on Mac OS because we directly ask the platform widget
312 // whether it is safe to blit on scroll. 304 // whether it is safe to blit on scroll.
313 bool m_canBlitOnScroll; 305 bool m_canBlitOnScroll;
314 306
315 IntSize m_scrollOffset; // FIXME: Would rather store this as a position, but we will wait to make this change until more code is shared. 307 IntSize m_scrollOffset; // FIXME: Would rather store this as a position, but we will wait to make this change until more code is shared.
316 IntPoint m_cachedScrollPosition; 308 IntPoint m_cachedScrollPosition;
317 IntSize m_fixedLayoutSize;
318 IntSize m_contentsSize; 309 IntSize m_contentsSize;
319 310
320 int m_scrollbarsAvoidingResizer; 311 int m_scrollbarsAvoidingResizer;
321 bool m_scrollbarsSuppressed; 312 bool m_scrollbarsSuppressed;
322 313
323 bool m_inUpdateScrollbars; 314 bool m_inUpdateScrollbars;
324 unsigned m_updateScrollbarsPass; 315 unsigned m_updateScrollbarsPass;
325 316
326 IntPoint m_panScrollIconPoint; 317 IntPoint m_panScrollIconPoint;
327 bool m_drawPanScrollIcon; 318 bool m_drawPanScrollIcon;
328 bool m_useFixedLayout;
329 319
330 bool m_paintsEntireContents; 320 bool m_paintsEntireContents;
331 bool m_clipsRepaints; 321 bool m_clipsRepaints;
332 322
333 void init(); 323 void init();
334 void destroy(); 324 void destroy();
335 325
336 IntRect rectToCopyOnScroll() const; 326 IntRect rectToCopyOnScroll() const;
337 327
338 // Called when the scroll position within this view changes. FrameView over rides this to generate repaint invalidations. 328 // Called when the scroll position within this view changes. FrameView over rides this to generate repaint invalidations.
(...skipping 17 matching lines...) Expand all
356 ASSERT(!widget || widget->isScrollView()); 346 ASSERT(!widget || widget->isScrollView());
357 return static_cast<const ScrollView*>(widget); 347 return static_cast<const ScrollView*>(widget);
358 } 348 }
359 349
360 // This will catch anyone doing an unnecessary cast. 350 // This will catch anyone doing an unnecessary cast.
361 void toScrollView(const ScrollView*); 351 void toScrollView(const ScrollView*);
362 352
363 } // namespace WebCore 353 } // namespace WebCore
364 354
365 #endif // ScrollView_h 355 #endif // ScrollView_h
OLDNEW
« no previous file with comments | « Source/core/page/FrameView.cpp ('k') | Source/core/platform/ScrollView.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698