wine-staging/patches/winecfg-Staging/0005-winecfg-Add-option-to-enable-disable-GTK3-theming.patch
Zebediah Figura 3d74da6622 uxtheme-GTK_Theming: Rework to avoid "DLL redirects".
Instead we have an alternate code path for the appropriate API entry
points in uxtheme.dll.

This is not the best organizational structure. We should probably have
HTHEME handles resolve to an object with its own function table, so
then we have an MSSTYLES backend and a GTK backend and what have
you. It would also be better to avoid having GTK controlled with its
own registry key like this but rather to have it be selectable using
EnumThemes()/ApplyTheme() [presumably through a fake theme file, as
was used in the original implementation], so that we don't have to
have special handling for those functions and everything can just be
part of the HTHEME backend. However, time is currently of the essence,
and this will have to do for the moment.
2019-02-09 17:15:09 -06:00

97 lines
3.5 KiB
Diff

From ad78908234abc43ef56b5d005e22abde445f8760 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sun, 9 Aug 2015 18:01:11 +0200
Subject: winecfg: Add option to enable/disable GTK3 theming.
---
programs/winecfg/resource.h | 1 +
programs/winecfg/staging.c | 29 +++++++++++++++++++++++++++++
programs/winecfg/winecfg.rc | 1 +
3 files changed, 31 insertions(+)
diff --git a/programs/winecfg/resource.h b/programs/winecfg/resource.h
index f8c2fdf8..96f24290 100644
--- a/programs/winecfg/resource.h
+++ b/programs/winecfg/resource.h
@@ -218,6 +218,7 @@
#define IDC_ENABLE_VAAPI 9002
#define IDC_ENABLE_EAX 9003
#define IDC_ENABLE_HIDEWINE 9004
+#define IDC_ENABLE_GTK3 9005
/* About tab */
#define IDC_ABT_OWNER 8432
diff --git a/programs/winecfg/staging.c b/programs/winecfg/staging.c
index 2e305a2c..b573db71 100644
--- a/programs/winecfg/staging.c
+++ b/programs/winecfg/staging.c
@@ -99,6 +99,27 @@ static void hidewine_set(BOOL status)
set_reg_key(config_key, keypath(""), "HideWineExports", status ? "Y" : "N");
}
+/*
+ * GTK3
+ */
+static BOOL gtk3_get(void)
+{
+#ifdef HAVE_GTK3
+ BOOL ret;
+ char *value = get_reg_key(config_key, keypath(""), "ThemeEngine", NULL);
+ ret = (value && !strcasecmp(value, "GTK"));
+ HeapFree(GetProcessHeap(), 0, value);
+ return ret;
+#else
+ return FALSE;
+#endif
+}
+static void gtk3_set(BOOL status)
+{
+#ifdef HAVE_GTK3
+ set_reg_key(config_key, keypath(""), "ThemeEngine", status ? "GTK" : NULL);
+#endif
+}
static void load_staging_settings(HWND dialog)
{
@@ -106,10 +127,14 @@ static void load_staging_settings(HWND dialog)
CheckDlgButton(dialog, IDC_ENABLE_VAAPI, vaapi_get() ? BST_CHECKED : BST_UNCHECKED);
CheckDlgButton(dialog, IDC_ENABLE_EAX, eax_get() ? BST_CHECKED : BST_UNCHECKED);
CheckDlgButton(dialog, IDC_ENABLE_HIDEWINE, hidewine_get() ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(dialog, IDC_ENABLE_GTK3, gtk3_get() ? BST_CHECKED : BST_UNCHECKED);
#ifndef HAVE_VAAPI
disable(IDC_ENABLE_VAAPI);
#endif
+#ifndef HAVE_GTK3
+ disable(IDC_ENABLE_GTK3);
+#endif
}
INT_PTR CALLBACK StagingDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
@@ -151,6 +176,10 @@ INT_PTR CALLBACK StagingDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
hidewine_set(IsDlgButtonChecked(hDlg, IDC_ENABLE_HIDEWINE) == BST_CHECKED);
SendMessageW(GetParent(hDlg), PSM_CHANGED, 0, 0);
return TRUE;
+ case IDC_ENABLE_GTK3:
+ gtk3_set(IsDlgButtonChecked(hDlg, IDC_ENABLE_GTK3) == BST_CHECKED);
+ SendMessageW(GetParent(hDlg), PSM_CHANGED, 0, 0);
+ return TRUE;
}
break;
}
diff --git a/programs/winecfg/winecfg.rc b/programs/winecfg/winecfg.rc
index 469ae101..33f2642e 100644
--- a/programs/winecfg/winecfg.rc
+++ b/programs/winecfg/winecfg.rc
@@ -323,6 +323,7 @@ BEGIN
CONTROL "Enable &VAAPI as backend for DXVA2 GPU decoding",IDC_ENABLE_VAAPI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,55,230,8
CONTROL "Enable Environmental Audio E&xtensions (EAX)",IDC_ENABLE_EAX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,70,230,8
CONTROL "&Hide Wine version from applications",IDC_ENABLE_HIDEWINE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,85,230,8
+ CONTROL "Enable &GTK3 Theming",IDC_ENABLE_GTK3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,100,230,8
END
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
--
2.20.1