| OLD | NEW | 
|---|
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. Use of this | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. Use of this | 
| 2 // source code is governed by a BSD-style license that can be found in the | 2 // source code is governed by a BSD-style license that can be found in the | 
| 3 // LICENSE file. | 3 // LICENSE file. | 
| 4 | 4 | 
| 5 #include "chrome/browser/views/autocomplete/autocomplete_popup_win.h" | 5 #include "chrome/browser/views/autocomplete/autocomplete_popup_win.h" | 
| 6 | 6 | 
| 7 #include "app/gfx/insets.h" | 7 #include "app/gfx/insets.h" | 
| 8 #include "app/win_util.h" | 8 #include "app/win_util.h" | 
| 9 #include "chrome/browser/autocomplete/autocomplete_edit_view_win.h" | 9 #include "chrome/browser/autocomplete/autocomplete_edit_view_win.h" | 
| 10 #include "chrome/browser/autocomplete/autocomplete_popup_model.h" | 10 #include "chrome/browser/autocomplete/autocomplete_popup_model.h" | 
| 11 #include "chrome/browser/views/autocomplete/autocomplete_popup_contents_view.h" | 11 #include "chrome/browser/views/autocomplete/autocomplete_popup_contents_view.h" | 
| 12 | 12 | 
| 13 //////////////////////////////////////////////////////////////////////////////// | 13 //////////////////////////////////////////////////////////////////////////////// | 
| 14 // AutocompletePopupWin, public: | 14 // AutocompletePopupWin, public: | 
| 15 | 15 | 
| 16 AutocompletePopupWin::AutocompletePopupWin( | 16 AutocompletePopupWin::AutocompletePopupWin( | 
| 17     AutocompletePopupContentsView* contents) | 17     AutocompletePopupContentsView* contents) | 
| 18     : contents_(contents) { | 18     : contents_(contents) { | 
| 19   set_delete_on_destroy(false); | 19   set_delete_on_destroy(false); | 
| 20   set_window_style(WS_POPUP | WS_CLIPCHILDREN); | 20   set_window_style(WS_POPUP | WS_CLIPCHILDREN); | 
| 21   set_window_ex_style(WS_EX_TOOLWINDOW | WS_EX_LAYERED); | 21   set_window_ex_style(WS_EX_TOOLWINDOW | WS_EX_LAYERED); | 
| 22 } | 22 } | 
| 23 | 23 | 
| 24 AutocompletePopupWin::~AutocompletePopupWin() { | 24 AutocompletePopupWin::~AutocompletePopupWin() { | 
| 25 } | 25 } | 
| 26 | 26 | 
| 27 void AutocompletePopupWin::Init(AutocompleteEditViewWin* edit_view, | 27 void AutocompletePopupWin::Init(AutocompleteEditView* edit_view, | 
| 28                                 views::View* contents) { | 28                                 views::View* contents) { | 
| 29   // Create the popup | 29   // Create the popup | 
| 30   WidgetWin::Init(edit_view->parent_view()->GetWidget()->GetNativeView(), | 30   WidgetWin::Init(GetAncestor(edit_view->GetNativeView(), GA_ROOT), | 
| 31                   contents_->GetPopupBounds()); | 31                   contents_->GetPopupBounds()); | 
| 32   // The contents is owned by the LocationBarView. | 32   // The contents is owned by the LocationBarView. | 
| 33   contents_->SetParentOwned(false); | 33   contents_->SetParentOwned(false); | 
| 34   SetContentsView(contents_); | 34   SetContentsView(contents_); | 
| 35 | 35 | 
| 36   // When an IME is attached to the rich-edit control, retrieve its window | 36   // When an IME is attached to the rich-edit control, retrieve its window | 
| 37   // handle and show this popup window under the IME windows. | 37   // handle and show this popup window under the IME windows. | 
| 38   // Otherwise, show this popup window under top-most windows. | 38   // Otherwise, show this popup window under top-most windows. | 
| 39   // TODO(hbono): http://b/1111369 if we exclude this popup window from the | 39   // TODO(hbono): http://b/1111369 if we exclude this popup window from the | 
| 40   // display area of IME windows, this workaround becomes unnecessary. | 40   // display area of IME windows, this workaround becomes unnecessary. | 
| 41   HWND ime_window = ImmGetDefaultIMEWnd(edit_view->m_hWnd); | 41   HWND ime_window = ImmGetDefaultIMEWnd(edit_view->GetNativeView()); | 
| 42   SetWindowPos(ime_window ? ime_window : HWND_NOTOPMOST, 0, 0, 0, 0, | 42   SetWindowPos(ime_window ? ime_window : HWND_NOTOPMOST, 0, 0, 0, 0, | 
| 43                SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE | SWP_SHOWWINDOW); | 43                SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE | SWP_SHOWWINDOW); | 
| 44 } | 44 } | 
| 45 | 45 | 
| 46 void AutocompletePopupWin::Show() { | 46 void AutocompletePopupWin::Show() { | 
| 47   // Move the popup to the place appropriate for the window's current position - | 47   // Move the popup to the place appropriate for the window's current position - | 
| 48   // it may have been moved since it was last shown. | 48   // it may have been moved since it was last shown. | 
| 49   SetBounds(contents_->GetPopupBounds()); | 49   SetBounds(contents_->GetPopupBounds()); | 
| 50   if (!IsVisible()) | 50   if (!IsVisible()) | 
| 51     WidgetWin::Show(); | 51     WidgetWin::Show(); | 
| 52 } | 52 } | 
| 53 | 53 | 
|  | 54 bool AutocompletePopupWin::IsOpen() const { | 
|  | 55   return IsCreated() && IsVisible(); | 
|  | 56 } | 
|  | 57 | 
|  | 58 bool AutocompletePopupWin::IsCreated() const { | 
|  | 59   return !!IsWindow(); | 
|  | 60 } | 
|  | 61 | 
| 54 //////////////////////////////////////////////////////////////////////////////// | 62 //////////////////////////////////////////////////////////////////////////////// | 
| 55 // AutocompletePopupWin, WidgetWin overrides: | 63 // AutocompletePopupWin, WidgetWin overrides: | 
| 56 | 64 | 
| 57 LRESULT AutocompletePopupWin::OnMouseActivate(HWND window, UINT hit_test, | 65 LRESULT AutocompletePopupWin::OnMouseActivate(HWND window, UINT hit_test, | 
| 58                                               UINT mouse_message) { | 66                                               UINT mouse_message) { | 
| 59   return MA_NOACTIVATE; | 67   return MA_NOACTIVATE; | 
| 60 } | 68 } | 
| OLD | NEW | 
|---|