/*
* ion/ioncore/frame-draw.c
*
- * Copyright (c) Tuomo Valkonen 1999-2007.
+ * Copyright (c) Tuomo Valkonen 1999-2008.
*
* See the included file LICENSE for details.
*/
GR_DEFATTR(not_dragged);
GR_DEFATTR(activity);
GR_DEFATTR(no_activity);
-GR_DEFATTR(quasiactive);
-GR_DEFATTR(not_quasiactive);
static void ensure_create_attrs()
GR_ALLOCATTR(not_dragged);
GR_ALLOCATTR(no_activity);
GR_ALLOCATTR(activity);
- GR_ALLOCATTR(quasiactive);
- GR_ALLOCATTR(not_quasiactive);
GR_ALLOCATTR_END;
}
}
+int frame_shaded_height(const WFrame *frame)
+{
+ if(frame->barmode==FRAME_BAR_NONE){
+ return 0;
+ }else if(!BAR_INSIDE_BORDER(frame)){
+ return frame->bar_h;
+ }else {
+ GrBorderWidths bdw;
+
+ grbrush_get_border_widths(frame->brush, &bdw);
+
+ return frame->bar_h+bdw.top+bdw.bottom;
+ }
+}
+
+
void frame_set_shape(WFrame *frame)
{
WRectangle gs[2];
#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;
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);
}
}
-void frame_recalc_bar(WFrame *frame)
+void frame_recalc_bar(WFrame *frame, bool complete)
{
int textw, i;
WLListIterTmp tmp;
return;
if(frame->barmode==FRAME_BAR_SHAPED)
- frame_shaped_recalc_bar_size(frame);
+ frame_shaped_recalc_bar_size(frame, complete);
+ else if(complete)
+ frame_clear_shape(frame);
i=0;
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)
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
};
}
-void frame_quasiactivity_change(WFrame *frame)
-{
- bool is=(frame->quasiact_source!=NULL);
-
- ensure_create_attrs();
-
- if(is){
- gr_stylespec_set(&frame->baseattr, GR_ATTR(quasiactive));
- gr_stylespec_unset(&frame->baseattr, GR_ATTR(not_quasiactive));
- }else{
- gr_stylespec_set(&frame->baseattr, GR_ATTR(not_quasiactive));
- gr_stylespec_unset(&frame->baseattr, GR_ATTR(quasiactive));
- }
-}
-
-
/*}}}*/