OLD | NEW |
---|---|
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 "content/browser/renderer_host/render_widget_host_view_aura.h" | 5 #include "content/browser/renderer_host/render_widget_host_view_aura.h" |
6 | 6 |
7 #include "base/auto_reset.h" | 7 #include "base/auto_reset.h" |
8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/callback_helpers.h" | 10 #include "base/callback_helpers.h" |
(...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
509 // Setting the transient child allows for the popup to get mouse events when | 509 // Setting the transient child allows for the popup to get mouse events when |
510 // in a system modal dialog. | 510 // in a system modal dialog. |
511 // This fixes crbug.com/328593. | 511 // This fixes crbug.com/328593. |
512 if (transient_window_client) { | 512 if (transient_window_client) { |
513 transient_window_client->AddTransientChild( | 513 transient_window_client->AddTransientChild( |
514 popup_parent_host_view_->window_, window_); | 514 popup_parent_host_view_->window_, window_); |
515 } | 515 } |
516 | 516 |
517 SetBounds(bounds_in_screen); | 517 SetBounds(bounds_in_screen); |
518 Show(); | 518 Show(); |
519 #if !defined(OS_WIN) && !defined(OS_CHROMEOS) | 519 if (NeedsMouseCapture()) |
520 if (NeedsInputGrab()) | |
521 window_->SetCapture(); | 520 window_->SetCapture(); |
522 #endif | |
523 | 521 |
524 event_filter_for_popup_exit_.reset(new EventFilterForPopupExit(this)); | 522 event_filter_for_popup_exit_.reset(new EventFilterForPopupExit(this)); |
525 } | 523 } |
526 | 524 |
527 void RenderWidgetHostViewAura::InitAsFullscreen( | 525 void RenderWidgetHostViewAura::InitAsFullscreen( |
528 RenderWidgetHostView* reference_host_view) { | 526 RenderWidgetHostView* reference_host_view) { |
529 is_fullscreen_ = true; | 527 is_fullscreen_ = true; |
530 window_->SetType(ui::wm::WINDOW_TYPE_NORMAL); | 528 window_->SetType(ui::wm::WINDOW_TYPE_NORMAL); |
531 window_->Init(aura::WINDOW_LAYER_TEXTURED); | 529 window_->Init(aura::WINDOW_LAYER_TEXTURED); |
532 window_->SetName("RenderWidgetHostViewAura"); | 530 window_->SetName("RenderWidgetHostViewAura"); |
(...skipping 1329 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1862 } | 1860 } |
1863 | 1861 |
1864 switch (event->type()) { | 1862 switch (event->type()) { |
1865 case ui::ET_MOUSE_PRESSED: | 1863 case ui::ET_MOUSE_PRESSED: |
1866 window_->SetCapture(); | 1864 window_->SetCapture(); |
1867 // Confirm existing composition text on mouse click events, to make sure | 1865 // Confirm existing composition text on mouse click events, to make sure |
1868 // the input caret won't be moved with an ongoing composition text. | 1866 // the input caret won't be moved with an ongoing composition text. |
1869 FinishImeCompositionSession(); | 1867 FinishImeCompositionSession(); |
1870 break; | 1868 break; |
1871 case ui::ET_MOUSE_RELEASED: | 1869 case ui::ET_MOUSE_RELEASED: |
1872 window_->ReleaseCapture(); | 1870 if (!NeedsMouseCapture()) |
1871 window_->ReleaseCapture(); | |
oshima
2014/09/16 16:17:24
who is closing the popup in this case?
pkotwicz
2014/09/17 02:27:58
The popup is closed when
- The user clicks somewhe
| |
1873 break; | 1872 break; |
1874 default: | 1873 default: |
1875 break; | 1874 break; |
1876 } | 1875 } |
1877 | 1876 |
1878 // Needed to propagate mouse event to |window_->parent()->delegate()|, but | 1877 // Needed to propagate mouse event to |window_->parent()->delegate()|, but |
1879 // note that it might be something other than a WebContentsViewAura instance. | 1878 // note that it might be something other than a WebContentsViewAura instance. |
1880 // TODO(pkotwicz): Find a better way of doing this. | 1879 // TODO(pkotwicz): Find a better way of doing this. |
1881 // In fullscreen mode which is typically used by flash, don't forward | 1880 // In fullscreen mode which is typically used by flash, don't forward |
1882 // the mouse events to the parent. The renderer and the plugin process | 1881 // the mouse events to the parent. The renderer and the plugin process |
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2197 aura::Window* root_window = window_->GetRootWindow(); | 2196 aura::Window* root_window = window_->GetRootWindow(); |
2198 if (!root_window) | 2197 if (!root_window) |
2199 return NULL; | 2198 return NULL; |
2200 return root_window->GetProperty(aura::client::kRootWindowInputMethodKey); | 2199 return root_window->GetProperty(aura::client::kRootWindowInputMethodKey); |
2201 } | 2200 } |
2202 | 2201 |
2203 bool RenderWidgetHostViewAura::NeedsInputGrab() { | 2202 bool RenderWidgetHostViewAura::NeedsInputGrab() { |
2204 return popup_type_ == blink::WebPopupTypeSelect; | 2203 return popup_type_ == blink::WebPopupTypeSelect; |
2205 } | 2204 } |
2206 | 2205 |
2206 bool RenderWidgetHostViewAura::NeedsMouseCapture() { | |
2207 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) | |
2208 return NeedsInputGrab(); | |
2209 #endif | |
2210 return false; | |
2211 } | |
2212 | |
2207 void RenderWidgetHostViewAura::FinishImeCompositionSession() { | 2213 void RenderWidgetHostViewAura::FinishImeCompositionSession() { |
2208 if (!has_composition_text_) | 2214 if (!has_composition_text_) |
2209 return; | 2215 return; |
2210 if (host_) { | 2216 if (host_) { |
2211 host_->ImeConfirmComposition(base::string16(), gfx::Range::InvalidRange(), | 2217 host_->ImeConfirmComposition(base::string16(), gfx::Range::InvalidRange(), |
2212 false); | 2218 false); |
2213 } | 2219 } |
2214 ImeCancelComposition(); | 2220 ImeCancelComposition(); |
2215 } | 2221 } |
2216 | 2222 |
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2494 | 2500 |
2495 //////////////////////////////////////////////////////////////////////////////// | 2501 //////////////////////////////////////////////////////////////////////////////// |
2496 // RenderWidgetHostViewBase, public: | 2502 // RenderWidgetHostViewBase, public: |
2497 | 2503 |
2498 // static | 2504 // static |
2499 void RenderWidgetHostViewBase::GetDefaultScreenInfo(WebScreenInfo* results) { | 2505 void RenderWidgetHostViewBase::GetDefaultScreenInfo(WebScreenInfo* results) { |
2500 GetScreenInfoForWindow(results, NULL); | 2506 GetScreenInfoForWindow(results, NULL); |
2501 } | 2507 } |
2502 | 2508 |
2503 } // namespace content | 2509 } // namespace content |
OLD | NEW |