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

Side by Side Diff: ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc

Issue 188853003: Revert of Clean up WindowEventDispatcher some more. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 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 | « ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc ('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 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h" 5 #include "ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h"
6 6
7 #include <X11/extensions/shape.h> 7 #include <X11/extensions/shape.h>
8 #include <X11/extensions/XInput2.h> 8 #include <X11/extensions/XInput2.h>
9 #include <X11/Xatom.h> 9 #include <X11/Xatom.h>
10 #include <X11/Xregion.h> 10 #include <X11/Xregion.h>
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 return windows; 176 return windows;
177 } 177 }
178 178
179 gfx::Rect DesktopWindowTreeHostX11::GetX11RootWindowBounds() const { 179 gfx::Rect DesktopWindowTreeHostX11::GetX11RootWindowBounds() const {
180 return bounds_; 180 return bounds_;
181 } 181 }
182 182
183 void DesktopWindowTreeHostX11::HandleNativeWidgetActivationChanged( 183 void DesktopWindowTreeHostX11::HandleNativeWidgetActivationChanged(
184 bool active) { 184 bool active) {
185 if (active) { 185 if (active) {
186 OnHostActivated(); 186 delegate_->OnHostActivated();
187 open_windows().remove(xwindow_); 187 open_windows().remove(xwindow_);
188 open_windows().insert(open_windows().begin(), xwindow_); 188 open_windows().insert(open_windows().begin(), xwindow_);
189 } 189 }
190 190
191 desktop_native_widget_aura_->HandleActivationChanged(active); 191 desktop_native_widget_aura_->HandleActivationChanged(active);
192 192
193 native_widget_delegate_->AsWidget()->GetRootView()->SchedulePaint(); 193 native_widget_delegate_->AsWidget()->GetRootView()->SchedulePaint();
194 } 194 }
195 195
196 void DesktopWindowTreeHostX11::AddObserver( 196 void DesktopWindowTreeHostX11::AddObserver(
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 } 230 }
231 231
232 void DesktopWindowTreeHostX11::OnRootWindowCreated( 232 void DesktopWindowTreeHostX11::OnRootWindowCreated(
233 aura::WindowEventDispatcher* dispatcher, 233 aura::WindowEventDispatcher* dispatcher,
234 const Widget::InitParams& params) { 234 const Widget::InitParams& params) {
235 dispatcher_ = dispatcher; 235 dispatcher_ = dispatcher;
236 236
237 dispatcher_->window()->SetProperty(kViewsWindowForRootWindow, 237 dispatcher_->window()->SetProperty(kViewsWindowForRootWindow,
238 content_window_); 238 content_window_);
239 dispatcher_->window()->SetProperty(kHostForRootWindow, this); 239 dispatcher_->window()->SetProperty(kHostForRootWindow, this);
240 delegate_ = dispatcher_;
240 241
241 // If we're given a parent, we need to mark ourselves as transient to another 242 // If we're given a parent, we need to mark ourselves as transient to another
242 // window. Otherwise activation gets screwy. 243 // window. Otherwise activation gets screwy.
243 gfx::NativeView parent = params.parent; 244 gfx::NativeView parent = params.parent;
244 if (!params.child && params.parent) { 245 if (!params.child && params.parent) {
245 corewm::AddTransientChild(parent, content_window_); 246 corewm::AddTransientChild(parent, content_window_);
246 } 247 }
247 248
248 // Ensure that the X11DesktopHandler exists so that it dispatches activation 249 // Ensure that the X11DesktopHandler exists so that it dispatches activation
249 // messages to us. 250 // messages to us.
(...skipping 669 matching lines...) Expand 10 before | Expand all | Expand 10 after
919 float device_scale_factor) { 920 float device_scale_factor) {
920 } 921 }
921 922
922 void DesktopWindowTreeHostX11::PrepareForShutdown() { 923 void DesktopWindowTreeHostX11::PrepareForShutdown() {
923 } 924 }
924 925
925 //////////////////////////////////////////////////////////////////////////////// 926 ////////////////////////////////////////////////////////////////////////////////
926 // DesktopWindowTreeHostX11, ui::EventSource implementation: 927 // DesktopWindowTreeHostX11, ui::EventSource implementation:
927 928
928 ui::EventProcessor* DesktopWindowTreeHostX11::GetEventProcessor() { 929 ui::EventProcessor* DesktopWindowTreeHostX11::GetEventProcessor() {
929 return dispatcher(); 930 return delegate_->GetEventProcessor();
930 } 931 }
931 932
932 //////////////////////////////////////////////////////////////////////////////// 933 ////////////////////////////////////////////////////////////////////////////////
933 // DesktopWindowTreeHostX11, private: 934 // DesktopWindowTreeHostX11, private:
934 935
935 void DesktopWindowTreeHostX11::InitX11Window( 936 void DesktopWindowTreeHostX11::InitX11Window(
936 const Widget::InitParams& params) { 937 const Widget::InitParams& params) {
937 unsigned long attribute_mask = CWBackPixmap; 938 unsigned long attribute_mask = CWBackPixmap;
938 XSetWindowAttributes swa; 939 XSetWindowAttributes swa;
939 memset(&swa, 0, sizeof(swa)); 940 memset(&swa, 0, sizeof(swa));
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
1127 } 1128 }
1128 1129
1129 void DesktopWindowTreeHostX11::SetUseNativeFrame(bool use_native_frame) { 1130 void DesktopWindowTreeHostX11::SetUseNativeFrame(bool use_native_frame) {
1130 use_native_frame_ = use_native_frame; 1131 use_native_frame_ = use_native_frame;
1131 x11_window_event_filter_->SetUseHostWindowBorders(use_native_frame); 1132 x11_window_event_filter_->SetUseHostWindowBorders(use_native_frame);
1132 } 1133 }
1133 1134
1134 void DesktopWindowTreeHostX11::OnCaptureReleased() { 1135 void DesktopWindowTreeHostX11::OnCaptureReleased() {
1135 x11_capture_.reset(); 1136 x11_capture_.reset();
1136 g_current_capture = NULL; 1137 g_current_capture = NULL;
1137 OnHostLostWindowCapture(); 1138 delegate_->OnHostLostWindowCapture();
1138 native_widget_delegate_->OnMouseCaptureLost(); 1139 native_widget_delegate_->OnMouseCaptureLost();
1139 } 1140 }
1140 1141
1141 void DesktopWindowTreeHostX11::DispatchMouseEvent(ui::MouseEvent* event) { 1142 void DesktopWindowTreeHostX11::DispatchMouseEvent(ui::MouseEvent* event) {
1142 if (!g_current_capture || g_current_capture == this) { 1143 if (!g_current_capture || g_current_capture == this) {
1143 SendEventToProcessor(event); 1144 SendEventToProcessor(event);
1144 } else { 1145 } else {
1145 // Another DesktopWindowTreeHostX11 has installed itself as 1146 // Another DesktopWindowTreeHostX11 has installed itself as
1146 // capture. Translate the event's location and dispatch to the other. 1147 // capture. Translate the event's location and dispatch to the other.
1147 event->ConvertLocationToTarget(dispatcher_->window(), 1148 event->ConvertLocationToTarget(dispatcher_->window(),
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
1340 // No event is created for X11-release events for mouse-wheel buttons. 1341 // No event is created for X11-release events for mouse-wheel buttons.
1341 break; 1342 break;
1342 default: 1343 default:
1343 NOTREACHED() << event_type; 1344 NOTREACHED() << event_type;
1344 } 1345 }
1345 break; 1346 break;
1346 } 1347 }
1347 case FocusOut: 1348 case FocusOut:
1348 if (xev->xfocus.mode != NotifyGrab) { 1349 if (xev->xfocus.mode != NotifyGrab) {
1349 ReleaseCapture(); 1350 ReleaseCapture();
1350 OnHostLostWindowCapture(); 1351 delegate_->OnHostLostWindowCapture();
1351 } else { 1352 } else {
1352 dispatcher()->OnHostLostMouseGrab(); 1353 delegate_->OnHostLostMouseGrab();
1353 } 1354 }
1354 break; 1355 break;
1355 case FocusIn: 1356 case FocusIn:
1356 X11DesktopHandler::get()->ProcessXEvent(xev); 1357 X11DesktopHandler::get()->ProcessXEvent(xev);
1357 break; 1358 break;
1358 case ConfigureNotify: { 1359 case ConfigureNotify: {
1359 DCHECK_EQ(xwindow_, xev->xconfigure.window); 1360 DCHECK_EQ(xwindow_, xev->xconfigure.window);
1360 DCHECK_EQ(xwindow_, xev->xconfigure.event); 1361 DCHECK_EQ(xwindow_, xev->xconfigure.event);
1361 // It's possible that the X window may be resized by some other means than 1362 // It's possible that the X window may be resized by some other means than
1362 // from within aura (e.g. the X window manager can change the size). Make 1363 // from within aura (e.g. the X window manager can change the size). Make
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
1413 // events that are at the top of the queue. 1414 // events that are at the top of the queue.
1414 num_coalesced = ui::CoalescePendingMotionEvents(xev, &last_event); 1415 num_coalesced = ui::CoalescePendingMotionEvents(xev, &last_event);
1415 if (num_coalesced > 0) 1416 if (num_coalesced > 0)
1416 xev = &last_event; 1417 xev = &last_event;
1417 } else if (type == ui::ET_MOUSE_PRESSED) { 1418 } else if (type == ui::ET_MOUSE_PRESSED) {
1418 XIDeviceEvent* xievent = 1419 XIDeviceEvent* xievent =
1419 static_cast<XIDeviceEvent*>(xev->xcookie.data); 1420 static_cast<XIDeviceEvent*>(xev->xcookie.data);
1420 int button = xievent->detail; 1421 int button = xievent->detail;
1421 if (button == kBackMouseButton || button == kForwardMouseButton) { 1422 if (button == kBackMouseButton || button == kForwardMouseButton) {
1422 aura::client::UserActionClient* gesture_client = 1423 aura::client::UserActionClient* gesture_client =
1423 aura::client::GetUserActionClient(window()); 1424 aura::client::GetUserActionClient(
1425 delegate_->AsDispatcher()->window());
1424 if (gesture_client) { 1426 if (gesture_client) {
1425 bool reverse_direction = 1427 bool reverse_direction =
1426 ui::IsTouchpadEvent(xev) && ui::IsNaturalScrollEnabled(); 1428 ui::IsTouchpadEvent(xev) && ui::IsNaturalScrollEnabled();
1427 gesture_client->OnUserAction( 1429 gesture_client->OnUserAction(
1428 (button == kBackMouseButton && !reverse_direction) || 1430 (button == kBackMouseButton && !reverse_direction) ||
1429 (button == kForwardMouseButton && reverse_direction) ? 1431 (button == kForwardMouseButton && reverse_direction) ?
1430 aura::client::UserActionClient::BACK : 1432 aura::client::UserActionClient::BACK :
1431 aura::client::UserActionClient::FORWARD); 1433 aura::client::UserActionClient::FORWARD);
1432 } 1434 }
1433 break; 1435 break;
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
1625 if (linux_ui) { 1627 if (linux_ui) {
1626 ui::NativeTheme* native_theme = linux_ui->GetNativeTheme(); 1628 ui::NativeTheme* native_theme = linux_ui->GetNativeTheme();
1627 if (native_theme) 1629 if (native_theme)
1628 return native_theme; 1630 return native_theme;
1629 } 1631 }
1630 1632
1631 return ui::NativeTheme::instance(); 1633 return ui::NativeTheme::instance();
1632 } 1634 }
1633 1635
1634 } // namespace views 1636 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698