win: Add setThumbnailClip window API

This commit is contained in:
Kevin Sawicki 2016-07-14 13:27:16 -07:00
parent ba887dbde7
commit 86218fe773
4 changed files with 28 additions and 0 deletions

View file

@ -649,6 +649,12 @@ bool Window::IsWindowMessageHooked(UINT message) {
void Window::UnhookAllWindowMessages() {
messages_callback_map_.clear();
}
bool Window::SetThumbnailClip(const gfx::Rect& region) {
auto window = static_cast<NativeWindowViews*>(window_.get());
return window->taskbar_host().SetThumbnailClip(
window_->GetAcceleratedWidget(), region);
}
#endif
#if defined(TOOLKIT_VIEWS)
@ -836,6 +842,7 @@ void Window::BuildPrototype(v8::Isolate* isolate,
.SetMethod("isWindowMessageHooked", &Window::IsWindowMessageHooked)
.SetMethod("unhookWindowMessage", &Window::UnhookWindowMessage)
.SetMethod("unhookAllWindowMessages", &Window::UnhookAllWindowMessages)
.SetMethod("setThumbnailClip", &Window::SetThumbnailClip)
#endif
#if defined(TOOLKIT_VIEWS)
.SetMethod("setIcon", &Window::SetIcon)

View file

@ -179,6 +179,7 @@ class Window : public mate::TrackableObject<Window>,
bool IsWindowMessageHooked(UINT message);
void UnhookWindowMessage(UINT message);
void UnhookAllWindowMessages();
bool SetThumbnailClip(const gfx::Rect& window_region);
#endif
#if defined(TOOLKIT_VIEWS)

View file

@ -142,6 +142,22 @@ bool TaskbarHost::SetOverlayIcon(
window, icon.get(), base::UTF8ToUTF16(text).c_str()));
}
bool TaskbarHost::SetThumbnailClip(HWND window, const gfx::Rect& region) {
if (!InitializeTaskbar())
return false;
if (region.IsEmpty()) {
return SUCCEEDED(taskbar_->SetThumbnailClip(window, NULL));
} else {
RECT rect;
rect.left = region.x();
rect.right = region.right();
rect.top = region.y();
rect.bottom = region.bottom();
return SUCCEEDED(taskbar_->SetThumbnailClip(window, &rect));
}
}
bool TaskbarHost::HandleThumbarButtonEvent(int button_id) {
if (ContainsKey(callback_map_, button_id)) {
auto callback = callback_map_[button_id];

View file

@ -13,6 +13,7 @@
#include "base/callback.h"
#include "base/win/scoped_comptr.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/image/image.h"
namespace atom {
@ -40,6 +41,9 @@ class TaskbarHost {
bool SetOverlayIcon(
HWND window, const gfx::Image& overlay, const std::string& text);
// Set the region of the window to show as a thumbnail in taskbar.
bool TaskbarHost::SetThumbnailClip(HWND window, const gfx::Rect& region);
// Called by the window that there is a button in thumbar clicked.
bool HandleThumbarButtonEvent(int button_id);