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

Unified Diff: content/browser/renderer_host/input/touch_emulator.cc

Issue 2551573002: [Touch emulator] Update cursor when device scale factor changes. (Closed)
Patch Set: nit Created 4 years 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/input/touch_emulator.cc
diff --git a/content/browser/renderer_host/input/touch_emulator.cc b/content/browser/renderer_host/input/touch_emulator.cc
index 0fcc5361ceea1e50c265518aec6a9e57686a5a7a..86cabdc56345c82a37dde5cb2255e625c240d7e7 100644
--- a/content/browser/renderer_host/input/touch_emulator.cc
+++ b/content/browser/renderer_host/input/touch_emulator.cc
@@ -56,25 +56,12 @@ TouchEmulator::TouchEmulator(TouchEmulatorClient* client,
gesture_provider_config_type_(
ui::GestureProviderConfigType::CURRENT_PLATFORM),
double_tap_enabled_(true),
+ use_2x_cursors_(false),
emulated_stream_active_sequence_count_(0),
native_stream_active_sequence_count_(0) {
DCHECK(client_);
ResetState();
-
- bool use_2x = device_scale_factor > 1.5f;
- float cursor_scale_factor = use_2x ? 2.f : 1.f;
- cursor_size_ = InitCursorFromResource(&touch_cursor_,
- cursor_scale_factor,
- use_2x ? IDR_DEVTOOLS_TOUCH_CURSOR_ICON_2X :
- IDR_DEVTOOLS_TOUCH_CURSOR_ICON);
- InitCursorFromResource(&pinch_cursor_,
- cursor_scale_factor,
- use_2x ? IDR_DEVTOOLS_PINCH_CURSOR_ICON_2X :
- IDR_DEVTOOLS_PINCH_CURSOR_ICON);
-
- WebCursor::CursorInfo cursor_info;
- cursor_info.type = blink::WebCursorInfo::TypePointer;
- pointer_cursor_.InitFromCursorInfo(cursor_info);
+ InitCursors(device_scale_factor, true);
}
TouchEmulator::~TouchEmulator() {
@@ -115,12 +102,40 @@ void TouchEmulator::Disable() {
ResetState();
}
+void TouchEmulator::SetDeviceScaleFactor(float device_scale_factor) {
+ if (!InitCursors(device_scale_factor, false))
+ return;
+ if (enabled())
+ UpdateCursor();
+}
+
void TouchEmulator::SetDoubleTapSupportForPageEnabled(bool enabled) {
double_tap_enabled_ = enabled;
if (gesture_provider_)
gesture_provider_->SetDoubleTapSupportForPageEnabled(enabled);
}
+bool TouchEmulator::InitCursors(float device_scale_factor, bool force) {
+ bool use_2x = device_scale_factor > 1.5f;
+ if (use_2x == use_2x_cursors_ && !force)
+ return false;
+ use_2x_cursors_ = use_2x;
+ float cursor_scale_factor = use_2x ? 2.f : 1.f;
+ cursor_size_ = InitCursorFromResource(&touch_cursor_,
+ cursor_scale_factor,
+ use_2x ? IDR_DEVTOOLS_TOUCH_CURSOR_ICON_2X :
+ IDR_DEVTOOLS_TOUCH_CURSOR_ICON);
+ InitCursorFromResource(&pinch_cursor_,
+ cursor_scale_factor,
+ use_2x ? IDR_DEVTOOLS_PINCH_CURSOR_ICON_2X :
+ IDR_DEVTOOLS_PINCH_CURSOR_ICON);
+
+ WebCursor::CursorInfo cursor_info;
+ cursor_info.type = blink::WebCursorInfo::TypePointer;
+ pointer_cursor_.InitFromCursorInfo(cursor_info);
+ return true;
+}
+
gfx::SizeF TouchEmulator::InitCursorFromResource(
WebCursor* cursor, float scale, int resource_id) {
gfx::Image& cursor_image =
« no previous file with comments | « content/browser/renderer_host/input/touch_emulator.h ('k') | content/browser/renderer_host/input/touch_emulator_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698