|
@@ -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){
|