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

Side by Side Diff: Source/platform/scroll/ScrollbarThemeGtkOrAura.cpp

Issue 151483008: Re-add snap-back behavior (Blink side) (Closed) Base URL: svn://svn.chromium.org/blink/trunk/
Patch Set: Created 6 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « Source/platform/scroll/ScrollbarThemeGtkOrAura.h ('k') | no next file » | 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) 2008, 2009, Google Inc. All rights reserved. 2 * Copyright (c) 2008, 2009, 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 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 state = blink::WebThemeEngine::StatePressed; 138 state = blink::WebThemeEngine::StatePressed;
139 else if (scrollbar->hoveredPart() == ThumbPart) 139 else if (scrollbar->hoveredPart() == ThumbPart)
140 state = blink::WebThemeEngine::StateHover; 140 state = blink::WebThemeEngine::StateHover;
141 else 141 else
142 state = blink::WebThemeEngine::StateNormal; 142 state = blink::WebThemeEngine::StateNormal;
143 blink::Platform::current()->themeEngine()->paint(canvas, scrollbar->orientat ion() == HorizontalScrollbar ? blink::WebThemeEngine::PartScrollbarHorizontalThu mb : blink::WebThemeEngine::PartScrollbarVerticalThumb, state, blink::WebRect(re ct), 0); 143 blink::Platform::current()->themeEngine()->paint(canvas, scrollbar->orientat ion() == HorizontalScrollbar ? blink::WebThemeEngine::PartScrollbarHorizontalThu mb : blink::WebThemeEngine::PartScrollbarVerticalThumb, state, blink::WebRect(re ct), 0);
144 } 144 }
145 145
146 bool ScrollbarThemeGtkOrAura::shouldCenterOnThumb(ScrollbarThemeClient*, const P latformMouseEvent& evt) 146 bool ScrollbarThemeGtkOrAura::shouldCenterOnThumb(ScrollbarThemeClient*, const P latformMouseEvent& evt)
147 { 147 {
148 return (evt.shiftKey() && evt.button() == LeftButton) || (evt.button() == Mi ddleButton); 148 #if defined(TOOLKIT_GTK)
Elliot Glaysher 2014/02/11 18:36:56 You probably want defined(TOOLKIT_GTK) || (defined
Peter Kasting 2014/02/12 03:17:58 Done.
149 if (evt.button() == MiddleButton)
150 return true;
151 #endif
152 return (evt.shiftKey() && evt.button() == LeftButton);
153 }
154
155 bool ScrollbarThemeGtkOrAura::shouldSnapBackToDragOrigin(ScrollbarThemeClient* s crollbar, const PlatformMouseEvent& evt)
156 {
157 #if defined(TOOLKIT_GTK)
sky 2014/02/10 15:14:30 Don't you want !win here? Otherwise won't chromeos
Peter Kasting 2014/02/10 23:09:16 To re-quote my initial comment on this CL: "(I ch
158 return false;
159 #endif
160
161 // Constants used to figure the drag rect outside which we should snap the
162 // scrollbar thumb back to its origin. These calculations are based on
163 // observing the behavior of the MSVC8 main window scrollbar + some
164 // guessing/extrapolation.
165 static const int kOffEndMultiplier = 3;
166 static const int kOffSideMultiplier = 8;
167
168 // Find the rect within which we shouldn't snap, by expanding the track rect
169 // in both dimensions.
170 IntRect rect = trackRect(scrollbar);
171 const bool horz = scrollbar->orientation() == HorizontalScrollbar;
172 const int thickness = scrollbarThickness(scrollbar->controlSize());
173 rect.inflateX((horz ? kOffEndMultiplier : kOffSideMultiplier) * thickness);
174 rect.inflateY((horz ? kOffSideMultiplier : kOffEndMultiplier) * thickness);
175
176 // Convert the event to local coordinates.
177 IntPoint mousePosition = scrollbar->convertFromContainingWindow(evt.position ());
178 mousePosition.move(scrollbar->x(), scrollbar->y());
179
180 // We should snap iff the event is outside our calculated rect.
181 return !rect.contains(mousePosition);
149 } 182 }
150 183
151 IntSize ScrollbarThemeGtkOrAura::buttonSize(ScrollbarThemeClient* scrollbar) 184 IntSize ScrollbarThemeGtkOrAura::buttonSize(ScrollbarThemeClient* scrollbar)
152 { 185 {
153 if (scrollbar->orientation() == VerticalScrollbar) { 186 if (scrollbar->orientation() == VerticalScrollbar) {
154 IntSize size = blink::Platform::current()->themeEngine()->getSize(blink: :WebThemeEngine::PartScrollbarUpArrow); 187 IntSize size = blink::Platform::current()->themeEngine()->getSize(blink: :WebThemeEngine::PartScrollbarUpArrow);
155 return IntSize(size.width(), scrollbar->height() < 2 * size.height() ? s crollbar->height() / 2 : size.height()); 188 return IntSize(size.width(), scrollbar->height() < 2 * size.height() ? s crollbar->height() / 2 : size.height());
156 } 189 }
157 190
158 // HorizontalScrollbar 191 // HorizontalScrollbar
159 IntSize size = blink::Platform::current()->themeEngine()->getSize(blink::Web ThemeEngine::PartScrollbarLeftArrow); 192 IntSize size = blink::Platform::current()->themeEngine()->getSize(blink::Web ThemeEngine::PartScrollbarLeftArrow);
160 return IntSize(scrollbar->width() < 2 * size.width() ? scrollbar->width() / 2 : size.width(), size.height()); 193 return IntSize(scrollbar->width() < 2 * size.width() ? scrollbar->width() / 2 : size.width(), size.height());
161 } 194 }
162 195
163 int ScrollbarThemeGtkOrAura::minimumThumbLength(ScrollbarThemeClient* scrollbar) 196 int ScrollbarThemeGtkOrAura::minimumThumbLength(ScrollbarThemeClient* scrollbar)
164 { 197 {
165 if (scrollbar->orientation() == VerticalScrollbar) { 198 if (scrollbar->orientation() == VerticalScrollbar) {
166 IntSize size = blink::Platform::current()->themeEngine()->getSize(blink: :WebThemeEngine::PartScrollbarVerticalThumb); 199 IntSize size = blink::Platform::current()->themeEngine()->getSize(blink: :WebThemeEngine::PartScrollbarVerticalThumb);
167 return size.height(); 200 return size.height();
168 } 201 }
169 202
170 IntSize size = blink::Platform::current()->themeEngine()->getSize(blink::Web ThemeEngine::PartScrollbarHorizontalThumb); 203 IntSize size = blink::Platform::current()->themeEngine()->getSize(blink::Web ThemeEngine::PartScrollbarHorizontalThumb);
171 return size.width(); 204 return size.width();
172 } 205 }
173 206
174 } // namespace WebCore 207 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/platform/scroll/ScrollbarThemeGtkOrAura.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698