| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 1088 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1099 else | 1099 else |
| 1100 setMarkerActive(m_activeMatch.get(), false); // Active match is changing. | 1100 setMarkerActive(m_activeMatch.get(), false); // Active match is changing. |
| 1101 | 1101 |
| 1102 // Starts the search from the current selection. | 1102 // Starts the search from the current selection. |
| 1103 bool startInSelection = true; | 1103 bool startInSelection = true; |
| 1104 | 1104 |
| 1105 // If the user has selected something since the last Find operation we want | 1105 // If the user has selected something since the last Find operation we want |
| 1106 // to start from there. Otherwise, we start searching from where the last Find | 1106 // to start from there. Otherwise, we start searching from where the last Find |
| 1107 // operation left off (either a Find or a FindNext operation). | 1107 // operation left off (either a Find or a FindNext operation). |
| 1108 VisibleSelection selection(frame()->selection()->selection()); | 1108 VisibleSelection selection(frame()->selection()->selection()); |
| 1109 if (selection.isNone() && m_activeMatch) { | 1109 bool activeSelection = !selection.isNone(); |
| 1110 if (!activeSelection && m_activeMatch) { |
| 1110 selection = VisibleSelection(m_activeMatch.get()); | 1111 selection = VisibleSelection(m_activeMatch.get()); |
| 1111 frame()->selection()->setSelection(selection); | 1112 frame()->selection()->setSelection(selection); |
| 1112 } | 1113 } |
| 1113 | 1114 |
| 1114 ASSERT(frame() && frame()->view()); | 1115 ASSERT(frame() && frame()->view()); |
| 1115 bool found = frame()->findString( | 1116 bool found = frame()->findString( |
| 1116 searchText, options.forward, options.matchCase, wrapWithinFrame, | 1117 searchText, options.forward, options.matchCase, wrapWithinFrame, |
| 1117 startInSelection); | 1118 startInSelection); |
| 1118 if (found) { | 1119 if (found) { |
| 1119 // Store which frame was active. This will come in handy later when we | 1120 // Store which frame was active. This will come in handy later when we |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1134 if (newSelection.isNone() || (newSelection.start() == newSelection.end())) | 1135 if (newSelection.isNone() || (newSelection.start() == newSelection.end())) |
| 1135 m_activeMatch = 0; | 1136 m_activeMatch = 0; |
| 1136 else { | 1137 else { |
| 1137 m_activeMatch = newSelection.toNormalizedRange(); | 1138 m_activeMatch = newSelection.toNormalizedRange(); |
| 1138 currSelectionRect = m_activeMatch->boundingBox(); | 1139 currSelectionRect = m_activeMatch->boundingBox(); |
| 1139 setMarkerActive(m_activeMatch.get(), true); // Active. | 1140 setMarkerActive(m_activeMatch.get(), true); // Active. |
| 1140 // WebKit draws the highlighting for all matches. | 1141 // WebKit draws the highlighting for all matches. |
| 1141 executeCommand(WebString::fromUTF8("Unselect")); | 1142 executeCommand(WebString::fromUTF8("Unselect")); |
| 1142 } | 1143 } |
| 1143 | 1144 |
| 1144 if (!options.findNext) { | 1145 if (!options.findNext || activeSelection) { |
| 1145 // This is a Find operation, so we set the flag to ask the scoping effort | 1146 // This is either a Find operation or a Find-next from a new start point |
| 1147 // due to a selection, so we set the flag to ask the scoping effort |
| 1146 // to find the active rect for us so we can update the ordinal (n of m). | 1148 // to find the active rect for us so we can update the ordinal (n of m). |
| 1147 m_locatingActiveRect = true; | 1149 m_locatingActiveRect = true; |
| 1148 } else { | 1150 } else { |
| 1149 if (oldActiveFrame != this) { | 1151 if (oldActiveFrame != this) { |
| 1150 // If the active frame has changed it means that we have a multi-frame | 1152 // If the active frame has changed it means that we have a multi-frame |
| 1151 // page and we just switch to searching in a new frame. Then we just | 1153 // page and we just switch to searching in a new frame. Then we just |
| 1152 // want to reset the index. | 1154 // want to reset the index. |
| 1153 if (options.forward) | 1155 if (options.forward) |
| 1154 m_activeMatchIndex = 0; | 1156 m_activeMatchIndex = 0; |
| 1155 else | 1157 else |
| (...skipping 725 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1881 | 1883 |
| 1882 if (!m_frame->redirectScheduler()->locationChangePending()) { | 1884 if (!m_frame->redirectScheduler()->locationChangePending()) { |
| 1883 m_frame->loader()->stopAllLoaders(); | 1885 m_frame->loader()->stopAllLoaders(); |
| 1884 m_frame->loader()->begin(m_frame->loader()->url(), true, securityOrigin); | 1886 m_frame->loader()->begin(m_frame->loader()->url(), true, securityOrigin); |
| 1885 m_frame->loader()->write(scriptResult); | 1887 m_frame->loader()->write(scriptResult); |
| 1886 m_frame->loader()->end(); | 1888 m_frame->loader()->end(); |
| 1887 } | 1889 } |
| 1888 } | 1890 } |
| 1889 | 1891 |
| 1890 } // namespace WebKit | 1892 } // namespace WebKit |
| OLD | NEW |