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

Side by Side Diff: ui/views/controls/textfield/textfield.cc

Issue 2228833002: MacViews: Fix behavior of move and select commands when selection direction changes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@use_text_commands
Patch Set: Address review comments. Created 4 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
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 #include "ui/views/controls/textfield/textfield.h" 5 #include "ui/views/controls/textfield/textfield.h"
6 6
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/trace_event/trace_event.h" 10 #include "base/trace_event/trace_event.h"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) 54 #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
55 #include "base/strings/utf_string_conversions.h" 55 #include "base/strings/utf_string_conversions.h"
56 #include "ui/base/ime/linux/text_edit_command_auralinux.h" 56 #include "ui/base/ime/linux/text_edit_command_auralinux.h"
57 #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h" 57 #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h"
58 #endif 58 #endif
59 59
60 namespace views { 60 namespace views {
61 61
62 namespace { 62 namespace {
63 63
64 #if defined(OS_MACOSX)
65 const gfx::SelectionBehavior kLineSelectionBehavior = gfx::SELECTION_EXTEND;
66 const gfx::SelectionBehavior kWordSelectionBehavior = gfx::SELECTION_CARET;
67 const gfx::SelectionBehavior kMoveParagraphSelectionBehavior =
68 gfx::SELECTION_CARET;
69 #else
70 const gfx::SelectionBehavior kLineSelectionBehavior = gfx::SELECTION_RETAIN;
71 const gfx::SelectionBehavior kWordSelectionBehavior = gfx::SELECTION_RETAIN;
72 const gfx::SelectionBehavior kMoveParagraphSelectionBehavior =
73 gfx::SELECTION_RETAIN;
74 #endif
75
64 // Default placeholder text color. 76 // Default placeholder text color.
65 const SkColor kDefaultPlaceholderTextColor = SK_ColorLTGRAY; 77 const SkColor kDefaultPlaceholderTextColor = SK_ColorLTGRAY;
66 78
67 void ConvertRectToScreen(const View* src, gfx::Rect* r) { 79 void ConvertRectToScreen(const View* src, gfx::Rect* r) {
68 DCHECK(src); 80 DCHECK(src);
69 81
70 gfx::Point new_origin = r->origin(); 82 gfx::Point new_origin = r->origin();
71 View::ConvertPointToScreen(src, &new_origin); 83 View::ConvertPointToScreen(src, &new_origin);
72 r->set_origin(new_origin); 84 r->set_origin(new_origin);
73 } 85 }
(...skipping 1387 matching lines...) Expand 10 before | Expand all | Expand 10 after
1461 case ui::TextEditCommand::MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION: 1473 case ui::TextEditCommand::MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION:
1462 case ui::TextEditCommand::MOVE_TO_BEGINNING_OF_PARAGRAPH: 1474 case ui::TextEditCommand::MOVE_TO_BEGINNING_OF_PARAGRAPH:
1463 case ui::TextEditCommand:: 1475 case ui::TextEditCommand::
1464 MOVE_TO_BEGINNING_OF_PARAGRAPH_AND_MODIFY_SELECTION: 1476 MOVE_TO_BEGINNING_OF_PARAGRAPH_AND_MODIFY_SELECTION:
1465 case ui::TextEditCommand::MOVE_TO_END_OF_DOCUMENT: 1477 case ui::TextEditCommand::MOVE_TO_END_OF_DOCUMENT:
1466 case ui::TextEditCommand::MOVE_TO_END_OF_DOCUMENT_AND_MODIFY_SELECTION: 1478 case ui::TextEditCommand::MOVE_TO_END_OF_DOCUMENT_AND_MODIFY_SELECTION:
1467 case ui::TextEditCommand::MOVE_TO_END_OF_LINE: 1479 case ui::TextEditCommand::MOVE_TO_END_OF_LINE:
1468 case ui::TextEditCommand::MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION: 1480 case ui::TextEditCommand::MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION:
1469 case ui::TextEditCommand::MOVE_TO_END_OF_PARAGRAPH: 1481 case ui::TextEditCommand::MOVE_TO_END_OF_PARAGRAPH:
1470 case ui::TextEditCommand::MOVE_TO_END_OF_PARAGRAPH_AND_MODIFY_SELECTION: 1482 case ui::TextEditCommand::MOVE_TO_END_OF_PARAGRAPH_AND_MODIFY_SELECTION:
1483 case ui::TextEditCommand::MOVE_PARAGRAPH_FORWARD_AND_MODIFY_SELECTION:
1484 case ui::TextEditCommand::MOVE_PARAGRAPH_BACKWARD_AND_MODIFY_SELECTION:
1471 case ui::TextEditCommand::MOVE_WORD_BACKWARD: 1485 case ui::TextEditCommand::MOVE_WORD_BACKWARD:
1472 case ui::TextEditCommand::MOVE_WORD_BACKWARD_AND_MODIFY_SELECTION: 1486 case ui::TextEditCommand::MOVE_WORD_BACKWARD_AND_MODIFY_SELECTION:
1473 case ui::TextEditCommand::MOVE_WORD_FORWARD: 1487 case ui::TextEditCommand::MOVE_WORD_FORWARD:
1474 case ui::TextEditCommand::MOVE_WORD_FORWARD_AND_MODIFY_SELECTION: 1488 case ui::TextEditCommand::MOVE_WORD_FORWARD_AND_MODIFY_SELECTION:
1475 case ui::TextEditCommand::MOVE_WORD_LEFT: 1489 case ui::TextEditCommand::MOVE_WORD_LEFT:
1476 case ui::TextEditCommand::MOVE_WORD_LEFT_AND_MODIFY_SELECTION: 1490 case ui::TextEditCommand::MOVE_WORD_LEFT_AND_MODIFY_SELECTION:
1477 case ui::TextEditCommand::MOVE_WORD_RIGHT: 1491 case ui::TextEditCommand::MOVE_WORD_RIGHT:
1478 case ui::TextEditCommand::MOVE_WORD_RIGHT_AND_MODIFY_SELECTION: 1492 case ui::TextEditCommand::MOVE_WORD_RIGHT_AND_MODIFY_SELECTION:
1479 return true; 1493 return true;
1480 case ui::TextEditCommand::UNDO: 1494 case ui::TextEditCommand::UNDO:
(...skipping 16 matching lines...) Expand all
1497 case ui::TextEditCommand::YANK: 1511 case ui::TextEditCommand::YANK:
1498 return editable; 1512 return editable;
1499 case ui::TextEditCommand::MOVE_DOWN: 1513 case ui::TextEditCommand::MOVE_DOWN:
1500 case ui::TextEditCommand::MOVE_DOWN_AND_MODIFY_SELECTION: 1514 case ui::TextEditCommand::MOVE_DOWN_AND_MODIFY_SELECTION:
1501 case ui::TextEditCommand::MOVE_PAGE_DOWN: 1515 case ui::TextEditCommand::MOVE_PAGE_DOWN:
1502 case ui::TextEditCommand::MOVE_PAGE_DOWN_AND_MODIFY_SELECTION: 1516 case ui::TextEditCommand::MOVE_PAGE_DOWN_AND_MODIFY_SELECTION:
1503 case ui::TextEditCommand::MOVE_PAGE_UP: 1517 case ui::TextEditCommand::MOVE_PAGE_UP:
1504 case ui::TextEditCommand::MOVE_PAGE_UP_AND_MODIFY_SELECTION: 1518 case ui::TextEditCommand::MOVE_PAGE_UP_AND_MODIFY_SELECTION:
1505 case ui::TextEditCommand::MOVE_UP: 1519 case ui::TextEditCommand::MOVE_UP:
1506 case ui::TextEditCommand::MOVE_UP_AND_MODIFY_SELECTION: 1520 case ui::TextEditCommand::MOVE_UP_AND_MODIFY_SELECTION:
1521 // On Mac, the textfield should respond to Up/Down arrows keys and
1522 // PageUp/PageDown.
1523 #if defined(OS_MACOSX)
1524 return true;
1525 #else
1526 return false;
1527 #endif
1507 case ui::TextEditCommand::INSERT_TEXT: 1528 case ui::TextEditCommand::INSERT_TEXT:
1508 case ui::TextEditCommand::SET_MARK: 1529 case ui::TextEditCommand::SET_MARK:
1509 case ui::TextEditCommand::UNSELECT: 1530 case ui::TextEditCommand::UNSELECT:
1510 case ui::TextEditCommand::INVALID_COMMAND: 1531 case ui::TextEditCommand::INVALID_COMMAND:
1511 return false; 1532 return false;
1512 } 1533 }
1513 NOTREACHED(); 1534 NOTREACHED();
1514 return false; 1535 return false;
1515 } 1536 }
1516 1537
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
1581 OnBeforeUserAction(); 1602 OnBeforeUserAction();
1582 switch (command) { 1603 switch (command) {
1583 case ui::TextEditCommand::DELETE_BACKWARD: 1604 case ui::TextEditCommand::DELETE_BACKWARD:
1584 text_changed = cursor_changed = model_->Backspace(add_to_kill_buffer); 1605 text_changed = cursor_changed = model_->Backspace(add_to_kill_buffer);
1585 break; 1606 break;
1586 case ui::TextEditCommand::DELETE_FORWARD: 1607 case ui::TextEditCommand::DELETE_FORWARD:
1587 text_changed = cursor_changed = model_->Delete(add_to_kill_buffer); 1608 text_changed = cursor_changed = model_->Delete(add_to_kill_buffer);
1588 break; 1609 break;
1589 case ui::TextEditCommand::DELETE_TO_BEGINNING_OF_LINE: 1610 case ui::TextEditCommand::DELETE_TO_BEGINNING_OF_LINE:
1590 case ui::TextEditCommand::DELETE_TO_BEGINNING_OF_PARAGRAPH: 1611 case ui::TextEditCommand::DELETE_TO_BEGINNING_OF_PARAGRAPH:
1591 model_->MoveCursor(gfx::LINE_BREAK, begin, true); 1612 model_->MoveCursor(gfx::LINE_BREAK, begin, gfx::SELECTION_RETAIN);
1592 text_changed = cursor_changed = model_->Backspace(add_to_kill_buffer); 1613 text_changed = cursor_changed = model_->Backspace(add_to_kill_buffer);
1593 break; 1614 break;
1594 case ui::TextEditCommand::DELETE_TO_END_OF_LINE: 1615 case ui::TextEditCommand::DELETE_TO_END_OF_LINE:
1595 case ui::TextEditCommand::DELETE_TO_END_OF_PARAGRAPH: 1616 case ui::TextEditCommand::DELETE_TO_END_OF_PARAGRAPH:
1596 model_->MoveCursor(gfx::LINE_BREAK, end, true); 1617 model_->MoveCursor(gfx::LINE_BREAK, end, gfx::SELECTION_RETAIN);
1597 text_changed = cursor_changed = model_->Delete(add_to_kill_buffer); 1618 text_changed = cursor_changed = model_->Delete(add_to_kill_buffer);
1598 break; 1619 break;
1599 case ui::TextEditCommand::DELETE_WORD_BACKWARD: 1620 case ui::TextEditCommand::DELETE_WORD_BACKWARD:
1600 model_->MoveCursor(gfx::WORD_BREAK, begin, true); 1621 model_->MoveCursor(gfx::WORD_BREAK, begin, gfx::SELECTION_RETAIN);
1601 text_changed = cursor_changed = model_->Backspace(add_to_kill_buffer); 1622 text_changed = cursor_changed = model_->Backspace(add_to_kill_buffer);
1602 break; 1623 break;
1603 case ui::TextEditCommand::DELETE_WORD_FORWARD: 1624 case ui::TextEditCommand::DELETE_WORD_FORWARD:
1604 model_->MoveCursor(gfx::WORD_BREAK, end, true); 1625 model_->MoveCursor(gfx::WORD_BREAK, end, gfx::SELECTION_RETAIN);
1605 text_changed = cursor_changed = model_->Delete(add_to_kill_buffer); 1626 text_changed = cursor_changed = model_->Delete(add_to_kill_buffer);
1606 break; 1627 break;
1607 case ui::TextEditCommand::MOVE_BACKWARD: 1628 case ui::TextEditCommand::MOVE_BACKWARD:
1608 model_->MoveCursor(gfx::CHARACTER_BREAK, begin, false); 1629 model_->MoveCursor(gfx::CHARACTER_BREAK, begin, gfx::SELECTION_NONE);
1609 break; 1630 break;
1610 case ui::TextEditCommand::MOVE_BACKWARD_AND_MODIFY_SELECTION: 1631 case ui::TextEditCommand::MOVE_BACKWARD_AND_MODIFY_SELECTION:
1611 model_->MoveCursor(gfx::CHARACTER_BREAK, begin, true); 1632 model_->MoveCursor(gfx::CHARACTER_BREAK, begin, gfx::SELECTION_RETAIN);
1612 break; 1633 break;
1613 case ui::TextEditCommand::MOVE_FORWARD: 1634 case ui::TextEditCommand::MOVE_FORWARD:
1614 model_->MoveCursor(gfx::CHARACTER_BREAK, end, false); 1635 model_->MoveCursor(gfx::CHARACTER_BREAK, end, gfx::SELECTION_NONE);
1615 break; 1636 break;
1616 case ui::TextEditCommand::MOVE_FORWARD_AND_MODIFY_SELECTION: 1637 case ui::TextEditCommand::MOVE_FORWARD_AND_MODIFY_SELECTION:
1617 model_->MoveCursor(gfx::CHARACTER_BREAK, end, true); 1638 model_->MoveCursor(gfx::CHARACTER_BREAK, end, gfx::SELECTION_RETAIN);
1618 break; 1639 break;
1619 case ui::TextEditCommand::MOVE_LEFT: 1640 case ui::TextEditCommand::MOVE_LEFT:
1620 model_->MoveCursor(gfx::CHARACTER_BREAK, gfx::CURSOR_LEFT, false); 1641 model_->MoveCursor(gfx::CHARACTER_BREAK, gfx::CURSOR_LEFT,
1642 gfx::SELECTION_NONE);
1621 break; 1643 break;
1622 case ui::TextEditCommand::MOVE_LEFT_AND_MODIFY_SELECTION: 1644 case ui::TextEditCommand::MOVE_LEFT_AND_MODIFY_SELECTION:
1623 model_->MoveCursor(gfx::CHARACTER_BREAK, gfx::CURSOR_LEFT, true); 1645 model_->MoveCursor(gfx::CHARACTER_BREAK, gfx::CURSOR_LEFT,
1646 gfx::SELECTION_RETAIN);
1624 break; 1647 break;
1625 case ui::TextEditCommand::MOVE_RIGHT: 1648 case ui::TextEditCommand::MOVE_RIGHT:
1626 model_->MoveCursor(gfx::CHARACTER_BREAK, gfx::CURSOR_RIGHT, false); 1649 model_->MoveCursor(gfx::CHARACTER_BREAK, gfx::CURSOR_RIGHT,
1650 gfx::SELECTION_NONE);
1627 break; 1651 break;
1628 case ui::TextEditCommand::MOVE_RIGHT_AND_MODIFY_SELECTION: 1652 case ui::TextEditCommand::MOVE_RIGHT_AND_MODIFY_SELECTION:
1629 model_->MoveCursor(gfx::CHARACTER_BREAK, gfx::CURSOR_RIGHT, true); 1653 model_->MoveCursor(gfx::CHARACTER_BREAK, gfx::CURSOR_RIGHT,
1654 gfx::SELECTION_RETAIN);
1630 break; 1655 break;
1631 case ui::TextEditCommand::MOVE_TO_BEGINNING_OF_DOCUMENT: 1656 case ui::TextEditCommand::MOVE_TO_BEGINNING_OF_DOCUMENT:
1632 case ui::TextEditCommand::MOVE_TO_BEGINNING_OF_LINE: 1657 case ui::TextEditCommand::MOVE_TO_BEGINNING_OF_LINE:
1633 case ui::TextEditCommand::MOVE_TO_BEGINNING_OF_PARAGRAPH: 1658 case ui::TextEditCommand::MOVE_TO_BEGINNING_OF_PARAGRAPH:
1634 model_->MoveCursor(gfx::LINE_BREAK, begin, false); 1659 case ui::TextEditCommand::MOVE_UP:
1660 case ui::TextEditCommand::MOVE_PAGE_UP:
1661 model_->MoveCursor(gfx::LINE_BREAK, begin, gfx::SELECTION_NONE);
1635 break; 1662 break;
1636 case ui::TextEditCommand:: 1663 case ui::TextEditCommand::
1637 MOVE_TO_BEGINNING_OF_DOCUMENT_AND_MODIFY_SELECTION: 1664 MOVE_TO_BEGINNING_OF_DOCUMENT_AND_MODIFY_SELECTION:
1638 case ui::TextEditCommand::MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION: 1665 case ui::TextEditCommand::MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION:
1639 case ui::TextEditCommand:: 1666 case ui::TextEditCommand::
1640 MOVE_TO_BEGINNING_OF_PARAGRAPH_AND_MODIFY_SELECTION: 1667 MOVE_TO_BEGINNING_OF_PARAGRAPH_AND_MODIFY_SELECTION:
1641 model_->MoveCursor(gfx::LINE_BREAK, begin, true); 1668 model_->MoveCursor(gfx::LINE_BREAK, begin, kLineSelectionBehavior);
1669 break;
1670 case ui::TextEditCommand::MOVE_PAGE_UP_AND_MODIFY_SELECTION:
1671 case ui::TextEditCommand::MOVE_UP_AND_MODIFY_SELECTION:
1672 model_->MoveCursor(gfx::LINE_BREAK, begin, gfx::SELECTION_RETAIN);
1642 break; 1673 break;
1643 case ui::TextEditCommand::MOVE_TO_END_OF_DOCUMENT: 1674 case ui::TextEditCommand::MOVE_TO_END_OF_DOCUMENT:
1644 case ui::TextEditCommand::MOVE_TO_END_OF_LINE: 1675 case ui::TextEditCommand::MOVE_TO_END_OF_LINE:
1645 case ui::TextEditCommand::MOVE_TO_END_OF_PARAGRAPH: 1676 case ui::TextEditCommand::MOVE_TO_END_OF_PARAGRAPH:
1646 model_->MoveCursor(gfx::LINE_BREAK, end, false); 1677 case ui::TextEditCommand::MOVE_DOWN:
1678 case ui::TextEditCommand::MOVE_PAGE_DOWN:
1679 model_->MoveCursor(gfx::LINE_BREAK, end, gfx::SELECTION_NONE);
1647 break; 1680 break;
1648 case ui::TextEditCommand::MOVE_TO_END_OF_DOCUMENT_AND_MODIFY_SELECTION: 1681 case ui::TextEditCommand::MOVE_TO_END_OF_DOCUMENT_AND_MODIFY_SELECTION:
1649 case ui::TextEditCommand::MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION: 1682 case ui::TextEditCommand::MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION:
1650 case ui::TextEditCommand::MOVE_TO_END_OF_PARAGRAPH_AND_MODIFY_SELECTION: 1683 case ui::TextEditCommand::MOVE_TO_END_OF_PARAGRAPH_AND_MODIFY_SELECTION:
1651 model_->MoveCursor(gfx::LINE_BREAK, end, true); 1684 model_->MoveCursor(gfx::LINE_BREAK, end, kLineSelectionBehavior);
1685 break;
1686 case ui::TextEditCommand::MOVE_PAGE_DOWN_AND_MODIFY_SELECTION:
1687 case ui::TextEditCommand::MOVE_DOWN_AND_MODIFY_SELECTION:
1688 model_->MoveCursor(gfx::LINE_BREAK, end, gfx::SELECTION_RETAIN);
1689 break;
1690 case ui::TextEditCommand::MOVE_PARAGRAPH_BACKWARD_AND_MODIFY_SELECTION:
1691 model_->MoveCursor(gfx::LINE_BREAK, begin,
1692 kMoveParagraphSelectionBehavior);
1693 break;
1694 case ui::TextEditCommand::MOVE_PARAGRAPH_FORWARD_AND_MODIFY_SELECTION:
1695 model_->MoveCursor(gfx::LINE_BREAK, end, kMoveParagraphSelectionBehavior);
1652 break; 1696 break;
1653 case ui::TextEditCommand::MOVE_WORD_BACKWARD: 1697 case ui::TextEditCommand::MOVE_WORD_BACKWARD:
1654 model_->MoveCursor(gfx::WORD_BREAK, begin, false); 1698 model_->MoveCursor(gfx::WORD_BREAK, begin, gfx::SELECTION_NONE);
1655 break; 1699 break;
1656 case ui::TextEditCommand::MOVE_WORD_BACKWARD_AND_MODIFY_SELECTION: 1700 case ui::TextEditCommand::MOVE_WORD_BACKWARD_AND_MODIFY_SELECTION:
1657 model_->MoveCursor(gfx::WORD_BREAK, begin, true); 1701 model_->MoveCursor(gfx::WORD_BREAK, begin, kWordSelectionBehavior);
1658 break; 1702 break;
1659 case ui::TextEditCommand::MOVE_WORD_FORWARD: 1703 case ui::TextEditCommand::MOVE_WORD_FORWARD:
1660 model_->MoveCursor(gfx::WORD_BREAK, end, false); 1704 model_->MoveCursor(gfx::WORD_BREAK, end, gfx::SELECTION_NONE);
1661 break; 1705 break;
1662 case ui::TextEditCommand::MOVE_WORD_FORWARD_AND_MODIFY_SELECTION: 1706 case ui::TextEditCommand::MOVE_WORD_FORWARD_AND_MODIFY_SELECTION:
1663 model_->MoveCursor(gfx::WORD_BREAK, end, true); 1707 model_->MoveCursor(gfx::WORD_BREAK, end, kWordSelectionBehavior);
1664 break; 1708 break;
1665 case ui::TextEditCommand::MOVE_WORD_LEFT: 1709 case ui::TextEditCommand::MOVE_WORD_LEFT:
1666 model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_LEFT, false); 1710 model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_LEFT,
1711 gfx::SELECTION_NONE);
1667 break; 1712 break;
1668 case ui::TextEditCommand::MOVE_WORD_LEFT_AND_MODIFY_SELECTION: 1713 case ui::TextEditCommand::MOVE_WORD_LEFT_AND_MODIFY_SELECTION:
1669 model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_LEFT, true); 1714 model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_LEFT,
1715 kWordSelectionBehavior);
1670 break; 1716 break;
1671 case ui::TextEditCommand::MOVE_WORD_RIGHT: 1717 case ui::TextEditCommand::MOVE_WORD_RIGHT:
1672 model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_RIGHT, false); 1718 model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_RIGHT,
1719 gfx::SELECTION_NONE);
1673 break; 1720 break;
1674 case ui::TextEditCommand::MOVE_WORD_RIGHT_AND_MODIFY_SELECTION: 1721 case ui::TextEditCommand::MOVE_WORD_RIGHT_AND_MODIFY_SELECTION:
1675 model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_RIGHT, true); 1722 model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_RIGHT,
1723 kWordSelectionBehavior);
1676 break; 1724 break;
1677 case ui::TextEditCommand::UNDO: 1725 case ui::TextEditCommand::UNDO:
1678 text_changed = cursor_changed = model_->Undo(); 1726 text_changed = cursor_changed = model_->Undo();
1679 break; 1727 break;
1680 case ui::TextEditCommand::REDO: 1728 case ui::TextEditCommand::REDO:
1681 text_changed = cursor_changed = model_->Redo(); 1729 text_changed = cursor_changed = model_->Redo();
1682 break; 1730 break;
1683 case ui::TextEditCommand::CUT: 1731 case ui::TextEditCommand::CUT:
1684 text_changed = cursor_changed = Cut(); 1732 text_changed = cursor_changed = Cut();
1685 break; 1733 break;
1686 case ui::TextEditCommand::COPY: 1734 case ui::TextEditCommand::COPY:
1687 Copy(); 1735 Copy();
1688 break; 1736 break;
1689 case ui::TextEditCommand::PASTE: 1737 case ui::TextEditCommand::PASTE:
1690 text_changed = cursor_changed = Paste(); 1738 text_changed = cursor_changed = Paste();
1691 break; 1739 break;
1692 case ui::TextEditCommand::SELECT_ALL: 1740 case ui::TextEditCommand::SELECT_ALL:
1693 SelectAll(false); 1741 SelectAll(false);
1694 break; 1742 break;
1695 case ui::TextEditCommand::TRANSPOSE: 1743 case ui::TextEditCommand::TRANSPOSE:
1696 text_changed = cursor_changed = model_->Transpose(); 1744 text_changed = cursor_changed = model_->Transpose();
1697 break; 1745 break;
1698 case ui::TextEditCommand::YANK: 1746 case ui::TextEditCommand::YANK:
1699 text_changed = cursor_changed = model_->Yank(); 1747 text_changed = cursor_changed = model_->Yank();
1700 break; 1748 break;
1701 case ui::TextEditCommand::MOVE_DOWN:
1702 case ui::TextEditCommand::MOVE_DOWN_AND_MODIFY_SELECTION:
1703 case ui::TextEditCommand::MOVE_PAGE_DOWN:
1704 case ui::TextEditCommand::MOVE_PAGE_DOWN_AND_MODIFY_SELECTION:
1705 case ui::TextEditCommand::MOVE_PAGE_UP:
1706 case ui::TextEditCommand::MOVE_PAGE_UP_AND_MODIFY_SELECTION:
1707 case ui::TextEditCommand::MOVE_UP:
1708 case ui::TextEditCommand::MOVE_UP_AND_MODIFY_SELECTION:
1709 case ui::TextEditCommand::INSERT_TEXT: 1749 case ui::TextEditCommand::INSERT_TEXT:
1710 case ui::TextEditCommand::SET_MARK: 1750 case ui::TextEditCommand::SET_MARK:
1711 case ui::TextEditCommand::UNSELECT: 1751 case ui::TextEditCommand::UNSELECT:
1712 case ui::TextEditCommand::INVALID_COMMAND: 1752 case ui::TextEditCommand::INVALID_COMMAND:
1713 NOTREACHED(); 1753 NOTREACHED();
1714 break; 1754 break;
1715 } 1755 }
1716 1756
1717 cursor_changed |= GetSelectionModel() != selection_model; 1757 cursor_changed |= GetSelectionModel() != selection_model;
1718 if (cursor_changed) 1758 if (cursor_changed)
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
1810 if (model_->MoveCursorTo(point, select)) 1850 if (model_->MoveCursorTo(point, select))
1811 UpdateAfterChange(false, true); 1851 UpdateAfterChange(false, true);
1812 } 1852 }
1813 1853
1814 void Textfield::SelectThroughLastDragLocation() { 1854 void Textfield::SelectThroughLastDragLocation() {
1815 OnBeforeUserAction(); 1855 OnBeforeUserAction();
1816 1856
1817 const bool drags_to_end = PlatformStyle::kTextfieldDragVerticallyDragsToEnd; 1857 const bool drags_to_end = PlatformStyle::kTextfieldDragVerticallyDragsToEnd;
1818 if (drags_to_end && last_drag_location_.y() < 0) { 1858 if (drags_to_end && last_drag_location_.y() < 0) {
1819 model_->MoveCursor(gfx::BreakType::LINE_BREAK, 1859 model_->MoveCursor(gfx::BreakType::LINE_BREAK,
1820 gfx::VisualCursorDirection::CURSOR_LEFT, true); 1860 gfx::VisualCursorDirection::CURSOR_LEFT,
1861 gfx::SELECTION_RETAIN);
1821 } else if (drags_to_end && last_drag_location_.y() > height()) { 1862 } else if (drags_to_end && last_drag_location_.y() > height()) {
1822 model_->MoveCursor(gfx::BreakType::LINE_BREAK, 1863 model_->MoveCursor(gfx::BreakType::LINE_BREAK,
1823 gfx::VisualCursorDirection::CURSOR_RIGHT, true); 1864 gfx::VisualCursorDirection::CURSOR_RIGHT,
1865 gfx::SELECTION_RETAIN);
1824 } else { 1866 } else {
1825 model_->MoveCursorTo(last_drag_location_, true); 1867 model_->MoveCursorTo(last_drag_location_, true);
1826 } 1868 }
1827 1869
1828 if (aggregated_clicks_ == 1) { 1870 if (aggregated_clicks_ == 1) {
1829 model_->SelectWord(); 1871 model_->SelectWord();
1830 // Expand the selection so the initially selected word remains selected. 1872 // Expand the selection so the initially selected word remains selected.
1831 gfx::Range selection = GetRenderText()->selection(); 1873 gfx::Range selection = GetRenderText()->selection();
1832 const size_t min = std::min(selection.GetMin(), 1874 const size_t min = std::min(selection.GetMin(),
1833 double_click_word_.GetMin()); 1875 double_click_word_.GetMin());
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
1983 RequestFocus(); 2025 RequestFocus();
1984 model_->MoveCursorTo(mouse); 2026 model_->MoveCursorTo(mouse);
1985 if (!selection_clipboard_text.empty()) { 2027 if (!selection_clipboard_text.empty()) {
1986 model_->InsertText(selection_clipboard_text); 2028 model_->InsertText(selection_clipboard_text);
1987 UpdateAfterChange(true, true); 2029 UpdateAfterChange(true, true);
1988 } 2030 }
1989 OnAfterUserAction(); 2031 OnAfterUserAction();
1990 } 2032 }
1991 2033
1992 } // namespace views 2034 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/cocoa/bridged_native_widget_unittest.mm ('k') | ui/views/controls/textfield/textfield_model.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698