OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2007 Google Inc. All Rights Reserved. | 2 * Copyright 2007 Google Inc. All Rights Reserved. |
3 * | 3 * |
4 * Portions Copyright (C) 2006 Apple Computer, Inc. All rights reserved. | 4 * Portions Copyright (C) 2006 Apple Computer, Inc. All rights reserved. |
5 * | 5 * |
6 * ***** BEGIN LICENSE BLOCK ***** | 6 * ***** BEGIN LICENSE BLOCK ***** |
7 * | 7 * |
8 * Redistribution and use in source and binary forms, with or without | 8 * Redistribution and use in source and binary forms, with or without |
9 * modification, are permitted provided that the following conditions | 9 * modification, are permitted provided that the following conditions |
10 * are met: | 10 * are met: |
(...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
415 // member. | 415 // member. |
416 // The suppress_next_keypress_event_ is set if the KeyDown is handled by | 416 // The suppress_next_keypress_event_ is set if the KeyDown is handled by |
417 // Webkit. A keyDown event is typically associated with a keyPress(char) | 417 // Webkit. A keyDown event is typically associated with a keyPress(char) |
418 // event and a keyUp event. We reset this flag here as this is a new keyDown | 418 // event and a keyUp event. We reset this flag here as this is a new keyDown |
419 // event. | 419 // event. |
420 suppress_next_keypress_event_ = false; | 420 suppress_next_keypress_event_ = false; |
421 | 421 |
422 // Give autocomplete a chance to consume the key events it is interested in. | 422 // Give autocomplete a chance to consume the key events it is interested in. |
423 if (autocomplete_popup_ && | 423 if (autocomplete_popup_ && |
424 autocomplete_popup_->isInterestedInEventForKey(event.key_code)) { | 424 autocomplete_popup_->isInterestedInEventForKey(event.key_code)) { |
425 if (autocomplete_popup_->handleKeyEvent(MakePlatformKeyboardEvent(event))) | 425 if (autocomplete_popup_->handleKeyEvent(MakePlatformKeyboardEvent(event))) { |
| 426 #if defined(OS_WIN) |
| 427 // We need to ignore the next CHAR event after this otherwise pressing |
| 428 // enter when selecting an item in the menu will go to the page. |
| 429 if (WebInputEvent::KEY_DOWN == event.type) |
| 430 suppress_next_keypress_event_ = true; |
| 431 #endif |
426 return true; | 432 return true; |
| 433 } |
427 return false; | 434 return false; |
428 } | 435 } |
429 | 436 |
430 // A new key being pressed should hide the popup. | 437 // A new key being pressed should hide the popup. |
431 if (event.type == WebInputEvent::KEY_DOWN) | 438 if (event.type == WebInputEvent::KEY_DOWN) |
432 HideAutoCompletePopup(); | 439 HideAutoCompletePopup(); |
433 | 440 |
434 Frame* frame = GetFocusedWebCoreFrame(); | 441 Frame* frame = GetFocusedWebCoreFrame(); |
435 if (!frame) | 442 if (!frame) |
436 return false; | 443 return false; |
(...skipping 1080 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1517 if (suggestions.size() > 0) { | 1524 if (suggestions.size() > 0) { |
1518 autocomplete_popup_client_ = | 1525 autocomplete_popup_client_ = |
1519 adoptRef(new AutocompletePopupMenuClient(this, input_elem, | 1526 adoptRef(new AutocompletePopupMenuClient(this, input_elem, |
1520 suggestions, | 1527 suggestions, |
1521 default_suggestion_index)); | 1528 default_suggestion_index)); |
1522 // Autocomplete popup does not get focused. We need the page to still | 1529 // Autocomplete popup does not get focused. We need the page to still |
1523 // have focus so the user can keep typing when the popup is showing. | 1530 // have focus so the user can keep typing when the popup is showing. |
1524 autocomplete_popup_ = | 1531 autocomplete_popup_ = |
1525 WebCore::PopupContainer::create(autocomplete_popup_client_.get(), | 1532 WebCore::PopupContainer::create(autocomplete_popup_client_.get(), |
1526 false); | 1533 false); |
| 1534 autocomplete_popup_->setTextOnIndexChange(false); |
1527 autocomplete_popup_->show(focused_node->getRect(), frame->view(), 0); | 1535 autocomplete_popup_->show(focused_node->getRect(), frame->view(), 0); |
1528 } | 1536 } |
1529 } | 1537 } |
1530 } | 1538 } |
1531 | 1539 |
1532 void WebViewImpl::DidCommitLoad(bool* is_new_navigation) { | 1540 void WebViewImpl::DidCommitLoad(bool* is_new_navigation) { |
1533 if (is_new_navigation) | 1541 if (is_new_navigation) |
1534 *is_new_navigation = observed_new_navigation_; | 1542 *is_new_navigation = observed_new_navigation_; |
1535 | 1543 |
1536 #ifndef NDEBUG | 1544 #ifndef NDEBUG |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1678 MessageLoop::current()->DeleteSoon(FROM_HERE, fetcher); | 1686 MessageLoop::current()->DeleteSoon(FROM_HERE, fetcher); |
1679 } | 1687 } |
1680 | 1688 |
1681 void WebViewImpl::HideAutoCompletePopup() { | 1689 void WebViewImpl::HideAutoCompletePopup() { |
1682 if (autocomplete_popup_) { | 1690 if (autocomplete_popup_) { |
1683 autocomplete_popup_->hidePopup(); | 1691 autocomplete_popup_->hidePopup(); |
1684 autocomplete_popup_.clear(); | 1692 autocomplete_popup_.clear(); |
1685 autocomplete_popup_client_.clear(); | 1693 autocomplete_popup_client_.clear(); |
1686 } | 1694 } |
1687 } | 1695 } |
OLD | NEW |