| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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_win.h" | 5 #include "chrome/browser/autocomplete/autocomplete_edit_view_win.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <locale> | 8 #include <locale> |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 2001 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2012 } | 2012 } |
| 2013 | 2013 |
| 2014 // We're showing a keyword and the user pressed backspace at the beginning | 2014 // We're showing a keyword and the user pressed backspace at the beginning |
| 2015 // of the text. Delete the selected keyword. | 2015 // of the text. Delete the selected keyword. |
| 2016 ScopedFreeze freeze(this, GetTextObjectModel()); | 2016 ScopedFreeze freeze(this, GetTextObjectModel()); |
| 2017 model_->ClearKeyword(GetText()); | 2017 model_->ClearKeyword(GetText()); |
| 2018 return true; | 2018 return true; |
| 2019 } | 2019 } |
| 2020 | 2020 |
| 2021 case VK_TAB: { | 2021 case VK_TAB: { |
| 2022 if (model_->is_keyword_hint()) { | 2022 const bool shift_pressed = GetKeyState(VK_SHIFT) < 0; |
| 2023 if (model_->is_keyword_hint() && !shift_pressed) { |
| 2023 // Accept the keyword. | 2024 // Accept the keyword. |
| 2024 ScopedFreeze freeze(this, GetTextObjectModel()); | 2025 ScopedFreeze freeze(this, GetTextObjectModel()); |
| 2025 model_->AcceptKeyword(); | 2026 model_->AcceptKeyword(); |
| 2026 } else if (!IsCaretAtEnd()) { | |
| 2027 ScopedFreeze freeze(this, GetTextObjectModel()); | |
| 2028 OnBeforePossibleChange(); | |
| 2029 PlaceCaretAt(GetTextLength()); | |
| 2030 OnAfterPossibleChange(); | |
| 2031 } else { | 2027 } else { |
| 2032 model_->CommitSuggestedText(true); | 2028 model_->OnUpOrDownKeyPressed(shift_pressed ? -count : count); |
| 2033 } | 2029 } |
| 2034 return true; | 2030 return true; |
| 2035 } | 2031 } |
| 2036 | 2032 |
| 2037 case 0xbb: // Ctrl-'='. Triggers subscripting (even in plain text mode). | 2033 case 0xbb: // Ctrl-'='. Triggers subscripting (even in plain text mode). |
| 2038 // We don't use VK_OEM_PLUS in case the macro isn't defined. | 2034 // We don't use VK_OEM_PLUS in case the macro isn't defined. |
| 2039 // (e.g., we don't have this symbol in embeded environment). | 2035 // (e.g., we don't have this symbol in embeded environment). |
| 2040 return true; | 2036 return true; |
| 2041 | 2037 |
| 2042 default: | 2038 default: |
| (...skipping 577 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2620 // PosFromChar(i) might return 0 when i is greater than 1. | 2616 // PosFromChar(i) might return 0 when i is greater than 1. |
| 2621 return font_.GetStringWidth(text) + GetHorizontalMargin(); | 2617 return font_.GetStringWidth(text) + GetHorizontalMargin(); |
| 2622 } | 2618 } |
| 2623 | 2619 |
| 2624 bool AutocompleteEditViewWin::IsCaretAtEnd() const { | 2620 bool AutocompleteEditViewWin::IsCaretAtEnd() const { |
| 2625 long length = GetTextLength(); | 2621 long length = GetTextLength(); |
| 2626 CHARRANGE sel; | 2622 CHARRANGE sel; |
| 2627 GetSelection(sel); | 2623 GetSelection(sel); |
| 2628 return sel.cpMin == sel.cpMax && sel.cpMin == length; | 2624 return sel.cpMin == sel.cpMax && sel.cpMin == length; |
| 2629 } | 2625 } |
| OLD | NEW |