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

Side by Side Diff: ui/native_theme/native_theme_win.cc

Issue 1482863002: Add support for drawing window caption buttons on windows. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased Created 4 years, 8 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
« no previous file with comments | « ui/native_theme/native_theme_win.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/native_theme/native_theme_win.h" 5 #include "ui/native_theme/native_theme_win.h"
6 6
7 #include <windows.h> 7 #include <windows.h>
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <uxtheme.h> 9 #include <uxtheme.h>
10 #include <vsstyle.h> 10 #include <vsstyle.h>
(...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 case kTextField: 457 case kTextField:
458 PaintTextField(hdc, part, state, rect, extra.text_field); 458 PaintTextField(hdc, part, state, rect, extra.text_field);
459 return; 459 return;
460 case kTrackbarThumb: 460 case kTrackbarThumb:
461 case kTrackbarTrack: 461 case kTrackbarTrack:
462 PaintTrackbar(canvas, hdc, part, state, rect, extra.trackbar); 462 PaintTrackbar(canvas, hdc, part, state, rect, extra.trackbar);
463 return; 463 return;
464 case kWindowResizeGripper: 464 case kWindowResizeGripper:
465 PaintWindowResizeGripper(hdc, rect); 465 PaintWindowResizeGripper(hdc, rect);
466 return; 466 return;
467 case kCaptionMin:
468 case kCaptionMax:
469 case kCaptionRestore:
470 case kCaptionClose:
471 PaintCaptionButton(hdc, part, state, rect, extra);
472 return;
467 case kComboboxArrow: 473 case kComboboxArrow:
468 case kSliderTrack: 474 case kSliderTrack:
469 case kSliderThumb: 475 case kSliderThumb:
470 case kMaxPart: 476 case kMaxPart:
471 NOTREACHED(); 477 NOTREACHED();
472 } 478 }
473 } 479 }
474 480
475 SkColor NativeThemeWin::GetSystemColor(ColorId color_id) const { 481 SkColor NativeThemeWin::GetSystemColor(ColorId color_id) const {
476 // TODO: Obtain the correct colors using GetSysColor. 482 // TODO: Obtain the correct colors using GetSysColor.
(...skipping 1079 matching lines...) Expand 10 before | Expand all | Expand 10 after
1556 HANDLE handle = GetThemeHandle(TAB); 1562 HANDLE handle = GetThemeHandle(TAB);
1557 RECT rect_win = rect.ToRECT(); 1563 RECT rect_win = rect.ToRECT();
1558 if (handle && draw_theme_) 1564 if (handle && draw_theme_)
1559 return draw_theme_(handle, hdc, TABP_BODY, 0, &rect_win, NULL); 1565 return draw_theme_(handle, hdc, TABP_BODY, 0, &rect_win, NULL);
1560 1566
1561 // Classic just renders a flat color background. 1567 // Classic just renders a flat color background.
1562 FillRect(hdc, &rect_win, reinterpret_cast<HBRUSH>(COLOR_3DFACE + 1)); 1568 FillRect(hdc, &rect_win, reinterpret_cast<HBRUSH>(COLOR_3DFACE + 1));
1563 return S_OK; 1569 return S_OK;
1564 } 1570 }
1565 1571
1572 HRESULT NativeThemeWin::PaintCaptionButton(HDC hdc,
1573 Part part,
1574 State state,
1575 const gfx::Rect&rect,
1576 const ExtraParams& extra) const {
1577 HANDLE handle = GetThemeHandle(WINDOW);
1578 RECT rect_win = rect.ToRECT();
1579 if (handle && draw_theme_) {
1580 int part_id = GetWindowsPart(part, state, extra);
1581 int state_id = GetWindowsState(part, state, extra);
1582 return draw_theme_(handle, hdc, part_id, state_id, &rect_win, NULL);
1583 }
1584
1585 // Adjust classic_state based on part, state, and extras.
1586 int classic_state = 0;
1587 switch (part) {
1588 case kCaptionMin:
1589 classic_state |= DFCS_CAPTIONMIN;
1590 break;
1591 case kCaptionMax:
1592 classic_state |= DFCS_CAPTIONMAX;
1593 break;
1594 case kCaptionRestore:
1595 classic_state |= DFCS_CAPTIONRESTORE;
1596 break;
1597 case kCaptionClose:
1598 classic_state |= DFCS_CAPTIONCLOSE;
1599 break;
1600 default:
1601 NOTREACHED();
1602 break;
1603 }
1604
1605 switch (state) {
1606 case kDisabled:
1607 classic_state |= DFCS_INACTIVE;
1608 break;
1609 case kHovered:
1610 classic_state |= DFCS_HOT;
1611 break;
1612 case kNormal:
1613 break;
1614 case kPressed:
1615 classic_state |= DFCS_PUSHED;
1616 break;
1617 case kNumStates:
1618 NOTREACHED();
1619 break;
1620 }
1621
1622 DrawFrameControl(hdc, &rect_win, DFC_CAPTION, classic_state);
1623 return S_OK;
1624 }
1625
1566 HRESULT NativeThemeWin::PaintTextField( 1626 HRESULT NativeThemeWin::PaintTextField(
1567 HDC hdc, 1627 HDC hdc,
1568 Part part, 1628 Part part,
1569 State state, 1629 State state,
1570 const gfx::Rect& rect, 1630 const gfx::Rect& rect,
1571 const TextFieldExtraParams& extra) const { 1631 const TextFieldExtraParams& extra) const {
1572 int state_id = ETS_NORMAL; 1632 int state_id = ETS_NORMAL;
1573 switch (state) { 1633 switch (state) {
1574 case kDisabled: 1634 case kDisabled:
1575 state_id = ETS_DISABLED; 1635 state_id = ETS_DISABLED;
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
1747 case kScrollbarLeftArrow: 1807 case kScrollbarLeftArrow:
1748 case kScrollbarRightArrow: 1808 case kScrollbarRightArrow:
1749 case kScrollbarUpArrow: 1809 case kScrollbarUpArrow:
1750 return SBP_ARROWBTN; 1810 return SBP_ARROWBTN;
1751 case kScrollbarHorizontalThumb: 1811 case kScrollbarHorizontalThumb:
1752 return SBP_THUMBBTNHORZ; 1812 return SBP_THUMBBTNHORZ;
1753 case kScrollbarVerticalThumb: 1813 case kScrollbarVerticalThumb:
1754 return SBP_THUMBBTNVERT; 1814 return SBP_THUMBBTNVERT;
1755 case kWindowResizeGripper: 1815 case kWindowResizeGripper:
1756 return SP_GRIPPER; 1816 return SP_GRIPPER;
1817 case kCaptionMin:
1818 return WP_MINBUTTON;
1819 case kCaptionMax:
1820 return WP_MAXBUTTON;
1821 case kCaptionRestore:
1822 return WP_RESTOREBUTTON;
1823 case kCaptionClose:
1824 return WP_CLOSEBUTTON;
1757 case kComboboxArrow: 1825 case kComboboxArrow:
1758 case kInnerSpinButton: 1826 case kInnerSpinButton:
1759 case kMenuList: 1827 case kMenuList:
1760 case kMenuCheckBackground: 1828 case kMenuCheckBackground:
1761 case kMenuPopupBackground: 1829 case kMenuPopupBackground:
1762 case kMenuItemBackground: 1830 case kMenuItemBackground:
1763 case kProgressBar: 1831 case kProgressBar:
1764 case kScrollbarHorizontalTrack: 1832 case kScrollbarHorizontalTrack:
1765 case kScrollbarVerticalTrack: 1833 case kScrollbarVerticalTrack:
1766 case kScrollbarHorizontalGripper: 1834 case kScrollbarHorizontalGripper:
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
1941 switch (state) { 2009 switch (state) {
1942 case kDisabled: 2010 case kDisabled:
1943 case kHovered: 2011 case kHovered:
1944 case kNormal: 2012 case kNormal:
1945 case kPressed: 2013 case kPressed:
1946 return 1; // gripper has no windows state 2014 return 1; // gripper has no windows state
1947 case kNumStates: 2015 case kNumStates:
1948 NOTREACHED(); 2016 NOTREACHED();
1949 return 0; 2017 return 0;
1950 } 2018 }
2019 case kCaptionMin:
2020 switch (state) {
2021 case kDisabled:
2022 return MINBS_DISABLED;
2023 case kHovered:
2024 return MINBS_HOT;
2025 case kNormal:
2026 return MINBS_NORMAL;
2027 case kPressed:
2028 return MINBS_PUSHED;
2029 case kNumStates:
2030 NOTREACHED();
2031 return 0;
2032 }
2033 case kCaptionMax:
2034 switch (state) {
2035 case kDisabled:
2036 return MAXBS_DISABLED;
2037 case kHovered:
2038 return MAXBS_HOT;
2039 case kNormal:
2040 return MAXBS_NORMAL;
2041 case kPressed:
2042 return MAXBS_PUSHED;
2043 case kNumStates:
2044 NOTREACHED();
2045 return 0;
2046 }
2047 case kCaptionRestore:
2048 switch (state) {
2049 case kDisabled:
2050 return RBS_DISABLED;
2051 case kHovered:
2052 return RBS_HOT;
2053 case kNormal:
2054 return RBS_NORMAL;
2055 case kPressed:
2056 return RBS_PUSHED;
2057 case kNumStates:
2058 NOTREACHED();
2059 return 0;
2060 }
2061 case kCaptionClose:
2062 switch (state) {
2063 case kDisabled:
2064 return CBS_DISABLED;
2065 case kHovered:
2066 return CBS_HOT;
2067 case kNormal:
2068 return CBS_NORMAL;
2069 case kPressed:
2070 return CBS_PUSHED;
2071 case kNumStates:
2072 NOTREACHED();
2073 return 0;
2074 }
1951 case kComboboxArrow: 2075 case kComboboxArrow:
1952 case kInnerSpinButton: 2076 case kInnerSpinButton:
1953 case kMenuList: 2077 case kMenuList:
1954 case kMenuCheckBackground: 2078 case kMenuCheckBackground:
1955 case kMenuPopupBackground: 2079 case kMenuPopupBackground:
1956 case kMenuItemBackground: 2080 case kMenuItemBackground:
1957 case kProgressBar: 2081 case kProgressBar:
1958 case kScrollbarHorizontalTrack: 2082 case kScrollbarHorizontalTrack:
1959 case kScrollbarVerticalTrack: 2083 case kScrollbarVerticalTrack:
1960 case kScrollbarHorizontalGripper: 2084 case kScrollbarHorizontalGripper:
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
2083 break; 2207 break;
2084 case LAST: 2208 case LAST:
2085 NOTREACHED(); 2209 NOTREACHED();
2086 break; 2210 break;
2087 } 2211 }
2088 theme_handles_[theme_name] = handle; 2212 theme_handles_[theme_name] = handle;
2089 return handle; 2213 return handle;
2090 } 2214 }
2091 2215
2092 } // namespace ui 2216 } // namespace ui
OLDNEW
« no previous file with comments | « ui/native_theme/native_theme_win.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698