/***************************************************************************************** * ... * * ****************************************************************************************/ void fm_dir_tree_model_set_icon_size (FmDirTreeModel *dir_tree_model, guint icon_size) { if (dir_tree_model->icon_size == icon_size) return; on_theme_changed (NULL, dir_tree_model); }
INT_PTR CALLBACK ThemeDlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_INITDIALOG: read_shell_folder_link_targets(); init_shell_folder_listview_headers(hDlg); update_shell_folder_listview(hDlg); read_sysparams(hDlg); break; case WM_DESTROY: free_theme_files(); break; case WM_SHOWWINDOW: set_window_title(hDlg); break; case WM_COMMAND: switch(HIWORD(wParam)) { case CBN_SELCHANGE: { if (updating_ui) break; switch (LOWORD(wParam)) { case IDC_THEME_THEMECOMBO: on_theme_changed(hDlg); break; case IDC_THEME_COLORCOMBO: /* fall through */ case IDC_THEME_SIZECOMBO: theme_dirty = TRUE; break; case IDC_SYSPARAM_COMBO: on_sysparam_change(hDlg); return FALSE; } SendMessageW(GetParent(hDlg), PSM_CHANGED, 0, 0); break; } case EN_CHANGE: { if (updating_ui) break; switch (LOWORD(wParam)) { case IDC_EDIT_SFPATH: on_shell_folder_edit_changed(hDlg); break; case IDC_SYSPARAM_SIZE: { char *text = get_text(hDlg, IDC_SYSPARAM_SIZE); int index = SendDlgItemMessageW(hDlg, IDC_SYSPARAM_COMBO, CB_GETCURSEL, 0, 0); index = SendDlgItemMessageW(hDlg, IDC_SYSPARAM_COMBO, CB_GETITEMDATA, index, 0); if (text) { metrics[index].size = atoi(text); HeapFree(GetProcessHeap(), 0, text); } else { /* for empty string set to minimum value */ SendDlgItemMessageW(hDlg, IDC_SYSPARAM_SIZE_UD, UDM_GETRANGE32, (WPARAM)&metrics[index].size, 0); } SendMessageW(GetParent(hDlg), PSM_CHANGED, 0, 0); break; } } break; } case BN_CLICKED: switch (LOWORD(wParam)) { case IDC_THEME_INSTALL: on_theme_install (hDlg); break; case IDC_SYSPARAM_FONT: on_select_font(hDlg); break; case IDC_BROWSE_SFPATH: { WCHAR link[FILENAME_MAX]; if (browse_for_unix_folder(hDlg, link)) { WideCharToMultiByte(CP_UNIXCP, 0, link, -1, psfiSelected->szLinkTarget, FILENAME_MAX, NULL, NULL); update_shell_folder_listview(hDlg); SendMessageW(GetParent(hDlg), PSM_CHANGED, 0, 0); } break; } case IDC_LINK_SFPATH: if (IsDlgButtonChecked(hDlg, IDC_LINK_SFPATH)) { WCHAR link[FILENAME_MAX]; if (browse_for_unix_folder(hDlg, link)) { WideCharToMultiByte(CP_UNIXCP, 0, link, -1, psfiSelected->szLinkTarget, FILENAME_MAX, NULL, NULL); update_shell_folder_listview(hDlg); SendMessageW(GetParent(hDlg), PSM_CHANGED, 0, 0); } else { CheckDlgButton(hDlg, IDC_LINK_SFPATH, BST_UNCHECKED); } } else { psfiSelected->szLinkTarget[0] = '\0'; update_shell_folder_listview(hDlg); SendMessageW(GetParent(hDlg), PSM_CHANGED, 0, 0); } break; case IDC_SYSPARAM_COLOR: { static COLORREF user_colors[16]; CHOOSECOLORW c_color; int index = SendDlgItemMessageW(hDlg, IDC_SYSPARAM_COMBO, CB_GETCURSEL, 0, 0); index = SendDlgItemMessageW(hDlg, IDC_SYSPARAM_COMBO, CB_GETITEMDATA, index, 0); memset(&c_color, 0, sizeof(c_color)); c_color.lStructSize = sizeof(c_color); c_color.lpCustColors = user_colors; c_color.rgbResult = metrics[index].color; c_color.Flags = CC_ANYCOLOR | CC_RGBINIT; c_color.hwndOwner = hDlg; if (ChooseColorW(&c_color)) { metrics[index].color = c_color.rgbResult; save_sys_color(index, metrics[index].color); InvalidateRect(GetDlgItem(hDlg, IDC_SYSPARAM_COLOR), NULL, TRUE); SendMessageW(GetParent(hDlg), PSM_CHANGED, 0, 0); } break; } } break; } break; case WM_NOTIFY: switch (((LPNMHDR)lParam)->code) { case PSN_KILLACTIVE: { SetWindowLongPtrW(hDlg, DWLP_MSGRESULT, FALSE); break; } case PSN_APPLY: { apply(); apply_theme(hDlg); apply_shell_folder_changes(); apply_sysparams(); read_shell_folder_link_targets(); update_shell_folder_listview(hDlg); SetWindowLongPtrW(hDlg, DWLP_MSGRESULT, PSNRET_NOERROR); break; } case LVN_ITEMCHANGED: { if (wParam == IDC_LIST_SFPATHS) on_shell_folder_selection_changed(hDlg, (LPNMLISTVIEW)lParam); break; } case PSN_SETACTIVE: { init_dialog (hDlg); break; } } break; case WM_DRAWITEM: on_draw_item(hDlg, wParam, lParam); break; default: break; } return FALSE; }