1 /* vim: se cin sw=2 ts=2 et : */
2 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
4 * This Source Code Form is subject to the terms of the Mozilla Public
5 * License, v. 2.0. If a copy of the MPL was not distributed with this
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
11 #include "TaskbarWindowPreview.h"
12 #include "TaskbarPreviewButton.h"
13 #include "nsWindowGfx.h"
14 #include <imgIContainer.h>
19 NS_IMPL_ISUPPORTS(TaskbarPreviewButton
, nsITaskbarPreviewButton
,
20 nsISupportsWeakReference
)
22 TaskbarPreviewButton::TaskbarPreviewButton(TaskbarWindowPreview
* preview
,
24 : mPreview(preview
), mIndex(index
) {}
26 TaskbarPreviewButton::~TaskbarPreviewButton() { SetVisible(false); }
29 TaskbarPreviewButton::GetTooltip(nsAString
& aTooltip
) {
35 TaskbarPreviewButton::SetTooltip(const nsAString
& aTooltip
) {
37 size_t destLength
= sizeof Button().szTip
/ (sizeof Button().szTip
[0]);
38 wchar_t* tooltip
= &(Button().szTip
[0]);
39 StringCchCopyNW(tooltip
, destLength
, mTooltip
.get(), mTooltip
.Length());
44 TaskbarPreviewButton::GetDismissOnClick(bool* dismiss
) {
45 *dismiss
= (Button().dwFlags
& THBF_DISMISSONCLICK
) == THBF_DISMISSONCLICK
;
50 TaskbarPreviewButton::SetDismissOnClick(bool dismiss
) {
52 Button().dwFlags
|= THBF_DISMISSONCLICK
;
54 Button().dwFlags
&= ~THBF_DISMISSONCLICK
;
59 TaskbarPreviewButton::GetHasBorder(bool* hasBorder
) {
60 *hasBorder
= (Button().dwFlags
& THBF_NOBACKGROUND
) != THBF_NOBACKGROUND
;
65 TaskbarPreviewButton::SetHasBorder(bool hasBorder
) {
67 Button().dwFlags
&= ~THBF_NOBACKGROUND
;
69 Button().dwFlags
|= THBF_NOBACKGROUND
;
74 TaskbarPreviewButton::GetDisabled(bool* disabled
) {
75 *disabled
= (Button().dwFlags
& THBF_DISABLED
) == THBF_DISABLED
;
80 TaskbarPreviewButton::SetDisabled(bool disabled
) {
82 Button().dwFlags
|= THBF_DISABLED
;
84 Button().dwFlags
&= ~THBF_DISABLED
;
89 TaskbarPreviewButton::GetImage(imgIContainer
** img
) {
91 NS_ADDREF(*img
= mImage
);
98 TaskbarPreviewButton::SetImage(imgIContainer
* img
) {
99 if (Button().hIcon
) ::DestroyIcon(Button().hIcon
);
102 rv
= nsWindowGfx::CreateIcon(
103 img
, nullptr, false, LayoutDeviceIntPoint(),
104 nsWindowGfx::GetIconMetrics(nsWindowGfx::kRegularIcon
),
106 NS_ENSURE_SUCCESS(rv
, rv
);
108 Button().hIcon
= nullptr;
114 TaskbarPreviewButton::GetVisible(bool* visible
) {
115 *visible
= (Button().dwFlags
& THBF_HIDDEN
) != THBF_HIDDEN
;
120 TaskbarPreviewButton::SetVisible(bool visible
) {
122 Button().dwFlags
&= ~THBF_HIDDEN
;
124 Button().dwFlags
|= THBF_HIDDEN
;
128 THUMBBUTTON
& TaskbarPreviewButton::Button() {
129 return mPreview
->mThumbButtons
[mIndex
];
132 nsresult
TaskbarPreviewButton::Update() {
133 return mPreview
->UpdateButton(mIndex
);
136 } // namespace widget
137 } // namespace mozilla