Skip to content

Commit 3110289

Browse files
committed
FvwmIconMan: add %s for Format
* Add '%s' format for screen.
1 parent a15c008 commit 3110289

File tree

4 files changed

+34
-11
lines changed

4 files changed

+34
-11
lines changed

modules/FvwmIconMan/FvwmIconMan.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,8 @@ typedef enum {
111111
ICON_NAME = 2,
112112
RESOURCE_NAME = 4,
113113
CLASS_NAME = 8,
114-
ALL_NAME = 15
114+
SCREEN_NAME = 16,
115+
ALL_NAME = 31
115116
} NameType;
116117

117118
typedef struct win_list {

modules/FvwmIconMan/readconfig.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1017,6 +1017,10 @@ static NameType parse_format_dependencies(char *format)
10171017
{
10181018
flags |= RESOURCE_NAME;
10191019
}
1020+
else if (*format == 's')
1021+
{
1022+
flags |= SCREEN_NAME;
1023+
}
10201024
else if (*format != '%')
10211025
{
10221026
ConsoleMessage(

modules/FvwmIconMan/winlist.c

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@ void print_stringlist (StringList *list)
5252
s = "class";
5353
break;
5454

55+
case SCREEN_NAME:
56+
s = "screen";
57+
break;
58+
5559
default:
5660
s = "unknown type";
5761
}
@@ -78,6 +82,8 @@ void add_to_stringlist (StringList *list, char *s)
7882
type = RESOURCE_NAME;
7983
else if (!strcasecmp (s, "class"))
8084
type = CLASS_NAME;
85+
else if (!strcasecmp (s, "screen"))
86+
type = SCREEN_NAME;
8187
else {
8288
ConsoleMessage ("Bad element in show/dontshow list: %s\n", s);
8389
return;
@@ -107,17 +113,18 @@ void add_to_stringlist (StringList *list, char *s)
107113
}
108114

109115
static int matches_string (NameType type, char *pattern, char *tname,
110-
char *iname, char *rname, char *cname)
116+
char *iname, char *rname, char *cname, char *sname)
111117
{
112118
int ans = 0;
113119

114120
ConsoleDebug (WINLIST, "matches_string: type: 0x%x pattern: %s\n",
115121
type, pattern);
116-
ConsoleDebug (WINLIST, "\tstrings: %s:%s %s:%s\n",
122+
ConsoleDebug (WINLIST, "\tstrings: %s:%s %s:%s %s\n",
117123
tname ? tname : "(null)",
118124
iname ? iname : "(null)",
119125
rname ? rname : "(null)",
120-
cname ? cname : "(null)");
126+
cname ? cname : "(null)",
127+
sname ? sname : "(null");
121128

122129
if (tname && (type == ALL_NAME || type == TITLE_NAME)) {
123130
ans |= matchWildcards (pattern, tname);
@@ -131,6 +138,9 @@ static int matches_string (NameType type, char *pattern, char *tname,
131138
if (cname && (type == ALL_NAME || type == CLASS_NAME)) {
132139
ans |= matchWildcards (pattern, cname);
133140
}
141+
if (cname && (type == ALL_NAME || type == SCREEN_NAME)) {
142+
ans |= matchWildcards (pattern, sname);
143+
}
134144

135145
ConsoleDebug (WINLIST, "\tmatches_string: %d\n", ans);
136146
return ans;
@@ -209,7 +219,7 @@ int check_resolution(WinManager *manager, WinData *win)
209219
}
210220

211221
static int iconmanager_show (WinManager *man, char *tname, char *iname,
212-
char *rname, char *cname)
222+
char *rname, char *cname, char *sname)
213223
{
214224
StringEl *string;
215225
int in_showlist = 0, in_dontshowlist = 0;
@@ -228,7 +238,7 @@ static int iconmanager_show (WinManager *man, char *tname, char *iname,
228238
for (string = man->dontshow.list; string; string = string->next) {
229239
ConsoleDebug (WINLIST, "Matching: %s\n", string->string);
230240
if (matches_string (string->type, string->string, tname, iname,
231-
rname, cname)) {
241+
rname, cname, sname)) {
232242
ConsoleDebug (WINLIST, "Don't show\n");
233243
in_dontshowlist = 1;
234244
break;
@@ -243,7 +253,7 @@ static int iconmanager_show (WinManager *man, char *tname, char *iname,
243253
for (string = man->show.list; string; string = string->next) {
244254
ConsoleDebug (WINLIST, "Matching: %s\n", string->string);
245255
if (matches_string (string->type, string->string, tname, iname,
246-
rname, cname)) {
256+
rname, cname, sname)) {
247257
ConsoleDebug (WINLIST, "Show\n");
248258
in_showlist = 1;
249259
break;
@@ -295,14 +305,15 @@ WinManager *figure_win_manager (WinData *win, Uchar name_mask)
295305
char *iname = win->iconname;
296306
char *rname = win->resname;
297307
char *cname = win->classname;
308+
char *sname = win->monitor;
298309
WinManager *man;
299310

300-
assert (tname || iname || rname || cname);
301-
ConsoleDebug (WINLIST, "set_win_manager: %s %s %s %s\n", tname, iname, rname, cname);
311+
assert (tname || iname || rname || cname || sname);
312+
ConsoleDebug (WINLIST, "set_win_manager: %s %s %s %s %s\n", tname, iname, rname, cname, sname);
302313

303314
for (i = 0, man = &globals.managers[0]; i < globals.num_managers;
304315
i++, man++) {
305-
if (iconmanager_show (man, tname, iname, rname, cname) &&
316+
if (iconmanager_show (man, tname, iname, rname, cname, sname) &&
306317
check_resolution(man, win)) {
307318
if (man != win->manager) {
308319
assert (man->magic == 0x12344321);
@@ -329,6 +340,8 @@ int check_win_complete (WinData *p)
329340
(p->resname ? p->resname : "No p->resname"));
330341
ConsoleDebug (WINLIST, "\tclass: %s\n",
331342
(p->classname ? p->classname : "No p->classname"));
343+
ConsoleDebug (WINLIST, "\tscreen: %s\n",
344+
(p->monitor ? p->monitor : "No p->monitor"));
332345
ConsoleDebug (WINLIST, "\tdisplaystring: %s\n",
333346
(p->display_string ? p->display_string :
334347
"No p->display_string"));

modules/FvwmIconMan/xmanager.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -491,6 +491,10 @@ static char *make_display_string(WinData *win, char *format)
491491
COPY(classname);
492492
break;
493493

494+
case 's':
495+
COPY(monitor);
496+
break;
497+
494498
default:
495499
*out_p++ = *in_p++;
496500
break;
@@ -1014,7 +1018,8 @@ void set_win_displaystring(WinData *win)
10141018
if (!man || ((man->format_depend & CLASS_NAME) && !win->classname)
10151019
|| ((man->format_depend & ICON_NAME) && !win->visible_icon_name)
10161020
|| ((man->format_depend & TITLE_NAME) && !win->visible_name)
1017-
|| ((man->format_depend & RESOURCE_NAME) && !win->resname)) {
1021+
|| ((man->format_depend & RESOURCE_NAME) && !win->resname)
1022+
|| ((man->format_depend & SCREEN_NAME) && !win->monitor)) {
10181023
return;
10191024
}
10201025

0 commit comments

Comments
 (0)