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

Side by Side Diff: chrome/browser/ui/views/omnibox/omnibox_view_win.h

Issue 10810062: Moving common code into OmniboxView from OmniboxView* (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix final nits Created 8 years, 4 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
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 #ifndef CHROME_BROWSER_UI_VIEWS_OMNIBOX_OMNIBOX_VIEW_WIN_H_ 5 #ifndef CHROME_BROWSER_UI_VIEWS_OMNIBOX_OMNIBOX_VIEW_WIN_H_
6 #define CHROME_BROWSER_UI_VIEWS_OMNIBOX_OMNIBOX_VIEW_WIN_H_ 6 #define CHROME_BROWSER_UI_VIEWS_OMNIBOX_OMNIBOX_VIEW_WIN_H_
7 7
8 #include <atlbase.h> 8 #include <atlbase.h>
9 #include <atlapp.h> 9 #include <atlapp.h>
10 #include <atlcrack.h> 10 #include <atlcrack.h>
11 #include <atlctrls.h> 11 #include <atlctrls.h>
12 #include <atlmisc.h> 12 #include <atlmisc.h>
13 #include <peninputpanel.h> 13 #include <peninputpanel.h>
14 #include <tom.h> // For ITextDocument, a COM interface to CRichEditCtrl. 14 #include <tom.h> // For ITextDocument, a COM interface to CRichEditCtrl.
15 15
16 #include "base/memory/scoped_ptr.h" 16 #include "base/memory/scoped_ptr.h"
17 #include "base/win/scoped_comptr.h" 17 #include "base/win/scoped_comptr.h"
18 #include "chrome/browser/ui/omnibox/omnibox_view.h" 18 #include "chrome/browser/ui/omnibox/omnibox_view.h"
19 #include "chrome/browser/ui/toolbar/toolbar_model.h" 19 #include "chrome/browser/ui/toolbar/toolbar_model.h"
20 #include "chrome/browser/ui/views/omnibox/omnibox_popup_contents_view.h" 20 #include "chrome/browser/ui/views/omnibox/omnibox_popup_contents_view.h"
21 #include "ui/base/models/simple_menu_model.h" 21 #include "ui/base/models/simple_menu_model.h"
22 #include "ui/base/win/extra_sdk_defines.h" 22 #include "ui/base/win/extra_sdk_defines.h"
23 #include "ui/gfx/font.h" 23 #include "ui/gfx/font.h"
24 #include "webkit/glue/window_open_disposition.h" 24 #include "webkit/glue/window_open_disposition.h"
25 25
26 class LocationBarView; 26 class LocationBarView;
27 class OmniboxEditController;
28 class OmniboxEditModel;
29 class OmniboxPopupView; 27 class OmniboxPopupView;
30 28
31 namespace views { 29 namespace views {
32 class MenuRunner; 30 class MenuRunner;
33 class NativeViewHost; 31 class NativeViewHost;
34 class View; 32 class View;
35 } 33 }
36 34
37 // Provides the implementation of an edit control with a drop-down 35 // Provides the implementation of an edit control with a drop-down
38 // autocomplete box. The box itself is implemented in autocomplete_popup.cc 36 // autocomplete box. The box itself is implemented in autocomplete_popup.cc
(...skipping 29 matching lines...) Expand all
68 views::View* popup_parent_view); 66 views::View* popup_parent_view);
69 ~OmniboxViewWin(); 67 ~OmniboxViewWin();
70 68
71 // Gets the relative window for the specified native view. 69 // Gets the relative window for the specified native view.
72 static gfx::NativeView GetRelativeWindowForNativeView( 70 static gfx::NativeView GetRelativeWindowForNativeView(
73 gfx::NativeView edit_native_view); 71 gfx::NativeView edit_native_view);
74 72
75 views::View* parent_view() const; 73 views::View* parent_view() const;
76 74
77 // OmniboxView: 75 // OmniboxView:
78 virtual OmniboxEditModel* model() OVERRIDE { return model_.get(); }
79 virtual const OmniboxEditModel* model() const OVERRIDE {
80 return model_.get();
81 }
82 virtual void SaveStateToTab(content::WebContents* tab) OVERRIDE; 76 virtual void SaveStateToTab(content::WebContents* tab) OVERRIDE;
83 virtual void Update( 77 virtual void Update(
84 const content::WebContents* tab_for_state_restoring) OVERRIDE; 78 const content::WebContents* tab_for_state_restoring) OVERRIDE;
85 virtual void OpenMatch(const AutocompleteMatch& match, 79 virtual void OpenMatch(const AutocompleteMatch& match,
86 WindowOpenDisposition disposition, 80 WindowOpenDisposition disposition,
87 const GURL& alternate_nav_url, 81 const GURL& alternate_nav_url,
88 size_t index) OVERRIDE; 82 size_t index) OVERRIDE;
89 virtual string16 GetText() const OVERRIDE; 83 virtual string16 GetText() const OVERRIDE;
90 virtual bool IsEditingOrEmpty() const OVERRIDE;
91 virtual int GetIcon() const OVERRIDE;
92 virtual void SetUserText(const string16& text) OVERRIDE;
93 virtual void SetUserText(const string16& text, 84 virtual void SetUserText(const string16& text,
94 const string16& display_text, 85 const string16& display_text,
95 bool update_popup) OVERRIDE; 86 bool update_popup) OVERRIDE;
96 virtual void SetWindowTextAndCaretPos(const string16& text, 87 virtual void SetWindowTextAndCaretPos(const string16& text,
97 size_t caret_pos, 88 size_t caret_pos,
98 bool update_popup, 89 bool update_popup,
99 bool notify_text_changed) OVERRIDE; 90 bool notify_text_changed) OVERRIDE;
100 virtual void SetForcedQuery() OVERRIDE; 91 virtual void SetForcedQuery() OVERRIDE;
101 virtual bool IsSelectAll() const OVERRIDE; 92 virtual bool IsSelectAll() const OVERRIDE;
102 virtual bool DeleteAtEndPressed() OVERRIDE; 93 virtual bool DeleteAtEndPressed() OVERRIDE;
103 virtual void GetSelectionBounds(string16::size_type* start, 94 virtual void GetSelectionBounds(string16::size_type* start,
104 string16::size_type* end) const OVERRIDE; 95 string16::size_type* end) const OVERRIDE;
105 virtual void SelectAll(bool reversed) OVERRIDE; 96 virtual void SelectAll(bool reversed) OVERRIDE;
106 virtual void RevertAll() OVERRIDE; 97 virtual void RevertAll() OVERRIDE;
107 virtual void UpdatePopup() OVERRIDE; 98 virtual void UpdatePopup() OVERRIDE;
108 virtual void ClosePopup() OVERRIDE;
109 virtual void SetFocus() OVERRIDE; 99 virtual void SetFocus() OVERRIDE;
110 virtual void OnTemporaryTextMaybeChanged( 100 virtual void OnTemporaryTextMaybeChanged(
111 const string16& display_text, 101 const string16& display_text,
112 bool save_original_selection) OVERRIDE; 102 bool save_original_selection) OVERRIDE;
113 virtual bool OnInlineAutocompleteTextMaybeChanged( 103 virtual bool OnInlineAutocompleteTextMaybeChanged(
114 const string16& display_text, size_t user_text_length) OVERRIDE; 104 const string16& display_text, size_t user_text_length) OVERRIDE;
115 virtual void OnRevertTemporaryText() OVERRIDE; 105 virtual void OnRevertTemporaryText() OVERRIDE;
116 virtual void OnBeforePossibleChange() OVERRIDE; 106 virtual void OnBeforePossibleChange() OVERRIDE;
117 virtual bool OnAfterPossibleChange() OVERRIDE; 107 virtual bool OnAfterPossibleChange() OVERRIDE;
118 virtual gfx::NativeView GetNativeView() const OVERRIDE; 108 virtual gfx::NativeView GetNativeView() const OVERRIDE;
119 virtual gfx::NativeView GetRelativeWindowForPopup() const OVERRIDE; 109 virtual gfx::NativeView GetRelativeWindowForPopup() const OVERRIDE;
120 virtual CommandUpdater* GetCommandUpdater() OVERRIDE;
121 virtual void SetInstantSuggestion(const string16& suggestion, 110 virtual void SetInstantSuggestion(const string16& suggestion,
122 bool animate_to_complete) OVERRIDE; 111 bool animate_to_complete) OVERRIDE;
123 virtual int TextWidth() const OVERRIDE; 112 virtual int TextWidth() const OVERRIDE;
124 virtual string16 GetInstantSuggestion() const OVERRIDE; 113 virtual string16 GetInstantSuggestion() const OVERRIDE;
125 virtual bool IsImeComposing() const OVERRIDE; 114 virtual bool IsImeComposing() const OVERRIDE;
126 virtual int GetMaxEditWidth(int entry_width) const OVERRIDE; 115 virtual int GetMaxEditWidth(int entry_width) const OVERRIDE;
127 virtual views::View* AddToView(views::View* parent) OVERRIDE; 116 virtual views::View* AddToView(views::View* parent) OVERRIDE;
128 virtual int OnPerformDrop(const views::DropTargetEvent& event) OVERRIDE; 117 virtual int OnPerformDrop(const views::DropTargetEvent& event) OVERRIDE;
129 virtual gfx::Font GetFont() OVERRIDE; 118 virtual gfx::Font GetFont() OVERRIDE;
130 virtual int WidthOfTextAfterCursor() OVERRIDE; 119 virtual int WidthOfTextAfterCursor() OVERRIDE;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 // ui::SimpleMenuModel::Delegate 182 // ui::SimpleMenuModel::Delegate
194 virtual bool IsCommandIdChecked(int command_id) const OVERRIDE; 183 virtual bool IsCommandIdChecked(int command_id) const OVERRIDE;
195 virtual bool IsCommandIdEnabled(int command_id) const OVERRIDE; 184 virtual bool IsCommandIdEnabled(int command_id) const OVERRIDE;
196 virtual bool GetAcceleratorForCommandId( 185 virtual bool GetAcceleratorForCommandId(
197 int command_id, 186 int command_id,
198 ui::Accelerator* accelerator) OVERRIDE; 187 ui::Accelerator* accelerator) OVERRIDE;
199 virtual bool IsItemForCommandIdDynamic(int command_id) const OVERRIDE; 188 virtual bool IsItemForCommandIdDynamic(int command_id) const OVERRIDE;
200 virtual string16 GetLabelForCommandId(int command_id) const OVERRIDE; 189 virtual string16 GetLabelForCommandId(int command_id) const OVERRIDE;
201 virtual void ExecuteCommand(int command_id) OVERRIDE; 190 virtual void ExecuteCommand(int command_id) OVERRIDE;
202 191
203 // Returns true if the caret is at the end of the content.
204 bool IsCaretAtEnd() const;
205
206 private: 192 private:
207 enum MouseButton { 193 enum MouseButton {
208 kLeft = 0, 194 kLeft = 0,
209 kRight = 1, 195 kRight = 1,
210 }; 196 };
211 197
212 // This object freezes repainting of the edit until the object is destroyed. 198 // This object freezes repainting of the edit until the object is destroyed.
213 // Some methods of the CRichEditCtrl draw synchronously to the screen. If we 199 // Some methods of the CRichEditCtrl draw synchronously to the screen. If we
214 // don't freeze, the user will see a rapid series of calls to these as 200 // don't freeze, the user will see a rapid series of calls to these as
215 // flickers. 201 // flickers.
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 // clipped to be within the horizontal bounds of the visible text. 313 // clipped to be within the horizontal bounds of the visible text.
328 // 314 //
329 // This is used in our mouse handlers to work around quirky behaviors of the 315 // This is used in our mouse handlers to work around quirky behaviors of the
330 // underlying CRichEditCtrl like not supporting triple-click when the user 316 // underlying CRichEditCtrl like not supporting triple-click when the user
331 // doesn't click on the text itself. 317 // doesn't click on the text itself.
332 // 318 //
333 // |is_triple_click| should be true iff this is the third click of a triple 319 // |is_triple_click| should be true iff this is the third click of a triple
334 // click. Sadly, we need to clip slightly differently in this case. 320 // click. Sadly, we need to clip slightly differently in this case.
335 LONG ClipXCoordToVisibleText(LONG x, bool is_triple_click) const; 321 LONG ClipXCoordToVisibleText(LONG x, bool is_triple_click) const;
336 322
323 virtual int GetOmniboxTextLength() const OVERRIDE;
324
337 // Parses the contents of the control for the scheme and the host name. 325 // Parses the contents of the control for the scheme and the host name.
338 // Highlights the scheme in green or red depending on it security level. 326 // Highlights the scheme in green or red depending on it security level.
339 // If a host name is found, it makes it visually stronger. 327 // If a host name is found, it makes it visually stronger.
340 void EmphasizeURLComponents(); 328 virtual void EmphasizeURLComponents() OVERRIDE;
341 329
342 // Erases the portion of the selection in the font's y-adjustment area. For 330 // Erases the portion of the selection in the font's y-adjustment area. For
343 // some reason the edit draws the selection rect here even though it's not 331 // some reason the edit draws the selection rect here even though it's not
344 // part of the font. 332 // part of the font.
345 void EraseTopOfSelection(CDC* dc, 333 void EraseTopOfSelection(CDC* dc,
346 const CRect& client_rect, 334 const CRect& client_rect,
347 const CRect& paint_clip_rect); 335 const CRect& paint_clip_rect);
348 336
349 // Draws a slash across the scheme if desired. 337 // Draws a slash across the scheme if desired.
350 void DrawSlashForInsecureScheme(HDC hdc, 338 void DrawSlashForInsecureScheme(HDC hdc,
351 const CRect& client_rect, 339 const CRect& client_rect,
352 const CRect& paint_clip_rect); 340 const CRect& paint_clip_rect);
353 341
354 // Renders the drop highlight. 342 // Renders the drop highlight.
355 void DrawDropHighlight(HDC hdc, 343 void DrawDropHighlight(HDC hdc,
356 const CRect& client_rect, 344 const CRect& client_rect,
357 const CRect& paint_clip_rect); 345 const CRect& paint_clip_rect);
358 346
359 // Internally invoked whenever the text changes in some way. 347 // Internally invoked whenever the text changes in some way.
360 void TextChanged(); 348 void TextChanged() OVERRIDE;
361 349
362 // Getter for the text_object_model_. Note that the pointer returned here is 350 // Getter for the text_object_model_. Note that the pointer returned here is
363 // only valid as long as the AutocompleteEdit is still alive. Also, if the 351 // only valid as long as the AutocompleteEdit is still alive. Also, if the
364 // underlying call fails, this may return NULL. 352 // underlying call fails, this may return NULL.
365 ITextDocument* GetTextObjectModel() const; 353 ITextDocument* GetTextObjectModel() const;
366 354
367 // Invoked during a mouse move. As necessary starts a drag and drop session. 355 // Invoked during a mouse move. As necessary starts a drag and drop session.
368 void StartDragIfNecessary(const CPoint& point); 356 void StartDragIfNecessary(const CPoint& point);
369 357
370 // Invoked during a mouse down. If the mouse location is over the selection 358 // Invoked during a mouse down. If the mouse location is over the selection
(...skipping 19 matching lines...) Expand all
390 int WidthNeededToDisplay(const string16& text) const; 378 int WidthNeededToDisplay(const string16& text) const;
391 379
392 // Real implementation of OnAfterPossibleChange() method. 380 // Real implementation of OnAfterPossibleChange() method.
393 // If |force_text_changed| is true, then the text_changed code will always be 381 // If |force_text_changed| is true, then the text_changed code will always be
394 // triggerred no matter if the text is actually changed or not. 382 // triggerred no matter if the text is actually changed or not.
395 bool OnAfterPossibleChangeInternal(bool force_text_changed); 383 bool OnAfterPossibleChangeInternal(bool force_text_changed);
396 384
397 // Common implementation for performing a drop on the edit view. 385 // Common implementation for performing a drop on the edit view.
398 int OnPerformDropImpl(const views::DropTargetEvent& event, bool in_drag); 386 int OnPerformDropImpl(const views::DropTargetEvent& event, bool in_drag);
399 387
400 scoped_ptr<OmniboxEditModel> model_;
401
402 scoped_ptr<OmniboxPopupView> popup_view_; 388 scoped_ptr<OmniboxPopupView> popup_view_;
403 389
404 OmniboxEditController* controller_;
405
406 // The parent view for the edit, used to align the popup and for 390 // The parent view for the edit, used to align the popup and for
407 // accessibility. 391 // accessibility.
408 LocationBarView* parent_view_; 392 LocationBarView* parent_view_;
409 393
410 ToolbarModel* toolbar_model_;
411
412 // The object that handles additional command functionality exposed on the
413 // edit, such as invoking the keyword editor.
414 CommandUpdater* command_updater_;
415
416 // When true, the location bar view is read only and also is has a slightly 394 // When true, the location bar view is read only and also is has a slightly
417 // different presentation (font size / color). This is used for popups. 395 // different presentation (font size / color). This is used for popups.
418 bool popup_window_mode_; 396 bool popup_window_mode_;
419 397
420 // True if we should prevent attempts to make the window visible when we 398 // True if we should prevent attempts to make the window visible when we
421 // handle WM_WINDOWPOSCHANGING. While toggling fullscreen mode, the main 399 // handle WM_WINDOWPOSCHANGING. While toggling fullscreen mode, the main
422 // window is hidden, and if the edit is shown it will draw over the main 400 // window is hidden, and if the edit is shown it will draw over the main
423 // window when that window reappears. 401 // window when that window reappears.
424 bool force_hidden_; 402 bool force_hidden_;
425 403
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
521 // Instance of accessibility information and handling. 499 // Instance of accessibility information and handling.
522 mutable base::win::ScopedComPtr<IAccessible> autocomplete_accessibility_; 500 mutable base::win::ScopedComPtr<IAccessible> autocomplete_accessibility_;
523 501
524 // The native view host. 502 // The native view host.
525 views::NativeViewHost* native_view_host_; 503 views::NativeViewHost* native_view_host_;
526 504
527 DISALLOW_COPY_AND_ASSIGN(OmniboxViewWin); 505 DISALLOW_COPY_AND_ASSIGN(OmniboxViewWin);
528 }; 506 };
529 507
530 #endif // CHROME_BROWSER_UI_VIEWS_OMNIBOX_OMNIBOX_VIEW_WIN_H_ 508 #endif // CHROME_BROWSER_UI_VIEWS_OMNIBOX_OMNIBOX_VIEW_WIN_H_
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/omnibox/omnibox_view_views.cc ('k') | chrome/browser/ui/views/omnibox/omnibox_view_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698