[PATCH] programs: Allow to disable MIME-type associations.
Dmitry Timoshkov
dmitry at baikal.ru
Wed Jul 25 02:22:57 CDT 2018
This patch should at least mitigate the state of the bug 19182.
Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
---
programs/winecfg/resource.h | 1 +
programs/winecfg/theme.c | 30 ++++++++++++++--
programs/winecfg/winecfg.rc | 40 ++++++++++++----------
programs/winemenubuilder/winemenubuilder.c | 23 ++++++++++++-
4 files changed, 73 insertions(+), 21 deletions(-)
diff --git a/programs/winecfg/resource.h b/programs/winecfg/resource.h
index 0c0b038ff9..2760e92c00 100644
--- a/programs/winecfg/resource.h
+++ b/programs/winecfg/resource.h
@@ -176,6 +176,7 @@
#define IDC_SYSPARAM_COLOR_TEXT 1415
#define IDC_SYSPARAM_COLOR 1416
#define IDC_SYSPARAM_FONT 1417
+#define IDC_ENABLE_FILE_ASSOCIATIONS 1418
#define IDC_SYSPARAMS_BUTTON 8400
#define IDC_SYSPARAMS_BUTTON_TEXT 8401
diff --git a/programs/winecfg/theme.c b/programs/winecfg/theme.c
index f98dcc3ae7..863bc6bb93 100644
--- a/programs/winecfg/theme.c
+++ b/programs/winecfg/theme.c
@@ -1168,6 +1168,26 @@ static void on_select_font(HWND hDlg)
SendMessageW(GetParent(hDlg), PSM_CHANGED, 0, 0);
}
+static void init_mime_types(HWND hDlg)
+{
+ char *buf = get_reg_key(config_key, keypath("MIME-types"), "EnableFileAssociations", "Y");
+ int state = IS_OPTION_TRUE(*buf) ? BST_CHECKED : BST_UNCHECKED;
+
+ CheckDlgButton(hDlg, IDC_ENABLE_FILE_ASSOCIATIONS, state);
+
+ HeapFree(GetProcessHeap(), 0, buf);
+}
+
+static void update_mime_types(HWND hDlg)
+{
+ const char *state = "Y";
+
+ if (IsDlgButtonChecked(hDlg, IDC_ENABLE_FILE_ASSOCIATIONS) != BST_CHECKED)
+ state = "N";
+
+ set_reg_key(config_key, keypath("MIME-types"), "EnableFileAssociations", state);
+}
+
INT_PTR CALLBACK
ThemeDlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
@@ -1177,8 +1197,9 @@ ThemeDlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
init_shell_folder_listview_headers(hDlg);
update_shell_folder_listview(hDlg);
read_sysparams(hDlg);
+ init_mime_types(hDlg);
break;
-
+
case WM_DESTROY:
free_theme_files();
break;
@@ -1186,7 +1207,7 @@ ThemeDlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
case WM_SHOWWINDOW:
set_window_title(hDlg);
break;
-
+
case WM_COMMAND:
switch(HIWORD(wParam)) {
case CBN_SELCHANGE: {
@@ -1296,6 +1317,10 @@ ThemeDlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
}
break;
}
+
+ case IDC_ENABLE_FILE_ASSOCIATIONS:
+ update_mime_types(hDlg);
+ break;
}
break;
}
@@ -1314,6 +1339,7 @@ ThemeDlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
apply_sysparams();
read_shell_folder_link_targets();
update_shell_folder_listview(hDlg);
+ update_mime_types(hDlg);
SetWindowLongPtrW(hDlg, DWLP_MSGRESULT, PSNRET_NOERROR);
break;
}
diff --git a/programs/winecfg/winecfg.rc b/programs/winecfg/winecfg.rc
index 5908b491d4..d37a55e9e6 100644
--- a/programs/winecfg/winecfg.rc
+++ b/programs/winecfg/winecfg.rc
@@ -284,25 +284,29 @@ IDD_DESKTOP_INTEGRATION DIALOG 0, 0, 260, 220
STYLE WS_CHILD | WS_DISABLED
FONT 8, "MS Shell Dlg"
BEGIN
- GROUPBOX "Appearance",IDC_STATIC,8,4,244,106
- LTEXT "&Theme:",IDC_STATIC,15,16,130,8
- COMBOBOX IDC_THEME_THEMECOMBO,15,26,130,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- PUSHBUTTON "&Install theme...",IDC_THEME_INSTALL,152,26,93,14
- LTEXT "&Color:",IDC_THEME_COLORTEXT,15,48,105,8
- COMBOBOX IDC_THEME_COLORCOMBO,15,58,105,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- LTEXT "&Size:",IDC_THEME_SIZETEXT,126,48,120,8
- COMBOBOX IDC_THEME_SIZECOMBO,126,58,120,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- LTEXT "It&em:",IDC_STATIC,15,80,105,8
- COMBOBOX IDC_SYSPARAM_COMBO,15,90,105,120,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | CBS_SORT
- LTEXT "C&olor:",IDC_SYSPARAM_COLOR_TEXT,126,80,25,8,WS_DISABLED
- PUSHBUTTON "",IDC_SYSPARAM_COLOR,126,90,25,13,WS_DISABLED | BS_OWNERDRAW
- LTEXT "Si&ze:",IDC_SYSPARAM_SIZE_TEXT,157,80,30,8,WS_DISABLED
- EDITTEXT IDC_SYSPARAM_SIZE,157,90,30,13,ES_AUTOHSCROLL | WS_TABSTOP | WS_DISABLED
- CONTROL "",IDC_SYSPARAM_SIZE_UD,UPDOWN_CLASSA,UDS_SETBUDDYINT | UDS_ALIGNRIGHT | WS_DISABLED, 185,90,15,13
- PUSHBUTTON "&Font...",IDC_SYSPARAM_FONT,190,90,55,13,WS_DISABLED
- GROUPBOX "Folders",IDC_STATIC,8,114,244,100
+ GROUPBOX "Appearance",IDC_STATIC,8,4,244,90
+ LTEXT "&Theme:",IDC_STATIC,15,15,130,8
+ COMBOBOX IDC_THEME_THEMECOMBO,15,25,130,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "&Install theme...",IDC_THEME_INSTALL,152,25,93,13
+ LTEXT "&Color:",IDC_THEME_COLORTEXT,15,40,105,8
+ COMBOBOX IDC_THEME_COLORCOMBO,15,50,105,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Size:",IDC_THEME_SIZETEXT,126,40,120,8
+ COMBOBOX IDC_THEME_SIZECOMBO,126,50,120,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ LTEXT "It&em:",IDC_STATIC,15,65,105,8
+ COMBOBOX IDC_SYSPARAM_COMBO,15,75,105,120,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | CBS_SORT
+ LTEXT "C&olor:",IDC_SYSPARAM_COLOR_TEXT,126,65,25,8,WS_DISABLED
+ PUSHBUTTON "",IDC_SYSPARAM_COLOR,126,75,25,13,WS_DISABLED | BS_OWNERDRAW
+ LTEXT "Si&ze:",IDC_SYSPARAM_SIZE_TEXT,157,65,30,8,WS_DISABLED
+ EDITTEXT IDC_SYSPARAM_SIZE,157,75,30,13,ES_AUTOHSCROLL | WS_TABSTOP | WS_DISABLED
+ CONTROL "",IDC_SYSPARAM_SIZE_UD,UPDOWN_CLASSA,UDS_SETBUDDYINT | UDS_ALIGNRIGHT | WS_DISABLED, 185,75,15,13
+
+ GROUPBOX "MIME types",IDC_STATIC,8,95,244,23
+ CONTROL "Allow Wine to manage file &associations",IDC_ENABLE_FILE_ASSOCIATIONS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,105,230,8
+
+ PUSHBUTTON "&Font...",IDC_SYSPARAM_FONT,190,75,55,13,WS_DISABLED
+ GROUPBOX "Folders",IDC_STATIC,8,120,244,94
CONTROL "",IDC_LIST_SFPATHS,"SysListView32",LVS_REPORT | LVS_AUTOARRANGE | LVS_ALIGNLEFT |
- LVS_SINGLESEL | WS_BORDER | WS_TABSTOP, 15,126,230,64
+ LVS_SINGLESEL | WS_BORDER | WS_TABSTOP, 15,132,230,58
CONTROL "&Link to:",IDC_LINK_SFPATH,"Button",BS_AUTOCHECKBOX|WS_TABSTOP|WS_DISABLED,15,195,65,13
EDITTEXT IDC_EDIT_SFPATH,80,195,110,13,ES_AUTOHSCROLL|WS_TABSTOP|WS_DISABLED
PUSHBUTTON "B&rowse...",IDC_BROWSE_SFPATH,195,195,50,13,WS_DISABLED
diff --git a/programs/winemenubuilder/winemenubuilder.c b/programs/winemenubuilder/winemenubuilder.c
index 0013b04cee..dd69ff96da 100644
--- a/programs/winemenubuilder/winemenubuilder.c
+++ b/programs/winemenubuilder/winemenubuilder.c
@@ -104,6 +104,9 @@ WINE_DEFAULT_DEBUG_CHANNEL(menubuilder);
#define in_startmenu(csidl) ((csidl)==CSIDL_STARTMENU || \
(csidl)==CSIDL_COMMON_STARTMENU)
+#define IS_OPTION_TRUE(ch) \
+ ((ch) == 'y' || (ch) == 'Y' || (ch) == 't' || (ch) == 'T' || (ch) == '1')
+
/* link file formats */
#include "pshpack1.h"
@@ -3619,6 +3622,23 @@ static BOOL init_xdg(void)
return FALSE;
}
+static BOOL associations_enabled(void)
+{
+ BOOL ret = TRUE;
+ HKEY hkey;
+ BYTE buf[32];
+ DWORD len;
+
+ if (!RegOpenKeyA(HKEY_CURRENT_USER, "Software\\Wine\\MIME-types", &hkey))
+ {
+ len = sizeof(buf);
+ if (!RegQueryValueExA(hkey, "EnableFileAssociations", NULL, NULL, buf, &len))
+ ret = IS_OPTION_TRUE(buf[0]);
+ }
+
+ return ret;
+}
+
/***********************************************************************
*
* wWinMain
@@ -3654,7 +3674,8 @@ int PASCAL wWinMain (HINSTANCE hInstance, HINSTANCE prev, LPWSTR cmdline, int sh
break;
if( !strcmpW( token, dash_aW ) )
{
- RefreshFileTypeAssociations();
+ if (associations_enabled())
+ RefreshFileTypeAssociations();
continue;
}
if( !strcmpW( token, dash_rW ) )
--
2.17.1
More information about the wine-devel
mailing list