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

Side by Side Diff: ui/aura/window_tree_host_x11.cc

Issue 184903003: Window ownership -> WindowTreeHost (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/aura/window_tree_host_win.cc ('k') | ui/keyboard/keyboard_ui_handler.cc » ('j') | 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/aura/window_tree_host_x11.h" 5 #include "ui/aura/window_tree_host_x11.h"
6 6
7 #include <strings.h> 7 #include <strings.h>
8 #include <X11/cursorfont.h> 8 #include <X11/cursorfont.h>
9 #include <X11/extensions/Xfixes.h> 9 #include <X11/extensions/Xfixes.h>
10 #include <X11/extensions/XInput2.h> 10 #include <X11/extensions/XInput2.h>
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 XEvent* xev = event; 356 XEvent* xev = event;
357 357
358 if (FindEventTarget(event) == x_root_window_) { 358 if (FindEventTarget(event) == x_root_window_) {
359 if (event->type == GenericEvent) 359 if (event->type == GenericEvent)
360 DispatchXI2Event(event); 360 DispatchXI2Event(event);
361 return POST_DISPATCH_NONE; 361 return POST_DISPATCH_NONE;
362 } 362 }
363 363
364 switch (xev->type) { 364 switch (xev->type) {
365 case EnterNotify: { 365 case EnterNotify: {
366 aura::Window* root_window = GetDispatcher()->window(); 366 aura::Window* root_window = window();
367 client::CursorClient* cursor_client = 367 client::CursorClient* cursor_client =
368 client::GetCursorClient(root_window); 368 client::GetCursorClient(root_window);
369 if (cursor_client) { 369 if (cursor_client) {
370 const gfx::Display display = gfx::Screen::GetScreenFor(root_window)-> 370 const gfx::Display display = gfx::Screen::GetScreenFor(root_window)->
371 GetDisplayNearestWindow(root_window); 371 GetDisplayNearestWindow(root_window);
372 cursor_client->SetDisplay(display); 372 cursor_client->SetDisplay(display);
373 } 373 }
374 ui::MouseEvent mouse_event(xev); 374 ui::MouseEvent mouse_event(xev);
375 // EnterNotify creates ET_MOUSE_MOVE. Mark as synthesized as this is not 375 // EnterNotify creates ET_MOUSE_MOVE. Mark as synthesized as this is not
376 // real mouse move event. 376 // real mouse move event.
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
628 void WindowTreeHostX11::SetCapture() { 628 void WindowTreeHostX11::SetCapture() {
629 // TODO(oshima): Grab x input. 629 // TODO(oshima): Grab x input.
630 } 630 }
631 631
632 void WindowTreeHostX11::ReleaseCapture() { 632 void WindowTreeHostX11::ReleaseCapture() {
633 // TODO(oshima): Release x input. 633 // TODO(oshima): Release x input.
634 } 634 }
635 635
636 bool WindowTreeHostX11::QueryMouseLocation(gfx::Point* location_return) { 636 bool WindowTreeHostX11::QueryMouseLocation(gfx::Point* location_return) {
637 client::CursorClient* cursor_client = 637 client::CursorClient* cursor_client =
638 client::GetCursorClient(GetDispatcher()->window()); 638 client::GetCursorClient(window());
639 if (cursor_client && !cursor_client->IsMouseEventsEnabled()) { 639 if (cursor_client && !cursor_client->IsMouseEventsEnabled()) {
640 *location_return = gfx::Point(0, 0); 640 *location_return = gfx::Point(0, 0);
641 return false; 641 return false;
642 } 642 }
643 643
644 ::Window root_return, child_return; 644 ::Window root_return, child_return;
645 int root_x_return, root_y_return, win_x_return, win_y_return; 645 int root_x_return, root_y_return, win_x_return, win_y_return;
646 unsigned int mask_return; 646 unsigned int mask_return;
647 XQueryPointer(xdisplay_, 647 XQueryPointer(xdisplay_,
648 xwindow_, 648 xwindow_,
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
760 } 760 }
761 761
762 void WindowTreeHostX11::OnCursorVisibilityChangedNative(bool show) { 762 void WindowTreeHostX11::OnCursorVisibilityChangedNative(bool show) {
763 SetCrOSTapPaused(!show); 763 SetCrOSTapPaused(!show);
764 } 764 }
765 765
766 void WindowTreeHostX11::OnWindowInitialized(Window* window) { 766 void WindowTreeHostX11::OnWindowInitialized(Window* window) {
767 } 767 }
768 768
769 void WindowTreeHostX11::OnRootWindowInitialized( 769 void WindowTreeHostX11::OnRootWindowInitialized(
770 WindowEventDispatcher* dispatcher) { 770 WindowEventDispatcher* d) {
771 // UpdateIsInternalDisplay relies on: 771 // UpdateIsInternalDisplay relies on:
772 // 1. delegate_ pointing to WindowEventDispatcher - available after 772 // 1. delegate_ pointing to WindowEventDispatcher - available after
773 // SetDelegate. 773 // SetDelegate.
774 // 2. WED's kDisplayIdKey property set - available by the time 774 // 2. WED's kDisplayIdKey property set - available by the time
775 // WED::Init is called. 775 // WED::Init is called.
776 // (set in DisplayManager::CreateRootWindowForDisplay) 776 // (set in DisplayManager::CreateRootWindowForDisplay)
777 // Ready when NotifyRootWindowInitialized is called from WED::Init. 777 // Ready when NotifyRootWindowInitialized is called from WED::Init.
778 if (!delegate_ || dispatcher != GetDispatcher()) 778 if (!delegate_ || d != dispatcher())
779 return; 779 return;
780 UpdateIsInternalDisplay(); 780 UpdateIsInternalDisplay();
781 781
782 // We have to enable Tap-to-click by default because the cursor is set to 782 // We have to enable Tap-to-click by default because the cursor is set to
783 // visible in Shell::InitRootWindowController. 783 // visible in Shell::InitRootWindowController.
784 SetCrOSTapPaused(false); 784 SetCrOSTapPaused(false);
785 } 785 }
786 786
787 ui::EventProcessor* WindowTreeHostX11::GetEventProcessor() { 787 ui::EventProcessor* WindowTreeHostX11::GetEventProcessor() {
788 return delegate_->GetEventProcessor(); 788 return delegate_->GetEventProcessor();
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
923 return XGetSelectionOwner( 923 return XGetSelectionOwner(
924 xdisplay_, atom_cache_.GetAtom("WM_S0")) != None; 924 xdisplay_, atom_cache_.GetAtom("WM_S0")) != None;
925 } 925 }
926 926
927 void WindowTreeHostX11::SetCursorInternal(gfx::NativeCursor cursor) { 927 void WindowTreeHostX11::SetCursorInternal(gfx::NativeCursor cursor) {
928 XDefineCursor(xdisplay_, xwindow_, cursor.platform()); 928 XDefineCursor(xdisplay_, xwindow_, cursor.platform());
929 } 929 }
930 930
931 void WindowTreeHostX11::TranslateAndDispatchMouseEvent( 931 void WindowTreeHostX11::TranslateAndDispatchMouseEvent(
932 ui::MouseEvent* event) { 932 ui::MouseEvent* event) {
933 Window* root_window = GetDispatcher()->window(); 933 Window* root_window = window();
934 client::ScreenPositionClient* screen_position_client = 934 client::ScreenPositionClient* screen_position_client =
935 client::GetScreenPositionClient(root_window); 935 client::GetScreenPositionClient(root_window);
936 gfx::Rect local(bounds_.size()); 936 gfx::Rect local(bounds_.size());
937 937
938 if (screen_position_client && !local.Contains(event->location())) { 938 if (screen_position_client && !local.Contains(event->location())) {
939 gfx::Point location(event->location()); 939 gfx::Point location(event->location());
940 // In order to get the correct point in screen coordinates 940 // In order to get the correct point in screen coordinates
941 // during passive grab, we first need to find on which host window 941 // during passive grab, we first need to find on which host window
942 // the mouse is on, and find out the screen coordinates on that 942 // the mouse is on, and find out the screen coordinates on that
943 // host window, then convert it back to this host window's coordinate. 943 // host window, then convert it back to this host window's coordinate.
944 screen_position_client->ConvertHostPointToScreen(root_window, &location); 944 screen_position_client->ConvertHostPointToScreen(root_window, &location);
945 screen_position_client->ConvertPointFromScreen(root_window, &location); 945 screen_position_client->ConvertPointFromScreen(root_window, &location);
946 ConvertPointToHost(&location); 946 ConvertPointToHost(&location);
947 event->set_location(location); 947 event->set_location(location);
948 event->set_root_location(location); 948 event->set_root_location(location);
949 } 949 }
950 SendEventToProcessor(event); 950 SendEventToProcessor(event);
951 } 951 }
952 952
953 void WindowTreeHostX11::UpdateIsInternalDisplay() { 953 void WindowTreeHostX11::UpdateIsInternalDisplay() {
954 Window* root_window = GetDispatcher()->window(); 954 Window* root_window = window();
955 gfx::Screen* screen = gfx::Screen::GetScreenFor(root_window); 955 gfx::Screen* screen = gfx::Screen::GetScreenFor(root_window);
956 gfx::Display display = screen->GetDisplayNearestWindow(root_window); 956 gfx::Display display = screen->GetDisplayNearestWindow(root_window);
957 is_internal_display_ = display.IsInternal(); 957 is_internal_display_ = display.IsInternal();
958 } 958 }
959 959
960 void WindowTreeHostX11::SetCrOSTapPaused(bool state) { 960 void WindowTreeHostX11::SetCrOSTapPaused(bool state) {
961 #if defined(OS_CHROMEOS) 961 #if defined(OS_CHROMEOS)
962 if (!ui::IsXInput2Available()) 962 if (!ui::IsXInput2Available())
963 return; 963 return;
964 // Temporarily pause tap-to-click when the cursor is hidden. 964 // Temporarily pause tap-to-click when the cursor is hidden.
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
999 } 999 }
1000 1000
1001 namespace test { 1001 namespace test {
1002 1002
1003 void SetUseOverrideRedirectWindowByDefault(bool override_redirect) { 1003 void SetUseOverrideRedirectWindowByDefault(bool override_redirect) {
1004 default_override_redirect = override_redirect; 1004 default_override_redirect = override_redirect;
1005 } 1005 }
1006 1006
1007 } // namespace test 1007 } // namespace test
1008 } // namespace aura 1008 } // namespace aura
OLDNEW
« no previous file with comments | « ui/aura/window_tree_host_win.cc ('k') | ui/keyboard/keyboard_ui_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698