OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 "chrome/browser/autocomplete/autocomplete_edit_view_mac.h" | 5 #include "chrome/browser/autocomplete/autocomplete_edit_view_mac.h" |
6 | 6 |
7 #include "base/sys_string_conversions.h" | 7 #include "base/sys_string_conversions.h" |
8 #include "chrome/browser/autocomplete/autocomplete_edit.h" | 8 #include "chrome/browser/autocomplete/autocomplete_edit.h" |
9 #include "chrome/browser/autocomplete/autocomplete_popup_model.h" | 9 #include "chrome/browser/autocomplete/autocomplete_popup_model.h" |
10 #include "chrome/browser/autocomplete/autocomplete_popup_view_mac.h" | 10 #include "chrome/browser/autocomplete/autocomplete_popup_view_mac.h" |
11 #include "chrome/browser/tab_contents/tab_contents.h" | 11 #include "chrome/browser/tab_contents/tab_contents.h" |
12 | 12 |
13 namespace { | 13 namespace { |
14 | 14 |
15 // Store's the model and view state across tab switches. | 15 // Store's the model and view state across tab switches. |
16 struct AutocompleteEditViewMacState { | 16 struct AutocompleteEditViewMacState { |
17 AutocompleteEditViewMacState(const AutocompleteEditModel::State model_state, | 17 AutocompleteEditViewMacState(const AutocompleteEditModel::State model_state, |
18 const bool has_focus, const NSRange& selection) | 18 const bool has_focus, const NSRange& selection) |
19 : model_state(model_state), | 19 : model_state(model_state), |
20 has_focus(has_focus), | 20 has_focus(has_focus), |
21 selection(selection) { | 21 selection(selection) { |
22 } | 22 } |
23 | 23 |
24 const AutocompleteEditModel::State model_state; | 24 const AutocompleteEditModel::State model_state; |
25 const bool has_focus; | 25 const bool has_focus; |
26 const NSRange selection; | 26 const NSRange selection; |
27 }; | 27 }; |
28 | 28 |
29 // Returns a lazily initialized property bag accessor for saving our | 29 // Returns a lazily initialized property bag accessor for saving our |
30 // state in a TabContents. | 30 // state in a TabContents. When constructed |accessor| generates a |
| 31 // globally-unique id used to index into the per-tab PropertyBag used |
| 32 // to store the state data. |
31 PropertyAccessor<AutocompleteEditViewMacState>* GetStateAccessor() { | 33 PropertyAccessor<AutocompleteEditViewMacState>* GetStateAccessor() { |
32 static PropertyAccessor<AutocompleteEditViewMacState> state; | 34 static PropertyAccessor<AutocompleteEditViewMacState> accessor; |
33 return &state; | 35 return &accessor; |
34 } | 36 } |
35 | 37 |
36 // Accessors for storing and getting the state from the tab. | 38 // Accessors for storing and getting the state from the tab. |
37 void StoreStateToTab(TabContents* tab, | 39 void StoreStateToTab(TabContents* tab, |
38 const AutocompleteEditViewMacState& state) { | 40 const AutocompleteEditViewMacState& state) { |
39 GetStateAccessor()->SetProperty(tab->property_bag(), state); | 41 GetStateAccessor()->SetProperty(tab->property_bag(), state); |
40 } | 42 } |
41 const AutocompleteEditViewMacState* GetStateFromTab(const TabContents* tab) { | 43 const AutocompleteEditViewMacState* GetStateFromTab(const TabContents* tab) { |
42 return GetStateAccessor()->GetProperty(tab->property_bag()); | 44 return GetStateAccessor()->GetProperty(tab->property_bag()); |
43 } | 45 } |
(...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
448 } | 450 } |
449 | 451 |
450 - (void)controlTextDidEndEditing:(NSNotification*)aNotification { | 452 - (void)controlTextDidEndEditing:(NSNotification*)aNotification { |
451 edit_view_->OnKillFocus(); | 453 edit_view_->OnKillFocus(); |
452 | 454 |
453 // TODO(shess): Figure out where the selection belongs. On GTK, | 455 // TODO(shess): Figure out where the selection belongs. On GTK, |
454 // it's set to the start of the text. | 456 // it's set to the start of the text. |
455 } | 457 } |
456 | 458 |
457 @end | 459 @end |
OLD | NEW |