]> git.decadent.org.uk Git - ion3.git/blobdiff - ioncore/frame-draw.c
[svn-upgrade] Integrating new upstream version, ion3 (20071130)
[ion3.git] / ioncore / frame-draw.c
index 0b3411a85b1e4e44407f89efe0a74faf909e667b..925a8583dd9afc47b4ec3fb471d62cbfe6f14570 100644 (file)
@@ -214,7 +214,7 @@ void frame_clear_shape(WFrame *frame)
 #define CF_TAB_MAX_TEXT_X_OFF 10
 
 
-static void frame_shaped_recalc_bar_size(WFrame *frame)
+static void frame_shaped_recalc_bar_size(WFrame *frame, bool complete)
 {
     int bar_w=0, textw=0, tmaxw=frame->tab_min_w, tmp=0;
     WLListIterTmp itmp;
@@ -268,7 +268,7 @@ static void frame_shaped_recalc_bar_size(WFrame *frame)
             bar_w=frame->bar_max_width_q*REGION_GEOM(frame).w;
     }
 
-    if(frame->bar_w!=bar_w){
+    if(complete || frame->bar_w!=bar_w){
         frame->bar_w=bar_w;
         frame_set_shape(frame);
     }
@@ -290,7 +290,7 @@ static int init_title(WFrame *frame, int i)
 }
 
 
-void frame_recalc_bar(WFrame *frame)
+void frame_recalc_bar(WFrame *frame, bool complete)
 {
     int textw, i;
     WLListIterTmp tmp;
@@ -301,7 +301,7 @@ void frame_recalc_bar(WFrame *frame)
         return;
     
     if(frame->barmode==FRAME_BAR_SHAPED)
-        frame_shaped_recalc_bar_size(frame);
+        frame_shaped_recalc_bar_size(frame, complete);
     
     i=0;
     
@@ -371,19 +371,21 @@ void frame_draw(const WFrame *frame, bool complete)
 
 void frame_brushes_updated(WFrame *frame)
 {
-    WFrameBarMode barmode=FRAME_BAR_INSIDE;
+    WFrameBarMode barmode;
     ExtlTab tab;
     char *s;
 
     if(frame->brush==NULL)
         return;
     
-    if(frame->mode==FRAME_MODE_FLOATING)
+    if(frame->mode==FRAME_MODE_FLOATING){
         barmode=FRAME_BAR_SHAPED;
-    else if(frame->mode==FRAME_MODE_TRANSIENT)
-        barmode=FRAME_BAR_NONE;
-    else if(frame->mode==FRAME_MODE_TILED_ALT)
+    }else if(frame->mode==FRAME_MODE_TILED || frame->mode==FRAME_MODE_UNKNOWN ||
+            frame->mode==FRAME_MODE_TRANSIENT_ALT){
+        barmode=FRAME_BAR_INSIDE;
+    }else{
         barmode=FRAME_BAR_NONE;
+    }
     
     if(grbrush_get_extra(frame->brush, "bar", 's', &s)){
         if(strcmp(s, "inside")==0)
@@ -445,16 +447,20 @@ void frame_updategr(WFrame *frame)
     region_updategr_default((WRegion*)frame);
     
     mplex_fit_managed(&frame->mplex);
-    frame_recalc_bar(frame);
+    frame_recalc_bar(frame, TRUE);
     frame_set_background(frame, TRUE);
 }
 
 
-StringIntMap frame_tab_styles[]={
+static StringIntMap frame_tab_styles[]={
+    {"tab-frame-unknown", FRAME_MODE_UNKNOWN},
+    {"tab-frame-unknown-alt", FRAME_MODE_UNKNOWN_ALT},
     {"tab-frame-tiled", FRAME_MODE_TILED},
     {"tab-frame-tiled-alt", FRAME_MODE_TILED_ALT},
     {"tab-frame-floating", FRAME_MODE_FLOATING},
+    {"tab-frame-floating-alt", FRAME_MODE_FLOATING_ALT},
     {"tab-frame-transient", FRAME_MODE_TRANSIENT},
+    {"tab-frame-transient-alt", FRAME_MODE_TRANSIENT_ALT},
     END_STRINGINTMAP
 };