| Left: | ||
| Right: |
| LEFT | RIGHT |
|---|---|
| 1 #pragma once | 1 /* |
| 2 * This file is part of Adblock Plus <https://adblockplus.org/>, | |
| 3 * Copyright (C) 2006-2015 Eyeo GmbH | |
| 4 * | |
| 5 * Adblock Plus is free software: you can redistribute it and/or modify | |
| 6 * it under the terms of the GNU General Public License version 3 as | |
| 7 * published by the Free Software Foundation. | |
| 8 * | |
| 9 * Adblock Plus is distributed in the hope that it will be useful, | |
| 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 12 * GNU General Public License for more details. | |
| 13 * | |
| 14 * You should have received a copy of the GNU General Public License | |
| 15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. | |
| 16 */ | |
| 17 | |
| 18 #ifndef NOTIFICATION_WINDOW_H | |
| 19 #define NOTIFICATION_WINDOW_H | |
| 20 | |
| 2 #include <atlbase.h> | 21 #include <atlbase.h> |
| 3 #include <atlwin.h> | 22 #include <atlwin.h> |
| 4 #include <atlctl.h> | 23 #include <atlctl.h> |
| 5 #include <atlimage.h> | 24 #include <atlimage.h> |
| 6 #include <AdblockPlus/JsValue.h> | 25 #include <AdblockPlus/JsValue.h> |
| 7 #include <AdblockPlus/Notification.h> | 26 #include <AdblockPlus/Notification.h> |
| 8 #include <functional> | 27 #include <functional> |
| 9 #include <MsHtmdid.h> | 28 #include <MsHtmdid.h> |
| 10 | 29 |
| 11 class IconStaticControl : public ATL::CWindow | 30 class IconStaticControl : public ATL::CWindow |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 77 | 96 |
| 78 operator bool() const | 97 operator bool() const |
| 79 { | 98 { |
| 80 return m_handle == nullptr; | 99 return m_handle == nullptr; |
| 81 } | 100 } |
| 82 protected: | 101 protected: |
| 83 T m_handle; | 102 T m_handle; |
| 84 private: | 103 private: |
| 85 ScopedObjectHandle(const ScopedObjectHandle&); | 104 ScopedObjectHandle(const ScopedObjectHandle&); |
| 86 ScopedObjectHandle& operator=(const ScopedObjectHandle&); | 105 ScopedObjectHandle& operator=(const ScopedObjectHandle&); |
| 87 }; | |
| 88 | |
| 89 class CFont : public ScopedObjectHandle<HFONT> | |
| 90 { | |
| 91 public: | |
| 92 explicit CFont(HFONT hFont = nullptr) : ScopedObjectHandle(hFont) | |
| 93 { | |
| 94 } | |
| 95 | |
| 96 void CreateFontIndirect(const LOGFONT* logFontArg, uint32_t dpi) | |
| 97 { | |
| 98 ATLASSERT(m_handle == nullptr); | |
| 99 LOGFONT logFont = *logFontArg; | |
| 100 logFont.lfHeight = -MulDiv(dpi, logFont.lfHeight, 72); | |
|
Oleksandr
2015/07/22 09:45:36
I really don't see us going over the max int size
sergei
2015/07/23 14:17:58
We don't need CFont I forgot to remove it, I used
| |
| 101 m_handle = ::CreateFontIndirect(&logFont); | |
| 102 } | |
| 103 }; | 106 }; |
| 104 | 107 |
| 105 class CBrush : public ScopedObjectHandle<HBRUSH> | 108 class CBrush : public ScopedObjectHandle<HBRUSH> |
| 106 { | 109 { |
| 107 public: | 110 public: |
| 108 explicit CBrush(HBRUSH brush = nullptr) : ScopedObjectHandle(brush) | 111 explicit CBrush(HBRUSH brush = nullptr) : ScopedObjectHandle(brush) |
| 109 { | 112 { |
| 110 } | 113 } |
| 111 | 114 |
| 112 void CreateSolidBrush(COLORREF crColor) | 115 void CreateSolidBrush(COLORREF crColor) |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 286 private: | 289 private: |
| 287 LRESULT OnCreate(const CREATESTRUCT* createStruct); | 290 LRESULT OnCreate(const CREATESTRUCT* createStruct); |
| 288 void OnSize(uint32_t wParam, CSize size); | 291 void OnSize(uint32_t wParam, CSize size); |
| 289 LRESULT OnClick(UINT msg, WPARAM wParam, LPARAM lParam, BOOL& handled); | 292 LRESULT OnClick(UINT msg, WPARAM wParam, LPARAM lParam, BOOL& handled); |
| 290 | 293 |
| 291 void OnFinalMessage(HWND) override; | 294 void OnFinalMessage(HWND) override; |
| 292 | 295 |
| 293 // returns {windowX, windowY} of top left corner on the monitor | 296 // returns {windowX, windowY} of top left corner on the monitor |
| 294 POINT GetWindowCoordinates(); | 297 POINT GetWindowCoordinates(); |
| 295 private: | 298 private: |
| 296 // m_content is used a holder of all children and we need it to have a border. | 299 // m_content is used as a holder of all children and we need it to have a bord er. |
|
Oleksandr
2015/07/22 09:45:36
NIT: "used AS a holder"
| |
| 297 // It seems the most correct way to have a border to set WS_POPUPWINDOW style | 300 // It seems the most correct way to have a border to set WS_POPUPWINDOW style |
| 298 // and paint the border in WM_NCPAINT but it simply does not work here. | 301 // and paint the border in WM_NCPAINT but it simply does not work here. |
| 299 NotificationWindow m_content; | 302 NotificationWindow m_content; |
| 300 std::function<void()> m_onDestroyedCallback; | 303 std::function<void()> m_onDestroyedCallback; |
| 301 }; | 304 }; |
| 305 #endif | |
| LEFT | RIGHT |