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

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

Issue 1236923003: Makes DesktopWindowTreeHostXxx to dispatch key event to InputMethod. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add TODO. Created 5 years, 5 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
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>
11 #include <X11/Xutil.h> 11 #include <X11/Xutil.h>
12 12
13 #include "base/basictypes.h" 13 #include "base/basictypes.h"
14 #include "base/command_line.h" 14 #include "base/command_line.h"
15 #include "base/strings/stringprintf.h" 15 #include "base/strings/stringprintf.h"
16 #include "base/strings/utf_string_conversions.h" 16 #include "base/strings/utf_string_conversions.h"
17 #include "base/trace_event/trace_event.h" 17 #include "base/trace_event/trace_event.h"
18 #include "third_party/skia/include/core/SkPath.h" 18 #include "third_party/skia/include/core/SkPath.h"
19 #include "ui/aura/client/cursor_client.h" 19 #include "ui/aura/client/cursor_client.h"
20 #include "ui/aura/client/focus_client.h" 20 #include "ui/aura/client/focus_client.h"
21 #include "ui/aura/window.h" 21 #include "ui/aura/window.h"
22 #include "ui/aura/window_event_dispatcher.h" 22 #include "ui/aura/window_event_dispatcher.h"
23 #include "ui/aura/window_property.h" 23 #include "ui/aura/window_property.h"
24 #include "ui/base/dragdrop/os_exchange_data_provider_aurax11.h" 24 #include "ui/base/dragdrop/os_exchange_data_provider_aurax11.h"
25 #include "ui/base/hit_test.h" 25 #include "ui/base/hit_test.h"
26 #include "ui/base/ime/input_method.h"
26 #include "ui/base/x/x11_util.h" 27 #include "ui/base/x/x11_util.h"
27 #include "ui/events/devices/x11/device_data_manager_x11.h" 28 #include "ui/events/devices/x11/device_data_manager_x11.h"
28 #include "ui/events/devices/x11/device_list_cache_x11.h" 29 #include "ui/events/devices/x11/device_list_cache_x11.h"
29 #include "ui/events/devices/x11/touch_factory_x11.h" 30 #include "ui/events/devices/x11/touch_factory_x11.h"
30 #include "ui/events/event_utils.h" 31 #include "ui/events/event_utils.h"
31 #include "ui/events/platform/platform_event_source.h" 32 #include "ui/events/platform/platform_event_source.h"
32 #include "ui/events/platform/x11/x11_event_source.h" 33 #include "ui/events/platform/x11/x11_event_source.h"
33 #include "ui/gfx/display.h" 34 #include "ui/gfx/display.h"
34 #include "ui/gfx/geometry/insets.h" 35 #include "ui/gfx/geometry/insets.h"
35 #include "ui/gfx/geometry/size_conversions.h" 36 #include "ui/gfx/geometry/size_conversions.h"
(...skipping 1474 matching lines...) Expand 10 before | Expand all | Expand 10 after
1510 void DesktopWindowTreeHostX11::DispatchTouchEvent(ui::TouchEvent* event) { 1511 void DesktopWindowTreeHostX11::DispatchTouchEvent(ui::TouchEvent* event) {
1511 if (g_current_capture && g_current_capture != this && 1512 if (g_current_capture && g_current_capture != this &&
1512 event->type() == ui::ET_TOUCH_PRESSED) { 1513 event->type() == ui::ET_TOUCH_PRESSED) {
1513 ConvertEventToDifferentHost(event, g_current_capture); 1514 ConvertEventToDifferentHost(event, g_current_capture);
1514 g_current_capture->SendEventToProcessor(event); 1515 g_current_capture->SendEventToProcessor(event);
1515 } else { 1516 } else {
1516 SendEventToProcessor(event); 1517 SendEventToProcessor(event);
1517 } 1518 }
1518 } 1519 }
1519 1520
1521 void DesktopWindowTreeHostX11::DispatchKeyEvent(ui::KeyEvent* event) {
1522 GetInputMethod()->DispatchKeyEvent(*event);
1523 event->StopPropagation();
1524 }
1525
1520 void DesktopWindowTreeHostX11::ConvertEventToDifferentHost( 1526 void DesktopWindowTreeHostX11::ConvertEventToDifferentHost(
1521 ui::LocatedEvent* located_event, 1527 ui::LocatedEvent* located_event,
1522 DesktopWindowTreeHostX11* host) { 1528 DesktopWindowTreeHostX11* host) {
1523 DCHECK_NE(this, host); 1529 DCHECK_NE(this, host);
1524 const gfx::Display display_src = 1530 const gfx::Display display_src =
1525 gfx::Screen::GetNativeScreen()->GetDisplayNearestWindow(window()); 1531 gfx::Screen::GetNativeScreen()->GetDisplayNearestWindow(window());
1526 const gfx::Display display_dest = 1532 const gfx::Display display_dest =
1527 gfx::Screen::GetNativeScreen()->GetDisplayNearestWindow(host->window()); 1533 gfx::Screen::GetNativeScreen()->GetDisplayNearestWindow(host->window());
1528 DCHECK_EQ(display_src.device_scale_factor(), 1534 DCHECK_EQ(display_src.device_scale_factor(),
1529 display_dest.device_scale_factor()); 1535 display_dest.device_scale_factor());
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
1738 break; 1744 break;
1739 } 1745 }
1740 case Expose: { 1746 case Expose: {
1741 gfx::Rect damage_rect_in_pixels(xev->xexpose.x, xev->xexpose.y, 1747 gfx::Rect damage_rect_in_pixels(xev->xexpose.x, xev->xexpose.y,
1742 xev->xexpose.width, xev->xexpose.height); 1748 xev->xexpose.width, xev->xexpose.height);
1743 compositor()->ScheduleRedrawRect(damage_rect_in_pixels); 1749 compositor()->ScheduleRedrawRect(damage_rect_in_pixels);
1744 break; 1750 break;
1745 } 1751 }
1746 case KeyPress: { 1752 case KeyPress: {
1747 ui::KeyEvent keydown_event(xev); 1753 ui::KeyEvent keydown_event(xev);
1748 SendEventToProcessor(&keydown_event); 1754 DispatchKeyEvent(&keydown_event);
1749 break; 1755 break;
1750 } 1756 }
1751 case KeyRelease: { 1757 case KeyRelease: {
1752 // There is no way to deactivate a window in X11 so ignore input if 1758 // There is no way to deactivate a window in X11 so ignore input if
1753 // window is supposed to be 'inactive'. See comments in 1759 // window is supposed to be 'inactive'. See comments in
1754 // X11DesktopHandler::DeactivateWindow() for more details. 1760 // X11DesktopHandler::DeactivateWindow() for more details.
1755 if (!IsActive() && !HasCapture()) 1761 if (!IsActive() && !HasCapture())
1756 break; 1762 break;
1757 1763
1758 ui::KeyEvent key_event(xev); 1764 ui::KeyEvent key_event(xev);
1759 SendEventToProcessor(&key_event); 1765 DispatchKeyEvent(&key_event);
1760 break; 1766 break;
1761 } 1767 }
1762 case ButtonPress: 1768 case ButtonPress:
1763 case ButtonRelease: { 1769 case ButtonRelease: {
1764 ui::EventType event_type = ui::EventTypeFromNative(xev); 1770 ui::EventType event_type = ui::EventTypeFromNative(xev);
1765 switch (event_type) { 1771 switch (event_type) {
1766 case ui::ET_MOUSEWHEEL: { 1772 case ui::ET_MOUSEWHEEL: {
1767 ui::MouseWheelEvent mouseev(xev); 1773 ui::MouseWheelEvent mouseev(xev);
1768 DispatchMouseEvent(&mouseev); 1774 DispatchMouseEvent(&mouseev);
1769 break; 1775 break;
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
1874 case ui::ET_SCROLL_FLING_START: 1880 case ui::ET_SCROLL_FLING_START:
1875 case ui::ET_SCROLL_FLING_CANCEL: 1881 case ui::ET_SCROLL_FLING_CANCEL:
1876 case ui::ET_SCROLL: { 1882 case ui::ET_SCROLL: {
1877 ui::ScrollEvent scrollev(xev); 1883 ui::ScrollEvent scrollev(xev);
1878 SendEventToProcessor(&scrollev); 1884 SendEventToProcessor(&scrollev);
1879 break; 1885 break;
1880 } 1886 }
1881 case ui::ET_KEY_PRESSED: 1887 case ui::ET_KEY_PRESSED:
1882 case ui::ET_KEY_RELEASED: { 1888 case ui::ET_KEY_RELEASED: {
1883 ui::KeyEvent key_event(xev); 1889 ui::KeyEvent key_event(xev);
1884 SendEventToProcessor(&key_event); 1890 DispatchKeyEvent(&key_event);
1885 break; 1891 break;
1886 } 1892 }
1887 case ui::ET_UNKNOWN: 1893 case ui::ET_UNKNOWN:
1888 break; 1894 break;
1889 default: 1895 default:
1890 NOTREACHED(); 1896 NOTREACHED();
1891 } 1897 }
1892 1898
1893 // If we coalesced an event we need to free its cookie. 1899 // If we coalesced an event we need to free its cookie.
1894 if (num_coalesced > 0) 1900 if (num_coalesced > 0)
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
2050 if (linux_ui) { 2056 if (linux_ui) {
2051 ui::NativeTheme* native_theme = linux_ui->GetNativeTheme(window); 2057 ui::NativeTheme* native_theme = linux_ui->GetNativeTheme(window);
2052 if (native_theme) 2058 if (native_theme)
2053 return native_theme; 2059 return native_theme;
2054 } 2060 }
2055 2061
2056 return ui::NativeTheme::instance(); 2062 return ui::NativeTheme::instance();
2057 } 2063 }
2058 2064
2059 } // namespace views 2065 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h ('k') | ui/views/win/hwnd_message_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698