Zhiyi Zhang : comctl32/taskdialog: Add support for footer text.
Alexandre Julliard
julliard at winehq.org
Thu Jul 19 16:47:58 CDT 2018
Module: wine
Branch: master
Commit: 3fcfb9c5cc15c9a3a94c328075fea81545631ce1
URL: https://source.winehq.org/git/wine.git/?a=commit;h=3fcfb9c5cc15c9a3a94c328075fea81545631ce1
Author: Zhiyi Zhang <zzhang at codeweavers.com>
Date: Thu Jul 19 11:04:44 2018 +0800
comctl32/taskdialog: Add support for footer text.
Signed-off-by: Zhiyi Zhang <zzhang at codeweavers.com>
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/comctl32/taskdialog.c | 22 ++++++++++++++++++++--
1 file changed, 20 insertions(+), 2 deletions(-)
diff --git a/dlls/comctl32/taskdialog.c b/dlls/comctl32/taskdialog.c
index 3508dbc..457a5ff 100644
--- a/dlls/comctl32/taskdialog.c
+++ b/dlls/comctl32/taskdialog.c
@@ -68,6 +68,7 @@ struct taskdialog_info
HWND expando_button;
HWND verification_box;
HWND footer_icon;
+ HWND footer_text;
HWND *buttons;
INT button_count;
HWND default_button;
@@ -737,6 +738,12 @@ static void taskdialog_add_footer_icon(struct taskdialog_info *dialog_info)
taskdialog_set_icon(dialog_info, TDIE_ICON_FOOTER, dialog_info->taskconfig->u2.hFooterIcon);
}
+static void taskdialog_add_footer_text(struct taskdialog_info *dialog_info)
+{
+ dialog_info->footer_text = taskdialog_create_label(dialog_info, dialog_info->taskconfig->pszFooter,
+ dialog_info->font, taskdialog_hyperlink_enabled(dialog_info));
+}
+
static void taskdialog_label_layout(struct taskdialog_info *dialog_info, HWND hwnd, INT start_x, LONG dialog_width,
LONG *dialog_height, BOOL syslink)
{
@@ -766,6 +773,7 @@ static void taskdialog_layout(struct taskdialog_info *dialog_info)
struct button_layout_info *button_layout_infos;
LONG button_min_width, button_height;
LONG *line_widths, line_count, align;
+ LONG footer_icon_right, footer_icon_bottom;
LONG x, y;
SIZE size;
INT i;
@@ -952,6 +960,8 @@ static void taskdialog_layout(struct taskdialog_info *dialog_info)
Free(line_widths);
/* Footer icon */
+ footer_icon_right = 0;
+ footer_icon_bottom = dialog_height;
if (dialog_info->footer_icon)
{
x = h_spacing;
@@ -959,9 +969,15 @@ static void taskdialog_layout(struct taskdialog_info *dialog_info)
size.cx = GetSystemMetrics(SM_CXSMICON);
size.cy = GetSystemMetrics(SM_CYSMICON);
SetWindowPos(dialog_info->footer_icon, 0, x, y, size.cx, size.cy, SWP_NOZORDER);
- dialog_height = y + size.cy;
+ footer_icon_right = x + size.cx;
+ footer_icon_bottom = y + size.cy;
}
+ /* Footer text */
+ taskdialog_label_layout(dialog_info, dialog_info->footer_text, footer_icon_right, dialog_width, &dialog_height,
+ syslink);
+ dialog_height = max(dialog_height, footer_icon_bottom);
+
/* Expanded information */
if ((taskconfig->dwFlags & TDF_EXPAND_FOOTER_AREA) && dialog_info->expanded)
taskdialog_label_layout(dialog_info, dialog_info->expanded_info, 0, dialog_width, &dialog_height, syslink);
@@ -1058,6 +1074,7 @@ static void taskdialog_init(struct taskdialog_info *dialog_info, HWND hwnd)
taskdialog_add_verification_box(dialog_info);
taskdialog_add_buttons(dialog_info);
taskdialog_add_footer_icon(dialog_info);
+ taskdialog_add_footer_text(dialog_info);
/* Set default button */
if (!dialog_info->default_button && dialog_info->command_links)
@@ -1184,7 +1201,8 @@ static INT_PTR CALLBACK taskdialog_proc(HWND hwnd, UINT msg, WPARAM wParam, LPAR
PNMLINK pnmLink = (PNMLINK)lParam;
HWND hwndFrom = pnmLink->hdr.hwndFrom;
if ((taskdialog_hyperlink_enabled(dialog_info))
- && (hwndFrom == dialog_info->content || hwndFrom == dialog_info->expanded_info)
+ && (hwndFrom == dialog_info->content || hwndFrom == dialog_info->expanded_info
+ || hwndFrom == dialog_info->footer_text)
&& (pnmLink->hdr.code == NM_CLICK || pnmLink->hdr.code == NM_RETURN))
{
taskdialog_notify(dialog_info, TDN_HYPERLINK_CLICKED, 0, (LPARAM)pnmLink->item.szUrl);
More information about the wine-cvs
mailing list