Public feed
#601079
Index: options.c
===================================================================
--- options.c (revision 5794)
+++ options.c (working copy)
@@ -356,7 +356,7 @@
if (( dat->opd[i].flags & ODPF_SIMPLEONLY ) && IsDlgButtonChecked( hdlg, IDC_EXPERT )) continue;
if (( dat->opd[i].flags & ODPF_EXPERTONLY ) && !IsDlgButtonChecked( hdlg, IDC_EXPERT )) continue;
tvis.hParent = NULL;
- if(dat->opd[i].pszGroup != NULL && FilterInst==NULL) {
+ if(dat->opd[i].pszGroup != NULL ) { //&& FilterInst==NULL) {
tvis.hParent = FindNamedTreeItemAtRoot(GetDlgItem(hdlg,IDC_PAGETREE),dat->opd[i].pszGroup);
if(tvis.hParent == NULL) {
tvis.item.lParam = -1;
@@ -917,8 +917,11 @@
return 0;
}
+typedef PLUGININFO * (__cdecl * Miranda_Plugin_Info) ( DWORD mirandaVersion );
+typedef PLUGININFOEX * (__cdecl * Miranda_Plugin_InfoEx) ( DWORD mirandaVersion );
static void FillFilterCombo(HWND hDlg, struct OptionsPageData * opd, int PageCount)
{
+ DWORD mirandaVersion = (DWORD)CallService(MS_SYSTEM_GETVERSION, 0, 0);
int i;
int index;
HINSTANCE * KnownInstances=alloca(sizeof(HINSTANCE)*PageCount);
@@ -933,6 +936,8 @@
for (i=0; i<PageCount; i++)
{
TCHAR * dllName;
+ Miranda_Plugin_InfoEx pfnInfoEx;
+ PLUGININFOEX* pi = NULL;
int j;
HINSTANCE inst=opd[i].hInst;
if (inst==mirInstance) continue;
@@ -941,14 +946,26 @@
if (j!=countKnownInst) continue;
KnownInstances[countKnownInst]=inst;
countKnownInst++;
- GetModuleFileName(inst, tszModuleName, MAX_PATH*sizeof(TCHAR));
- dllName=_tcsrchr(tszModuleName,_T('\\'));
- if (!dllName) dllName=tszModuleName;
- else dllName++;
- {
- index=SendDlgItemMessage(hDlg, IDC_MODULES,(UINT) CB_ADDSTRING,(WPARAM)0, (LPARAM)dllName);
- SendDlgItemMessage(hDlg, IDC_MODULES,(UINT) CB_SETITEMDATA,(WPARAM)index, (LPARAM)inst);
- }
+ pfnInfoEx = (Miranda_Plugin_InfoEx)GetProcAddress( inst, "MirandaPluginInfoEx" );
+ if( pfnInfoEx != NULL )
+ pi = (PLUGININFOEX*)pfnInfoEx( mirandaVersion );
+ else {
+ Miranda_Plugin_Info pfnInfo = (Miranda_Plugin_Info)GetProcAddress( inst, "MirandaPluginInfo" );
+ if( pfnInfo != NULL )
+ pi = (PLUGININFOEX*)pfnInfo( mirandaVersion );
+ }
+ if( pi != NULL && pi->shortName != NULL && *pi->shortName != 0 ) {
+ int len = strlen( pi->shortName )+1;
+ dllName = (TCHAR*)alloca( sizeof(TCHAR) * len );
+ MultiByteToWideChar( CP_ACP, 0, pi->shortName, len, dllName, len );
+ } else {
+ GetModuleFileName(inst, tszModuleName, MAX_PATH*sizeof(TCHAR));
+ dllName=_tcsrchr(tszModuleName,_T('\\'));
+ if (!dllName) dllName=tszModuleName;
+ else dllName++;
+ }
+ index=SendDlgItemMessage(hDlg, IDC_MODULES,(UINT) CB_ADDSTRING,(WPARAM)0, (LPARAM)dllName);
+ SendDlgItemMessage(hDlg, IDC_MODULES,(UINT) CB_SETITEMDATA,(WPARAM)index, (LPARAM)inst);
}
SendDlgItemMessage(hDlg, IDC_MODULES,(UINT) CB_SETCURSEL,(WPARAM)0, (LPARAM)0);
}