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

Side by Side Diff: webkit/port/platform/chromium/PopupMenuChromium.cpp

Issue 7419: Move many files that were suffixed Win.cpp to Chromium.cpp, and place them in... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 12 years, 2 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 | Annotate | Revision Log
Property Changes:
Added: svn:mergeinfo
Merged /branches/chrome_webkit_merge_branch/webkit/port/platform/PopupMenuWin.cpp:r69-2775
OLDNEW
1 // Copyright (c) 2008, Google Inc. 1 // Copyright (c) 2008, Google Inc.
2 // All rights reserved. 2 // 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 15 matching lines...) Expand all
26 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 29
30 #include "config.h" 30 #include "config.h"
31 31
32 #pragma warning(push, 0) 32 #pragma warning(push, 0)
33 #include "PopupMenu.h" 33 #include "PopupMenu.h"
34 34
35 #include "CharacterNames.h" 35 #include "CharacterNames.h"
36 #include "ChromeClientWin.h" 36 #include "ChromeClientChromium.h"
37 #include "Document.h" 37 #include "Document.h"
38 #include "Font.h" 38 #include "Font.h"
39 #include "Frame.h" 39 #include "Frame.h"
40 #include "FontSelector.h" 40 #include "FontSelector.h"
41 #include "FramelessScrollView.h" 41 #include "FramelessScrollView.h"
42 #include "GraphicsContext.h" 42 #include "GraphicsContext.h"
43 #include "IntRect.h" 43 #include "IntRect.h"
44 #include "Page.h" 44 #include "Page.h"
45 #include "PlatformKeyboardEvent.h" 45 #include "PlatformKeyboardEvent.h"
46 #include "PlatformMouseEvent.h" 46 #include "PlatformMouseEvent.h"
47 #include "PlatformScreen.h" 47 #include "PlatformScreen.h"
48 #include "PlatformScrollbar.h" 48 #include "PlatformScrollbar.h"
49 #include "PlatformWheelEvent.h" 49 #include "PlatformWheelEvent.h"
50 #include "SystemTime.h" 50 #include "SystemTime.h"
51 #include "RenderBlock.h" 51 #include "RenderBlock.h"
52 #include "RenderTheme.h" 52 #include "RenderTheme.h"
53 #include "Widget.h" 53 #include "Widget.h"
54 #include "WidgetClientWin.h" 54 #include "WidgetClientChromium.h"
55 #pragma warning(pop) 55 #pragma warning(pop)
56 56
57 //#define LOG_ENABLE
58 #include "LogWin.h"
59
60 using namespace WTF; 57 using namespace WTF;
61 using namespace Unicode; 58 using namespace Unicode;
62 59
63 using std::min; 60 using std::min;
64 using std::max; 61 using std::max;
65 62
66 namespace WebCore { 63 namespace WebCore {
67 64
68 typedef unsigned long long TimeStamp; 65 typedef unsigned long long TimeStamp;
69 66
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 348
352 void PopupContainer::showPopup(FrameView* view) 349 void PopupContainer::showPopup(FrameView* view)
353 { 350 {
354 // Pre-layout, our size matches the <select> dropdown control. 351 // Pre-layout, our size matches the <select> dropdown control.
355 int selectHeight = frameGeometry().height(); 352 int selectHeight = frameGeometry().height();
356 353
357 // Lay everything out to figure out our preferred size, then tell the view's 354 // Lay everything out to figure out our preferred size, then tell the view's
358 // WidgetClient about it. It should assign us a client. 355 // WidgetClient about it. It should assign us a client.
359 layout(); 356 layout();
360 357
361 WidgetClientWin* widgetClient = 358 WidgetClientChromium* widgetClient = static_cast<WidgetClientChromium*>(
362 static_cast<WidgetClientWin*>(view->client()); 359 view->client());
363 ChromeClientWin* chromeClient = 360 ChromeClientChromium* chromeClient = static_cast<ChromeClientChromium*>(
364 static_cast<ChromeClientWin*>(view->frame()->page()->chrome()->client()) ; 361 view->frame()->page()->chrome()->client());
365 if (widgetClient && chromeClient) { 362 if (widgetClient && chromeClient) {
366 // If the popup would extend past the bottom of the screen, open upwards 363 // If the popup would extend past the bottom of the screen, open upwards
367 // instead. 364 // instead.
368 FloatRect screen = screenRect(view); 365 FloatRect screen = screenRect(view);
369 IntRect widgetRect = chromeClient->windowToScreen(frameGeometry()); 366 IntRect widgetRect = chromeClient->windowToScreen(frameGeometry());
370 if (widgetRect.bottom() > static_cast<int>(screen.bottom())) 367 if (widgetRect.bottom() > static_cast<int>(screen.bottom()))
371 widgetRect.move(0, -(widgetRect.height() + selectHeight)); 368 widgetRect.move(0, -(widgetRect.height() + selectHeight));
372 369
373 widgetClient->popupOpened(this, widgetRect); 370 widgetClient->popupOpened(this, widgetRect);
374 } 371 }
(...skipping 11 matching lines...) Expand all
386 } 383 }
387 384
388 void PopupContainer::hidePopup() 385 void PopupContainer::hidePopup()
389 { 386 {
390 invalidate(); 387 invalidate();
391 388
392 m_listBox->disconnectClient(); 389 m_listBox->disconnectClient();
393 removeChild(m_listBox.get()); 390 removeChild(m_listBox.get());
394 391
395 if (client()) 392 if (client())
396 static_cast<WidgetClientWin*>(client())->popupClosed(this); 393 static_cast<WidgetClientChromium*>(client())->popupClosed(this);
397 } 394 }
398 395
399 void PopupContainer::layout() 396 void PopupContainer::layout()
400 { 397 {
401 m_listBox->layout(); 398 m_listBox->layout();
402 399
403 // Place the listbox within our border. 400 // Place the listbox within our border.
404 m_listBox->move(kBorderSize, kBorderSize); 401 m_listBox->move(kBorderSize, kBorderSize);
405 402
406 // Size ourselves to contain listbox + border. 403 // Size ourselves to contain listbox + border.
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
662 659
663 void PopupListBox::paint(GraphicsContext* gc, const IntRect& rect) 660 void PopupListBox::paint(GraphicsContext* gc, const IntRect& rect)
664 { 661 {
665 // adjust coords for scrolled frame 662 // adjust coords for scrolled frame
666 IntRect r = intersection(rect, frameGeometry()); 663 IntRect r = intersection(rect, frameGeometry());
667 int tx = x() - contentsX(); 664 int tx = x() - contentsX();
668 int ty = y() - contentsY(); 665 int ty = y() - contentsY();
669 666
670 r.move(-tx, -ty); 667 r.move(-tx, -ty);
671 668
672 LOG(("PopupListBox::paint [%d,%d] [r: %d,%d,%d,%d]", tx, ty,
673 r.x(), r.y(), r.width(), r.height()));
674
675 // set clip rect to match revised damage rect 669 // set clip rect to match revised damage rect
676 gc->save(); 670 gc->save();
677 gc->translate(static_cast<float>(tx), static_cast<float>(ty)); 671 gc->translate(static_cast<float>(tx), static_cast<float>(ty));
678 gc->clip(r); 672 gc->clip(r);
679 673
680 // TODO(mpcomplete): Can we optimize scrolling to not require repainting the 674 // TODO(mpcomplete): Can we optimize scrolling to not require repainting the
681 // entire window? Should we? 675 // entire window? Should we?
682 for (int i = 0; i < numItems(); ++i) 676 for (int i = 0; i < numItems(); ++i)
683 paintRow(gc, r, i); 677 paintRow(gc, r, i);
684 678
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
719 } 713 }
720 714
721 // If we have a transparent background, make sure it has a color to blend 715 // If we have a transparent background, make sure it has a color to blend
722 // against. 716 // against.
723 if (backColor.hasAlpha()) 717 if (backColor.hasAlpha())
724 gc->fillRect(rowRect, Color::white); 718 gc->fillRect(rowRect, Color::white);
725 719
726 gc->fillRect(rowRect, backColor); 720 gc->fillRect(rowRect, backColor);
727 gc->setFillColor(textColor); 721 gc->setFillColor(textColor);
728 722
729 LOG(("paintRow %d, [%d, %d, %d, %d] %x on %x", rowIndex,
730 rowRect.x(), rowRect.y(), rowRect.width(), rowRect.height(),
731 textColor.rgb(), backColor.rgb()));
732
733 Font itemFont = getRowFont(rowIndex); 723 Font itemFont = getRowFont(rowIndex);
734 gc->setFont(itemFont); 724 gc->setFont(itemFont);
735 725
736 // Bunch of shit to deal with RTL text... 726 // Bunch of shit to deal with RTL text...
737 String itemText = m_popupClient->itemText(rowIndex); 727 String itemText = m_popupClient->itemText(rowIndex);
738 unsigned length = itemText.length(); 728 unsigned length = itemText.length();
739 const UChar* str = itemText.characters(); 729 const UChar* str = itemText.characters();
740 730
741 TextRun textRun(str, length, false, 0, 0, style->direction() == RTL, style-> unicodeBidi() == Override); 731 TextRun textRun(str, length, false, 0, 0, style->direction() == RTL, style-> unicodeBidi() == Override);
742 732
(...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after
1106 // FIXME 1096 // FIXME
1107 } 1097 }
1108 1098
1109 WebCore::IntRect PopupMenu::windowClipRect() const 1099 WebCore::IntRect PopupMenu::windowClipRect() const
1110 { 1100 {
1111 // FIXME 1101 // FIXME
1112 return WebCore::IntRect(); 1102 return WebCore::IntRect();
1113 } 1103 }
1114 1104
1115 } // namespace WebCore 1105 } // namespace WebCore
OLDNEW
« no previous file with comments | « webkit/port/platform/chromium/PlatformScrollBarChromium.cpp ('k') | webkit/port/platform/chromium/SSLKeyGeneratorChromium.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698