|  | @@ -1722,8 +1722,6 @@ void laEnsurePanelInBound(laPanel *p, laUiList *uil){
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      p->TX = p->X; p->TY = p->Y;
 | 
	
		
			
				|  |  |      p->TW = p->W; p->TH = p->H;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    if (p->OffScr){ tnsEnsureOffscreenStatus(p->OffScr, p->W,p->H); }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  void laPlacePanelForCreation(laPanel *p){
 | 
	
		
			
				|  |  |      int cw = MAIN.CurrentWindow->CW; int ch = MAIN.CurrentWindow->CH; int PH = p->TH;
 | 
	
	
		
			
				|  | @@ -1757,15 +1755,26 @@ void la_PanelDrawToWindow(laPanel *p, laWindow *w){
 | 
	
		
			
				|  |  |      real Color[] = {1, 1, 1, 1};
 | 
	
		
			
				|  |  |      real L, W, U, H;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    tnsUseImmShader(); tnsEnableShaderv(T->immShader); tnsUniformOutputColorSpace(T->immShader,w->OutputColorSpace);
 | 
	
		
			
				|  |  | -    tnsUniformShowColorOverflowStripes(T->immShader,w->OutputShowStripes);
 | 
	
		
			
				|  |  | +    tnsUseImmShader(); tnsEnableShaderv(T->immShader);
 | 
	
		
			
				|  |  | +    if(MAIN.EnableColorManagement){
 | 
	
		
			
				|  |  | +        tnsUniformOutputColorSpace(T->immShader,w->OutputColorSpace);
 | 
	
		
			
				|  |  | +        tnsUniformShowColorOverflowStripes(T->immShader,w->OutputShowStripes);
 | 
	
		
			
				|  |  | +    }else{
 | 
	
		
			
				|  |  | +        tnsUniformOutputColorSpace(T->immShader,0);
 | 
	
		
			
				|  |  | +        tnsUniformShowColorOverflowStripes(T->immShader,0);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      switch (p->AnimationMode){
 | 
	
		
			
				|  |  |      case 0:
 | 
	
		
			
				|  |  |          tnsDraw2DTextureDirectly(p->OffScr->pColor[0], p->X, p->Y, p->W, p->H);
 | 
	
		
			
				|  |  | -        if(p->ShowCorner && ((!p->SR) && (!p->SB))){ tnsDrawStringAuto("◢",laThemeColor(_LA_THEME_PANEL,LA_BT_TEXT),p->X+p->W-LA_RH,p->X+p->W,p->Y+p->H-LA_RH,0); }
 | 
	
		
			
				|  |  | -        //if(p->Mode==LA_PANEL_FLOATING_TOP)
 | 
	
		
			
				|  |  | -        //    tnsDrawStringAuto("◿",laThemeColor(*p->BT,LA_BT_BORDER),p->X+p->W-LA_RH, p->X+p->W, p->H+p->Y-LA_RH, LA_TEXT_ALIGN_CENTER);
 | 
	
		
			
				|  |  | +        if(!(p->SR || p->SB || p->Parent || p->Block || p->IsMenuPanel)){
 | 
	
		
			
				|  |  | +            real* color=laThemeColor(_LA_THEME_PANEL,LA_BT_TEXT); tnsColor4d(LA_COLOR3(color),color[3]*(p->ShowCorner?1:0.8));
 | 
	
		
			
				|  |  | +            int len=LA_RH/(p->ShowCorner?1:2); tnsUseNoTexture(); int px=p->X+p->W,py=p->Y+p->H;
 | 
	
		
			
				|  |  | +            tnsVertex2d(px,py); tnsVertex2d(px-len,py); tnsVertex2d(px,py-len);
 | 
	
		
			
				|  |  | +            tnsPackAs(GL_TRIANGLES);
 | 
	
		
			
				|  |  | +            tnsColor4dv(laThemeColor(_LA_THEME_PANEL,LA_BT_NORMAL)); tnsVertex2d(px-len,py); tnsVertex2d(px,py-len);
 | 
	
		
			
				|  |  | +            tnsLineWidth(2); tnsPackAs(GL_LINES); tnsLineWidth(1);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      case LA_PANEL_ANIMATION_DROP_DOWN:
 | 
	
	
		
			
				|  | @@ -1850,8 +1859,8 @@ void la_PanelDrawToWindow(laPanel *p, laWindow *w){
 | 
	
		
			
				|  |  |      tnsUniformShowColorOverflowStripes(T->immShader,0);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  void la_PanelDrawToOffsceen(laPanel *p, laUiList *uil){
 | 
	
		
			
				|  |  | -    laEnsurePanelInBound(p,p->MenuRefer?p->MenuRefer:&p->UI);
 | 
	
		
			
				|  |  | -    if (!p->OffScr){
 | 
	
		
			
				|  |  | +    if (p->OffScr){ tnsEnsureOffscreenStatus(p->OffScr, p->W,p->H); }
 | 
	
		
			
				|  |  | +    else{
 | 
	
		
			
				|  |  |          int GLFormat=(p->PanelTemplate&&p->PanelTemplate->DefaultGLFormat)?p->PanelTemplate->DefaultGLFormat:GL_RGBA8;
 | 
	
		
			
				|  |  |          p->OffScr = tnsCreate2DOffscreen(GLFormat, p->W, p->H, MAIN.PanelMultisample, 0,0);
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -2123,7 +2132,12 @@ void la_BlockDefDrawSelf(laBlock *b, int CH){
 | 
	
		
			
				|  |  |      int tw = 0;
 | 
	
		
			
				|  |  |      int L = LA_RH+LA_SEAM_W;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    tnsUseImmShader(); tnsEnableShaderv(T->immShader); tnsUniformOutputColorSpace(T->immShader,MAIN.CurrentWindow->OutputColorSpace);
 | 
	
		
			
				|  |  | +    tnsUseImmShader(); tnsEnableShaderv(T->immShader);
 | 
	
		
			
				|  |  | +    if(MAIN.EnableColorManagement){
 | 
	
		
			
				|  |  | +        tnsUniformOutputColorSpace(T->immShader,MAIN.CurrentWindow->OutputColorSpace);
 | 
	
		
			
				|  |  | +    }else{
 | 
	
		
			
				|  |  | +        tnsUniformOutputColorSpace(T->immShader,0);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      for (p = b->Panels.pFirst; p; p = p->Item.pNext){
 | 
	
		
			
				|  |  |          tw += p->TitleWidth + LA_SEAM_W*2;
 | 
	
	
		
			
				|  | @@ -2191,7 +2205,13 @@ void la_BlockDefDrawSelfEmpty(laBlock *b, int CH){
 | 
	
		
			
				|  |  |      laBoxedTheme *bt = _LA_THEME_PANEL;
 | 
	
		
			
				|  |  |      real tv[8];
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    tnsUseImmShader(); tnsEnableShaderv(T->immShader); tnsUniformOutputColorSpace(T->immShader,MAIN.CurrentWindow->OutputColorSpace);
 | 
	
		
			
				|  |  | +    tnsUseImmShader(); tnsEnableShaderv(T->immShader);
 | 
	
		
			
				|  |  | +    if(MAIN.EnableColorManagement){
 | 
	
		
			
				|  |  | +        tnsUniformOutputColorSpace(T->immShader,MAIN.CurrentWindow->OutputColorSpace);
 | 
	
		
			
				|  |  | +    }else{
 | 
	
		
			
				|  |  | +        tnsUniformOutputColorSpace(T->immShader,0);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  |      tnsUseNoTexture();
 | 
	
		
			
				|  |  |      tnsMakeQuad2d(tv, b->X, (CH - b->Y),
 | 
	
		
			
				|  |  |                        b->X + b->W, (CH - b->Y),
 | 
	
	
		
			
				|  | @@ -2308,7 +2328,11 @@ void la_WindowDefDraw(laWindow *w, laBoxedTheme *bt){
 | 
	
		
			
				|  |  |          la_SetPropMathcerContext(p);
 | 
	
		
			
				|  |  |          if(p->Refresh){
 | 
	
		
			
				|  |  |              tnsUseShader(T->immShader);tnsEnableShaderv(T->immShader);
 | 
	
		
			
				|  |  | -            tnsUniformOutputColorSpace(T->immShader,w->OutputColorSpace);
 | 
	
		
			
				|  |  | +            if(MAIN.EnableColorManagement){
 | 
	
		
			
				|  |  | +                tnsUniformOutputColorSpace(T->immShader,MAIN.CurrentWindow->OutputColorSpace);
 | 
	
		
			
				|  |  | +            }else{
 | 
	
		
			
				|  |  | +                tnsUniformOutputColorSpace(T->immShader,0);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              if(p->Refresh&LA_TAG_RECALC){
 | 
	
		
			
				|  |  |                  laRecalcPanelImmediate(p);
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -2579,23 +2603,23 @@ laPanel* laTearOffPanel(laBlock* b, laPanel* p_if_set){
 | 
	
		
			
				|  |  |      laPanel* p = p_if_set?p_if_set:b->CurrentPanel;
 | 
	
		
			
				|  |  |      b->CurrentPanel = p->Item.pNext?p->Item.pNext:p->Item.pPrev;
 | 
	
		
			
				|  |  |      lstRemoveItem(&b->Panels, p);
 | 
	
		
			
				|  |  | -    if(!b->CurrentPanel && b->parent){
 | 
	
		
			
				|  |  | -        b=b->parent;
 | 
	
		
			
				|  |  | -        laCombineChildBlocks(b);
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | +    if(!b->CurrentPanel && b->parent){ b=b->parent; laCombineChildBlocks(b); }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      if(!p->TitleBar.UiItems.pFirst){
 | 
	
		
			
				|  |  |          laui_DefaultPanelTitleBar(&p->TitleBar, &p->PP, &p->PropLinkPP, p->PanelTemplate?p->PanelTemplate->Header:0);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      p->Mode = LA_PANEL_FLOATING_TOP;
 | 
	
		
			
				|  |  | -    p->TY-=LA_RH;
 | 
	
		
			
				|  |  | -    p->TH+=LA_RH;
 | 
	
		
			
				|  |  | +    p->TY-=LA_RH; p->TH+=LA_RH;
 | 
	
		
			
				|  |  | +    p->W=p->TW=p->PanelTemplate->DefaultW_RH*LA_RH;
 | 
	
		
			
				|  |  | +    p->W=p->TH=p->PanelTemplate->DefaultH_RH*LA_RH;
 | 
	
		
			
				|  |  | +    p->Block = 0;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    laEnsurePanelInBound(p,&p->UI); laPlacePanelForCreation(p);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      laRecalcPanel(p);
 | 
	
		
			
				|  |  |      la_RecalcBlockRecursive(b, b->X,b->Y,b->W,b->H);
 | 
	
		
			
				|  |  |      p->BT = &_LA_THEME_FLOATING_PANEL;
 | 
	
		
			
				|  |  | -    p->Block = 0;
 | 
	
		
			
				|  |  |      lstPushItem(&MAIN.CurrentWindow->Panels, p);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      laNotifyUsers("la.windows.panels");
 | 
	
	
		
			
				|  | @@ -3303,7 +3327,7 @@ void laRecalcPanelImmediate(laPanel* p){
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      if(!enclosed){
 | 
	
		
			
				|  |  |          la_PanelValidateWidth(p,&p->UI);
 | 
	
		
			
				|  |  | -        //laEnsurePanelInBound(p,&p->UI);
 | 
	
		
			
				|  |  | +        laEnsurePanelInBound(p,p->MenuRefer?p->MenuRefer:&p->UI);
 | 
	
		
			
				|  |  |          la_UpdateUiListRecursive(&p->TitleBar, bt->TM, bt->LM, p->TW-bt->RM, p->TH-bt->BM, 0, p);
 | 
	
		
			
				|  |  |          int UseB=p->TitleBar.TB; if((!p->Mode)||(p->Mode==LA_PANEL_FLOATING_PASSIVE)){ UseB=0; }
 | 
	
		
			
				|  |  |          la_UpdateUiListRecursive(&p->UI, UseB+bt->TM, bt->LM, p->TW-bt->RM-scrollw, p->TH-bt->BM, 0, p);
 | 
	
	
		
			
				|  | @@ -4985,7 +5009,7 @@ int la_UpdateUiListRecursive(laUiList *uil, int U, int L, int R, int B, int Fast
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if (ui->Type == _LA_UI_ALIGN){
 | 
	
		
			
				|  |  | -            ui->TU = ui->C->B + bt->TP; ui->TB = ui->TU;
 | 
	
		
			
				|  |  | +            ui->TU = ui->C->B + bt->TP; ui->TB = ui->TU+LA_RH/5;
 | 
	
		
			
				|  |  |              ui->TL = ui->C->IL; ui->TR = ui->C->IR;
 | 
	
		
			
				|  |  |              if (ui->TB > Lowest) Lowest = ui->TB;
 | 
	
		
			
				|  |  |              if (!WaitAnimation){
 |