XWalk WebView patchset, README and LICENSE files.
[platform/framework/web/xwalk_webview.git] / patchset / 0025-Fix-key-events.patch
1 From 3cc152b5d3bc17e87bb41d8f1cb765bf462d3c71 Mon Sep 17 00:00:00 2001
2 From: Alexander Shalamov <alexander.shalamov@intel.com>
3 Date: Wed, 14 Aug 2013 11:02:13 +0300
4 Subject: [PATCH 25/33] Fix key events
5
6 ---
7  content/browser/renderer_host/render_widget_host_view_efl.cc | 3 +++
8  ui/gfx/preserve_window_efl.cc                                | 6 ++++++
9  ui/gfx/preserve_window_efl.h                                 | 1 +
10  3 files changed, 10 insertions(+)
11
12 diff --git a/content/browser/renderer_host/render_widget_host_view_efl.cc b/content/browser/renderer_host/render_widget_host_view_efl.cc
13 index e9f3ec9..0ee06af 100644
14 --- a/content/browser/renderer_host/render_widget_host_view_efl.cc
15 +++ b/content/browser/renderer_host/render_widget_host_view_efl.cc
16 @@ -104,6 +104,7 @@ RenderWidgetHostViewEfl::~RenderWidgetHostViewEfl() {
17  
18  void RenderWidgetHostViewEfl::PreserveWindowMouseDown(Evas_Event_Mouse_Down* mouse_down) {
19    // The coordinates must be relative to the view, not the root window.
20 +  PreserveWindowFocusIn();
21    int view_x, view_y;
22    evas_object_geometry_get(preserve_window_->SmartObject(),
23                             &view_x, &view_y, NULL, NULL);
24 @@ -155,12 +156,14 @@ void RenderWidgetHostViewEfl::PreserveWindowFocusIn() {
25  
26    host_->GotFocus();
27    host_->SetActive(true);
28 +  preserve_window_->SetFocus(true);
29  }
30  
31  void RenderWidgetHostViewEfl::PreserveWindowFocusOut() {
32    if (host_ && !IsShowingContextMenu()) {
33      host_->SetActive(false);
34      host_->Blur();
35 +    preserve_window_->SetFocus(false);
36    }
37  }
38  
39 diff --git a/ui/gfx/preserve_window_efl.cc b/ui/gfx/preserve_window_efl.cc
40 index 6c901a7..2d783e3 100644
41 --- a/ui/gfx/preserve_window_efl.cc
42 +++ b/ui/gfx/preserve_window_efl.cc
43 @@ -298,6 +298,12 @@ PreserveWindow::~PreserveWindow() {
44      evas_object_del(smart_object_);  
45  }
46  
47 +void PreserveWindow::SetFocus(bool focus)
48 +{
49 +  PreserveWindowData* smart_data = ToSmartData(smart_object_);
50 +  evas_object_focus_set(smart_data->background, focus);
51 +}
52 +
53  gfx::PluginWindowHandle PreserveWindow::EmbeddedXWindow() {
54    PreserveWindowData* smart_data = ToSmartData(smart_object_);
55    return smart_data->window;
56 diff --git a/ui/gfx/preserve_window_efl.h b/ui/gfx/preserve_window_efl.h
57 index 6cb48ba..e22f508 100644
58 --- a/ui/gfx/preserve_window_efl.h
59 +++ b/ui/gfx/preserve_window_efl.h
60 @@ -23,6 +23,7 @@ class UI_EXPORT PreserveWindow {
61  
62    Evas_Object* SmartObject() const { return smart_object_; }
63    PluginWindowHandle EmbeddedXWindow();
64 +  void SetFocus(bool focus);
65  
66    static void InitSmartClassInterface(Evas_Smart_Class* smart_class);
67  
68 -- 
69 1.8.1.2
70