diff options
Diffstat (limited to 'xorg-server/hw/xwin/winprefs.c')
-rw-r--r-- | xorg-server/hw/xwin/winprefs.c | 47 |
1 files changed, 36 insertions, 11 deletions
diff --git a/xorg-server/hw/xwin/winprefs.c b/xorg-server/hw/xwin/winprefs.c index f386facdd..3d21066f4 100644 --- a/xorg-server/hw/xwin/winprefs.c +++ b/xorg-server/hw/xwin/winprefs.c @@ -51,6 +51,8 @@ extern const char *winGetBaseDir(void); +extern const char *g_pszLogFile; + /* From winprefslex.l, the real parser */ extern int parse_file(FILE * fp); @@ -346,8 +348,8 @@ HandleCustomWM_COMMAND(HWND hwnd, int command) memset(&start, 0, sizeof(start)); start.cb = sizeof(start); - start.dwFlags = STARTF_USESHOWWINDOW; - start.wShowWindow = SW_HIDE; + //start.dwFlags = STARTF_USESHOWWINDOW; + //start.wShowWindow = SW_HIDE; memset(&child, 0, sizeof(child)); @@ -359,7 +361,7 @@ HandleCustomWM_COMMAND(HWND hwnd, int command) } else MessageBox(NULL, m->menuItem[j].param, - "Mingrc Exec Command Error!", + "VcXsrv Exec Command Error!", MB_OK | MB_ICONEXCLAMATION); } return TRUE; @@ -711,16 +713,13 @@ LoadPreferences(void) } /* Setup a DISPLAY environment variable, need to allocate on heap */ - /* because putenv doesn't copy the argument... */ - snprintf(szDisplay, 512, "DISPLAY=127.0.0.1:%s.0", display); - szEnvDisplay = (char *) (malloc(strlen(szDisplay) + 1)); - if (szEnvDisplay) { - strcpy(szEnvDisplay, szDisplay); - putenv(szEnvDisplay); - } + /* because putenv doesn't copy the argument... Always use screen 0 */ + winGetDisplayName(szDisplay, 0); + szEnvDisplay = (char *)(malloc(strlen(szDisplay)+9/*strlen("DISPLAY=")+1*/)); + snprintf(szEnvDisplay, 512, "DISPLAY=%s", szDisplay); + putenv (szEnvDisplay); /* Replace any "%display%" in menu commands with display string */ - snprintf(szDisplay, 512, "127.0.0.1:%s.0", display); for (i = 0; i < pref.menuItems; i++) { for (j = 0; j < pref.menu[i].menuItems; j++) { if (pref.menu[i].menuItem[j].cmd == CMD_EXEC) { @@ -732,6 +731,11 @@ LoadPreferences(void) dstParam += strlen(szDisplay); srcParam += 9; } + else if (!strncmp(srcParam, "%logfile%", 9)) { + memcpy (dstParam, g_pszLogFile, strlen(g_pszLogFile)); + dstParam += strlen(g_pszLogFile); + srcParam += 9; + } else { *dstParam = *srcParam; dstParam++; @@ -767,3 +771,24 @@ winOverrideStyle(char *res_name, char *res_class, char *wmName) /* Didn't find the style, fail gracefully */ return STYLE_NONE; } + +/* + * Check for a match of the window class to one specified in the + * TASKBAR{} section in the prefs file + */ +unsigned long +winOverrideTaskbar(char *res_name, char *res_class, char *wmName) +{ + int i; + + for (i=0; i<pref.taskbarItems; i++) { + if ((res_name && !strcmp(pref.taskbar[i].match, res_name)) || + (res_class && !strcmp(pref.taskbar[i].match, res_class)) || + (wmName && strstr(wmName, pref.taskbar[i].match))) { + if (pref.taskbar[i].type) return pref.taskbar[i].type; + } + } + + /* Didn't find a taskbar type */ + return TASKBAR_NONE; +}
\ No newline at end of file |