diff -Naur pwm-1.0/clientwin.c pwm-1.0-p4/clientwin.c --- pwm-1.0/clientwin.c Sat Jan 11 13:43:04 2003 +++ pwm-1.0-p4/clientwin.c Sat Jan 11 13:44:07 2003 @@ -182,6 +182,10 @@ if(winprop!=NULL){ ws=winprop->init_workspace; frame_id=winprop->init_frame; + if(winprop->border==FALSE) + *flags|=WFRAME_NO_BORDER; + if(winprop->tab==FALSE) + *flags|=WFRAME_NO_BAR; if(winprop->wildmode==WILDMODE_YES) *flags|=CWIN_WILD; else if(winprop->wildmode==WILDMODE_NO) @@ -332,6 +336,7 @@ #endif get_initial_winprops(win, &frame_id, &ws, &(cwin->flags)); + frameflags|=cwin->flags&(WFRAME_NO_BORDER|WFRAME_NO_BAR); #ifndef CF_NO_WILD_WINDOWS if(CWIN_IS_WILD(cwin)){ diff -Naur pwm-1.0/clientwin.h pwm-1.0-p4/clientwin.h --- pwm-1.0/clientwin.h Sat Jan 11 13:43:04 2003 +++ pwm-1.0-p4/clientwin.h Sat Jan 11 13:44:07 2003 @@ -14,7 +14,7 @@ #define CWIN_DRAG 0x0001 #define CWIN_TAGGED 0x0002 #define CWIN_URGENT 0x0004 -#define CWIN_WILD 0x0008 +#define CWIN_WILD 0x0020 #define CWIN_P_WM_DELETE 0x0100 #define CWIN_P_WM_TAKE_FOCUS 0x0200 diff -Naur pwm-1.0/frame.c pwm-1.0-p4/frame.c --- pwm-1.0/frame.c Sat Jan 11 13:43:04 2003 +++ pwm-1.0-p4/frame.c Sat Jan 11 14:01:52 2003 @@ -406,8 +406,12 @@ #ifndef CF_NO_WILD_WINDOWS if(frame->cwin_count==0 && CWIN_IS_WILD(cwin)) frame_set_decor(frame, WFRAME_NO_DECOR); - else - frame_set_decor(frame, 0); + else{ + int frameflags=frame->flags; + frame->flags=0; + frame_set_decor(frame, frameflags); + frame->flags=frameflags; + } #endif /* Reparent and attach the window */ @@ -1018,11 +1022,13 @@ void frame_toggle_shade(WFrame *frame) { - set_frame_state(frame, frame->flags^WFRAME_SHADE); - if(frame->flags&WFRAME_SHADE) - play_sound(SND_SHADE); - else - play_sound(SND_UNSHADE); + if (!WFRAME_IS_NO_BAR(frame)){ + set_frame_state(frame, frame->flags^WFRAME_SHADE); + if(frame->flags&WFRAME_SHADE) + play_sound(SND_SHADE); + else + play_sound(SND_UNSHADE); + } } @@ -1115,3 +1121,17 @@ frame_set_decor(frame, decorflags); } + +void frame_toggle_tab(WFrame *frame) +{ + if (!WFRAME_IS_SHADE(frame)){ + int tabflag=frame->flags&(WFRAME_NO_BAR|WFRAME_NO_BORDER); + + if(tabflag&WFRAME_NO_BAR) + tabflag&=~WFRAME_NO_BAR; + else + tabflag|=WFRAME_NO_BAR; + + frame_set_decor(frame, tabflag); + } +} diff -Naur pwm-1.0/frame.h pwm-1.0-p4/frame.h --- pwm-1.0/frame.h Tue Jun 13 22:12:20 2000 +++ pwm-1.0-p4/frame.h Sat Jan 11 13:44:07 2003 @@ -112,5 +112,6 @@ int *fw, int *fh); extern void frame_toggle_decor(WFrame *frame); +extern void frame_toggle_tab(WFrame *frame); #endif /* INCLUDED_FRAME_H */ diff -Naur pwm-1.0/function.c pwm-1.0-p4/function.c --- pwm-1.0/function.c Sat Jul 1 13:21:29 2000 +++ pwm-1.0-p4/function.c Sat Jan 11 13:44:07 2003 @@ -111,6 +111,7 @@ FN(frame, "toggle_shade", frame_toggle_shade), FN(frame, "toggle_stick", frame_toggle_sticky), FN(frame, "toggle_decor", frame_toggle_decor), + FN(frame, "toggle_tab", frame_toggle_tab), FN(frame, "attach_tagged", frame_attach_tagged), FN(frame_i, "toggle_maximize", frame_toggle_maximize), FN(frame_i, "switch_nth", frame_switch_nth), diff -Naur pwm-1.0/readconfig.c pwm-1.0-p4/readconfig.c --- pwm-1.0/readconfig.c Sat Jan 11 13:43:04 2003 +++ pwm-1.0-p4/readconfig.c Sat Jan 11 13:44:07 2003 @@ -868,6 +868,40 @@ } +static bool opt_winprop_border(Tokenizer *tokz, int n, Token *toks) +{ + char *s=TOK_STRING_VAL(&(toks[1])); + + if(strcmp(s, "yes")==0){ + tmp_winprop->border=TRUE; + }else if(strcmp(s, "no")==0){ + tmp_winprop->border=FALSE; + }else{ + warn_obj_line(tokz->name, toks[1].line, "Invalid border (yes/no)"); + return FALSE; + } + + return TRUE; +} + + +static bool opt_winprop_tab(Tokenizer *tokz, int n, Token *toks) +{ + char *s=TOK_STRING_VAL(&(toks[1])); + + if(strcmp(s, "yes")==0){ + tmp_winprop->tab=TRUE; + }else if(strcmp(s, "no")==0){ + tmp_winprop->tab=FALSE; + }else{ + warn_obj_line(tokz->name, toks[1].line, "Invalid tab (yes/no)"); + return FALSE; + } + + return TRUE; +} + + static bool begin_winprop(Tokenizer *tokz, int n, Token *toks) { WWinProp *wrop; @@ -882,6 +916,8 @@ tmp_winprop->init_workspace=WORKSPACE_CURRENT; tmp_winprop->init_frame=0; + tmp_winprop->border=TRUE; + tmp_winprop->tab=TRUE; tmp_winprop->data=wclass=TOK_TAKE_STRING_VAL(&(toks[1])); @@ -999,6 +1035,8 @@ {"workspace", "l", opt_winprop_workspace, NULL}, {"dockpos", "l", opt_winprop_dockpos, NULL}, {"wildmode", "i", opt_winprop_wildmode, NULL}, + {"border", "i", opt_winprop_border, NULL}, + {"tab", "i", opt_winprop_tab, NULL}, {"#end", NULL, end_winprop, NULL}, {"#cancel", NULL, cancel_winprop, NULL}, diff -Naur pwm-1.0/winprops.h pwm-1.0-p4/winprops.h --- pwm-1.0/winprops.h Sat May 20 21:36:39 2000 +++ pwm-1.0-p4/winprops.h Sat Jan 11 13:44:07 2003 @@ -26,6 +26,8 @@ int init_workspace; int dockpos; int wildmode; + int border; + int tab; struct _WWinProp *next, *prev; } WWinProp;