| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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.h" | 5 #include "chrome/browser/autocomplete/autocomplete_edit.h" |
| 6 | 6 |
| 7 #include <locale> | 7 #include <locale> |
| 8 | 8 |
| 9 #include "base/base_drag_source.h" | 9 #include "base/base_drag_source.h" |
| 10 #include "base/clipboard.h" | 10 #include "base/clipboard.h" |
| 11 #include "base/gfx/skia_utils.h" | 11 #include "base/gfx/skia_utils.h" |
| 12 #include "base/iat_patch.h" | 12 #include "base/iat_patch.h" |
| 13 #include "base/ref_counted.h" | 13 #include "base/ref_counted.h" |
| 14 #include "base/scoped_clipboard_writer.h" |
| 14 #include "base/string_util.h" | 15 #include "base/string_util.h" |
| 15 #include "chrome/app/chrome_dll_resource.h" | 16 #include "chrome/app/chrome_dll_resource.h" |
| 16 #include "chrome/browser/autocomplete/autocomplete_popup.h" | 17 #include "chrome/browser/autocomplete/autocomplete_popup.h" |
| 17 #include "chrome/browser/autocomplete/edit_drop_target.h" | 18 #include "chrome/browser/autocomplete/edit_drop_target.h" |
| 18 #include "chrome/browser/autocomplete/keyword_provider.h" | 19 #include "chrome/browser/autocomplete/keyword_provider.h" |
| 19 #include "chrome/browser/browser_process.h" | 20 #include "chrome/browser/browser_process.h" |
| 20 #include "chrome/browser/controller.h" | 21 #include "chrome/browser/controller.h" |
| 21 #include "chrome/browser/drag_utils.h" | 22 #include "chrome/browser/drag_utils.h" |
| 22 #include "chrome/browser/profile.h" | 23 #include "chrome/browser/profile.h" |
| 23 #include "chrome/browser/tab_contents.h" | 24 #include "chrome/browser/tab_contents.h" |
| (...skipping 1354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1378 } else { | 1379 } else { |
| 1379 context_menu_->RunMenuAt(point.x, point.y); | 1380 context_menu_->RunMenuAt(point.x, point.y); |
| 1380 } | 1381 } |
| 1381 } | 1382 } |
| 1382 | 1383 |
| 1383 void AutocompleteEditView::OnCopy() { | 1384 void AutocompleteEditView::OnCopy() { |
| 1384 const std::wstring text(GetSelectedText()); | 1385 const std::wstring text(GetSelectedText()); |
| 1385 if (text.empty()) | 1386 if (text.empty()) |
| 1386 return; | 1387 return; |
| 1387 | 1388 |
| 1388 ClipboardService* clipboard = g_browser_process->clipboard_service(); | 1389 ScopedClipboardWriter scw(g_browser_process->clipboard_service()); |
| 1389 clipboard->Clear(); | 1390 scw.WriteText(text); |
| 1390 clipboard->WriteText(text); | |
| 1391 | 1391 |
| 1392 // Check if the user is copying the whole address bar. If they are, we | 1392 // Check if the user is copying the whole address bar. If they are, we |
| 1393 // assume they are trying to copy a URL and write this to the clipboard as a | 1393 // assume they are trying to copy a URL and write this to the clipboard as a |
| 1394 // hyperlink. | 1394 // hyperlink. |
| 1395 if (static_cast<int>(text.length()) < GetTextLength()) | 1395 if (static_cast<int>(text.length()) < GetTextLength()) |
| 1396 return; | 1396 return; |
| 1397 | 1397 |
| 1398 // The entire control is selected. Let's see what the user typed. We can't | 1398 // The entire control is selected. Let's see what the user typed. We can't |
| 1399 // use model_->CurrentTextIsURL() or model_->GetDataForURLExport() because | 1399 // use model_->CurrentTextIsURL() or model_->GetDataForURLExport() because |
| 1400 // right now the user is probably holding down control to cause the copy, | 1400 // right now the user is probably holding down control to cause the copy, |
| 1401 // which will screw up our calculation of the desired_tld. | 1401 // which will screw up our calculation of the desired_tld. |
| 1402 GURL url; | 1402 GURL url; |
| 1403 if (model_->GetURLForText(text, &url)) | 1403 if (model_->GetURLForText(text, &url)) |
| 1404 clipboard->WriteHyperlink(text, url.spec()); | 1404 scw.WriteHyperlink(text, url.spec()); |
| 1405 } | 1405 } |
| 1406 | 1406 |
| 1407 void AutocompleteEditView::OnCut() { | 1407 void AutocompleteEditView::OnCut() { |
| 1408 OnCopy(); | 1408 OnCopy(); |
| 1409 | 1409 |
| 1410 // This replace selection will have no effect (even on the undo stack) if the | 1410 // This replace selection will have no effect (even on the undo stack) if the |
| 1411 // current selection is empty. | 1411 // current selection is empty. |
| 1412 ReplaceSel(L"", true); | 1412 ReplaceSel(L"", true); |
| 1413 } | 1413 } |
| 1414 | 1414 |
| (...skipping 997 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2412 } | 2412 } |
| 2413 | 2413 |
| 2414 void AutocompleteEditView::RepaintDropHighlight(int position) { | 2414 void AutocompleteEditView::RepaintDropHighlight(int position) { |
| 2415 if ((position != -1) && (position <= GetTextLength())) { | 2415 if ((position != -1) && (position <= GetTextLength())) { |
| 2416 const POINT min_loc(PosFromChar(position)); | 2416 const POINT min_loc(PosFromChar(position)); |
| 2417 const RECT highlight_bounds = {min_loc.x - 1, font_y_adjustment_, | 2417 const RECT highlight_bounds = {min_loc.x - 1, font_y_adjustment_, |
| 2418 min_loc.x + 2, font_ascent_ + font_descent_ + font_y_adjustment_}; | 2418 min_loc.x + 2, font_ascent_ + font_descent_ + font_y_adjustment_}; |
| 2419 InvalidateRect(&highlight_bounds, false); | 2419 InvalidateRect(&highlight_bounds, false); |
| 2420 } | 2420 } |
| 2421 } | 2421 } |
| OLD | NEW |