*/}}
Ver Fonte

Remove individual margin/padding from theme

YimingWu há 3 meses atrás
pai
commit
279c917bc5

+ 9 - 9
la_animation.c

@@ -605,7 +605,7 @@ int LAMOD_AnimationActionsCanvas(laOperator *a, laEvent *e){
         }
     }
 
-    int MaxDN=LA_RH*(Channels+1)-H+bt->TP+bt->BP; if(MaxDN<0) MaxDN=0;
+    int MaxDN=LA_RH*(Channels+1)-H+LA_M+LA_M; if(MaxDN<0) MaxDN=0;
     if(!Modal){
         if(e->x<=lr){
             if(e->type==LA_MOUSE_WHEEL_DOWN){ ex->PanY+=LA_RH*MAIN.ScrollingSpeed; Modal=1; }
@@ -626,7 +626,7 @@ int LAMOD_AnimationActionsCanvas(laOperator *a, laEvent *e){
                 ex->UiMode=3; int SetFrame=(real)(e->x-tl+ex->PanX)/ex->ZoomX/FW;
                 la_AnimationActionSetOwnFrame(aa,SetFrame,0); Modal=1;
             }elif(e->type==LA_R_MOUSE_DOWN){
-                int row=(e->y-ui->U-bt->BM-LA_RH)/LA_RH; real at=(real)(e->x-tl+ex->PanX)/ex->ZoomX/FW;
+                int row=(e->y-ui->U-LA_M-LA_RH)/LA_RH; real at=(real)(e->x-tl+ex->PanX)/ex->ZoomX/FW;
                 if(!(e->SpecialKeyBit&LA_KEY_SHIFT)){ la_ActionDeselectFrames(aa); }
                 la_ActionSelectFrame(aa,row,at,ex->ZoomX);
                 laNotifyUsers("la.animation.current_action");
@@ -680,7 +680,7 @@ void la_AnimationActionDrawCanvas(laBoxedTheme *bt, laAction *aa, laUiItem* ui){
     int row=1,curframe,cx; real fl,fr;
 
     tnsColor4dv(laThemeColor(bt,LA_BT_NORMAL));
-    tnsVertex2d(ui->L, ui->U+bt->TP+LA_RH); tnsVertex2d(ui->R, ui->U+bt->TP+LA_RH);
+    tnsVertex2d(ui->L, ui->U+LA_M+LA_RH); tnsVertex2d(ui->R, ui->U+LA_M+LA_RH);
     tnsVertex2d(ui->R, ui->U); tnsVertex2d(ui->L, ui->U);
     tnsPackAs(GL_TRIANGLE_FAN);
 
@@ -701,7 +701,7 @@ void la_AnimationActionDrawCanvas(laBoxedTheme *bt, laAction *aa, laUiItem* ui){
         tnsPackAs(GL_TRIANGLE_FAN);
         tnsFlush(); glLineWidth(2);
         for(laActionChannel* ac=aa->Channels.pFirst;ac;ac=ac->Item.pNext){
-            real ku=ui->U+bt->TP+row*LA_RH-ex->PanY,kb=ku+LA_RH;
+            real ku=ui->U+LA_M+row*LA_RH-ex->PanY,kb=ku+LA_RH;
             for(laActionKey* ak=ac->Keys.pFirst;ak;ak=ak->Item.pNext){
                 real kl=tl+ak->At*FW*ex->ZoomX-ex->PanX, kr=tl+(ak->At+1)*FW*ex->ZoomX-ex->PanX;
                 if(ak->Selected) tnsColor4dv(laAccentColor(LA_BT_TEXT_ACTIVE));
@@ -733,12 +733,12 @@ void la_AnimationActionDrawCanvas(laBoxedTheme *bt, laAction *aa, laUiItem* ui){
         cx=tl+(aa->PlayHead*aa->FrameCount+FrameFix)*FW*ex->ZoomX-ex->PanX; tnsVertex2d(cx, ui->U); tnsVertex2d(cx, ui->B);
         tnsPackAs(GL_LINES); glLineWidth(3); tnsFlush(); glLineWidth(1);
 
-        char buf[32]; sprintf(buf,"%d",curframe); real tlen=tnsStringGetDimension(buf,0,0,0,0,0)+bt->LP+bt->RP;
+        char buf[32]; sprintf(buf,"%d",curframe); real tlen=tnsStringGetDimension(buf,0,0,0,0,0)+LA_M+LA_M;
         tnsColor4dv(laAccentColor(LA_BT_TEXT_ACTIVE));
         tnsVertex2d(cx, ui->U+LA_RH); tnsVertex2d(cx+tlen, ui->U+LA_RH);
         tnsVertex2d(cx+tlen, ui->U); tnsVertex2d(cx, ui->U);
         tnsPackAs(GL_TRIANGLE_FAN);
-        tnsDrawStringAuto(buf,laThemeColor(bt,LA_BT_TEXT_ACTIVE),cx+bt->LP,cx+LA_RH*2,ui->U+bt->TP,0);
+        tnsDrawStringAuto(buf,laThemeColor(bt,LA_BT_TEXT_ACTIVE),cx+LA_M,cx+LA_RH*2,ui->U+LA_M,0);
         tnsPackAs(GL_TRIANGLE_FAN); tnsUseNoTexture();
     }
 
@@ -748,11 +748,11 @@ void la_AnimationActionDrawCanvas(laBoxedTheme *bt, laAction *aa, laUiItem* ui){
         tnsVertex2d(lr, ui->B); tnsVertex2d(ll, ui->B);
         tnsPackAs(GL_TRIANGLE_FAN);
         if(!aa){
-            tnsDrawStringAuto("No action selected",laThemeColor(bt,LA_BT_TEXT),ll+bt->LP,lr-bt->RP,ui->U+bt->BP,0);
+            tnsDrawStringAuto("No action selected",laThemeColor(bt,LA_BT_TEXT),ll+LA_M,lr-LA_M,ui->U+LA_M,0);
         }else{ int row=1;
-            tnsDrawStringAuto(SSTR(aa->Name),laThemeColor(bt,LA_BT_TEXT),ll+bt->LP,lr-bt->RP,ui->U+bt->BP,0);
+            tnsDrawStringAuto(SSTR(aa->Name),laThemeColor(bt,LA_BT_TEXT),ll+LA_M,lr-LA_M,ui->U+LA_M,0);
             for(laActionChannel* ac=aa->Channels.pFirst;ac;ac=ac->Item.pNext){ if(!ac->AP){ continue; }
-                tnsDrawStringAuto(SSTR(ac->AP->CachedName),laThemeColor(bt,LA_BT_TEXT),ll+bt->LP,lr-bt->RP,ui->U+bt->TP+row*LA_RH-ex->PanY,0);
+                tnsDrawStringAuto(SSTR(ac->AP->CachedName),laThemeColor(bt,LA_BT_TEXT),ll+LA_M,lr-LA_M,ui->U+LA_M+row*LA_RH-ex->PanY,0);
                 row++;
             }
         }

+ 5 - 11
la_interface.h

@@ -593,6 +593,7 @@ STRUCTURE(LA){
     real MarginSize;
     int UiRowHeight;
     int ScaledUiRowHeight;
+    int ScaledMargin;
     real UiScale;
     void *ToPanel;
 
@@ -677,6 +678,7 @@ STRUCTURE(LA){
 
     int example_int;
     laSafeString* example_string;
+    int DetachedViewSwitch;
 };
 
 #define LA_KM_SEL_UI_EXTRA 1
@@ -865,13 +867,6 @@ STRUCTURE(laBoxedTheme){
 
     int TextAlign;
 
-    int Margins[4]; 
-    int Paddings[4];
-
-    //Don't change order
-    int LM, RM, TM, BM; 
-    int LP, RP, TP, BP;
-
     laBoxedTheme **BackRef;
     laTheme* Parent;
 };
@@ -2564,7 +2559,6 @@ void laMakeExtraColumns(laUiItem *ui, u8bit HowMany, ...);
 
 int la_UiInBoundEx(laUiItem *ui, laUiListDraw *uild);
 
-void la_DestroyUiRange(laUiList *uil, laUiItem *Begin, laUiItem *End);
 void la_ClearUiSpecificData(laUiItem *ui);
 laUiItem *la_UpdatePropDisplay(laUiItem *ui, laPropPack *Base, const char *Path, laUiDefineFunc Template, laWidget* Widget, char* instructions);
 laUiItem *la_UpdateLabelDisplay(laUiItem *ui, laUiDefineFunc Template, char *Content);
@@ -2581,9 +2575,7 @@ laCanvasTemplate *laRegisterCanvasTemplate(char *Identifier, char *ForContainer,
 void la_DestroyTheme(laTheme* t);
 laTheme *laDesignTheme(const char *Name, const char *AuthorName);
 laBoxedTheme *laDesignBoxedTheme(laTheme *t, const char *Name, laBoxedTheme** BackRef,
-                                 real NormalY,real ActiveY,real BorderY,real TextY,real TextActiveY, real Alpha,
-                                 real TopMargin,  real LeftMargin,  real RightMargin,  real BottomMargin,
-                                 real TopPadding, real LeftPadding, real RightPadding, real BottomPadding);
+                                 real NormalY,real ActiveY,real BorderY,real TextY,real TextActiveY, real Alpha);
 laTheme *laGetTheme(const char *ThemeName);
 laBoxedTheme *laGetBoxedTheme(const char *ThemeName, const char *BoxName);
 real* laThemeColor(laBoxedTheme* bt, int which);
@@ -2803,3 +2795,5 @@ extern laProp _P_LA_USE_INSTANCE_ONLY;
 #define LA_RH2 ((int)(MAIN.ScaledUiRowHeight/2))
 #define LA_SCROLL_W ((int)(MAIN.ScaledUiRowHeight * 0.67))
 #define LA_SEAM_W ((int)(MAIN.ScaledUiRowHeight * 0.15))
+
+#define LA_M (MAIN.ScaledMargin)

+ 96 - 98
la_kernel.c

@@ -1332,7 +1332,7 @@ int laGetReadyWith(laInitArguments* ia){
     if((!dpi) || dpi<144){ dpi=144; } if(dpi>300){ dpi=300; }
     int UiSize=(int)(tnsLinearItp(16.0f,24.0f,tnsGetRatiod(96,144,dpi))+0.5);
 
-    MAIN.UiRowHeight = MAIN.ScaledUiRowHeight =UiSize;
+    MAIN.UiRowHeight = MAIN.ScaledUiRowHeight = UiSize;
     MAIN.UiScale=1;
     MAIN.MarginSize = 1;
 
@@ -1916,7 +1916,7 @@ void la_UpdateUiPlacement(laWindow *w){
     int CW = w->CW;
     int CH = w->CH;
     laBoxedTheme* bt = _LA_THEME_FLOATING_PANEL;
-    int MenuHeight=(bt->TM+bt->BM)*2+LA_RH;
+    int MenuHeight=(LA_M+LA_M)*2+LA_RH;
 
     if(w->MaximizedUi && w->MaximizedUiPanel){
         laRecalcPanel(w->MaximizedUiPanel);
@@ -2210,17 +2210,13 @@ laTheme *laDesignTheme(const char *Name, const char *AuthorName){
     return t;
 }
 laBoxedTheme *laDesignBoxedTheme(laTheme *t, const char *Name, laBoxedTheme** BackRef,
-                                 real NormalY,real ActiveY,real BorderY,real TextY,real TextActiveY, real Alpha,
-                                 real LeftMargin,  real RightMargin,  real TopMargin,  real BottomMargin,
-                                 real LeftPadding, real RightPadding, real TopPadding, real BottomPadding){
+                                 real NormalY,real ActiveY,real BorderY,real TextY,real TextActiveY, real Alpha){
     laBoxedTheme *bt = memAcquire(sizeof(laBoxedTheme));
     strSafeSet(&bt->Name, Name);
     bt->NormalY=NormalY;
     bt->ActiveY=ActiveY;
     bt->BorderY=BorderY;
     bt->TextY=TextY; bt->TextActiveY=TextActiveY; bt->Alpha = Alpha;
-    bt->Margins[0] = LeftMargin;   bt->Margins[1] = RightMargin;   bt->Margins[2] = TopMargin;   bt->Margins[3] = BottomMargin;
-    bt->Paddings[0] = LeftPadding; bt->Paddings[1] = RightPadding; bt->Paddings[2] = TopPadding; bt->Paddings[3] = BottomPadding;
     bt->BackRef = BackRef;
     lstAppendItem(&t->BoxedThemes, bt);
     return bt;
@@ -2282,11 +2278,6 @@ void la_RefreshBoxedThemeColor(laBoxedTheme* bt){
     hcy[2]=bt->BorderY; tnsHCY2RGB(hcy, bt->Border); bt->Border[3]=1;
     hcy[2]=bt->TextY;   tnsHCY2RGB(hcy, bt->Text); bt->Text[3]=1;
     hcy[2]=bt->TextActiveY; tnsHCY2RGB(hcy, bt->TextActive); bt->TextActive[3]=1;
-    int *tm=&bt->LM,*tp=&bt->LP;
-    for(int i=0;i<4;i++){
-        tm[i]=(real)bt->Margins[i]*LA_RH*MAIN.MarginSize/10+0.5;
-        tp[i]=(real)bt->Paddings[i]*LA_RH*MAIN.MarginSize/10+0.5;
-    }
 }
 void la_RefreshThemeColorSelf(laTheme* th){
     tnsVectorCopy3d(th->AccentColor, th->CursorColor);   th->CursorColor[3]=th->CursorAlpha;
@@ -2532,7 +2523,7 @@ void laEnsurePanelInBound(laPanel *p, laUiList *uil){
     int PH = p->TH;
     laBoxedTheme*bt = *p->BT;
 
-    int uih=uil->B + bt->BM;
+    int uih=uil->B + LA_M;
     if (p->BoundUi && !(p->SB||p->ST)) PH = TNS_MAX2(uih, p->MinH);
     if (p->MaxH && PH > p->MaxH) p->TH = p->MaxH;
     else if (p->MinH && PH < p->MinH) p->TH = p->MinH;
@@ -2804,7 +2795,7 @@ void la_PanelDefDraw(laWindow *w, laPanel *p, laBoxedTheme *bt){
                 la_SetupUiListLimitMatrix(&uild, 0, p->W, 0, p->H, p->H);
                 la_PanelBackgroundInit(p, bt);
                 int extrap=(p->Mode && (!p->IsMenuPanel))?p->TitleBar.B:0;
-                la_DrawUiListScrollerV(&p->UI, p->UI.PanY, p->UI.B-p->UI.U, p->H-bt->BM-bt->TM-extrap, p->W);
+                la_DrawUiListScrollerV(&p->UI, p->UI.PanY, p->UI.B-p->UI.U, p->H-LA_M*2-extrap, p->W);
                 tnsFlush();
 
                 if(((p->UI.B>p->H) && (!p->UI.ScrollerShownV))||
@@ -2812,7 +2803,7 @@ void la_PanelDefDraw(laWindow *w, laPanel *p, laBoxedTheme *bt){
                     p->UI.ScrollerShownV=!p->UI.ScrollerShownV;
                     DrawState_++;
                 }
-                if(p->UI.PanY && p->UI.B-p->UI.PanY<p->H-bt->BM ){
+                if(p->UI.PanY && p->UI.B-p->UI.PanY<p->H-LA_M){
                     p->UI.PanY = (p->UI.B-p->H/*-bt->BM-bt->TM*/-p->TitleBar.B);
                     if(p->UI.PanY<0){p->UI.PanY=0;}
                     DrawState_++;
@@ -2830,7 +2821,7 @@ void la_PanelDefDraw(laWindow *w, laPanel *p, laBoxedTheme *bt){
                 }else{
                     tnsViewportWithScissor(0,0,p->W,p->H); tnsOrtho(0,p->W,p->H,0,-100,100);
                     tnsDrawStringAutoM("Canvas is maximized",0,laThemeColor(bt,LA_BT_TEXT),
-                        bt->LM,p->W-bt->RM,(p->H - p->TitleBar.B)/2+LA_RH2,LA_TEXT_ALIGN_CENTER|LA_TEXT_LINE_WRAP);
+                        LA_M,p->W-LA_M,(p->H - p->TitleBar.B)/2+LA_RH2,LA_TEXT_ALIGN_CENTER|LA_TEXT_LINE_WRAP);
                     tnsFlush();
                 }
                 if (DrawState_){ p->Refresh = LA_TAG_RECALC; laRefreshWindow(); }
@@ -2841,16 +2832,16 @@ void la_PanelDefDraw(laWindow *w, laPanel *p, laBoxedTheme *bt){
                 la_SetupUiListLimitMatrix(&uild, 0, p->W, 0, p->H, p->H);
                 la_PanelBackgroundInit(p, bt);
                 la_DrawUiListScrollerV(p->MenuRefer, p->MenuRefer->PanY,
-                    p->MenuRefer->B-p->MenuRefer->U-bt->TM-bt->BM, p->H-bt->TM-bt->BM*2, p->W);
+                    p->MenuRefer->B-p->MenuRefer->U-LA_M*2, p->H-LA_M*3, p->W);
                 tnsFlush();
 
-                if(((p->MenuRefer->TB>p->H-bt->BP) && (!p->MenuRefer->ScrollerShownV))||
-                    ((p->MenuRefer->TB<=p->H-bt->BP) && p->MenuRefer->ScrollerShownV)){
+                if(((p->MenuRefer->TB>p->H-LA_M) && (!p->MenuRefer->ScrollerShownV))||
+                    ((p->MenuRefer->TB<=p->H-LA_M) && p->MenuRefer->ScrollerShownV)){
                     p->MenuRefer->ScrollerShownV=!p->MenuRefer->ScrollerShownV;
                     DrawState_++;
                 }
-                if(p->UI.PanY && p->MenuRefer->B-p->MenuRefer->PanY<p->H-bt->BM){
-                    p->MenuRefer->PanY = (p->MenuRefer->B-p->H-bt->BM);
+                if(p->UI.PanY && p->MenuRefer->B-p->MenuRefer->PanY<p->H-LA_M){
+                    p->MenuRefer->PanY = (p->MenuRefer->B-p->H-LA_M);
                     if(p->MenuRefer->PanY<0){p->MenuRefer->PanY=0;}
                     DrawState_++;
                 }
@@ -3121,7 +3112,7 @@ void la_BlockDefDrawRecursive(laWindow *w, laBoxedTheme *bt, laBlock *b){
     laLayout* l=MAIN.CurrentWindow->CurrentLayout;
     if(b==l->HeaderBlock){
         tnsUseNoTexture(); real tv[8]; int YOffset=0;
-        laBoxedTheme* bt = _LA_THEME_FLOATING_PANEL; int MenuHeight=(bt->TM+bt->BM)*2+LA_RH;
+        laBoxedTheme* bt = _LA_THEME_FLOATING_PANEL; int MenuHeight=(LA_M+LA_M)*2+LA_RH;
         if(b->Y<MenuHeight+LA_SEAM_W){ YOffset=LA_SEAM_W; }
         tnsMakeQuad2d(tv, b->X, (w->CH-(b->Y-LA_SEAM_W))-YOffset,
                           b->X+b->W, (w->CH-(b->Y-LA_SEAM_W))-YOffset,
@@ -3132,7 +3123,7 @@ void la_BlockDefDrawRecursive(laWindow *w, laBoxedTheme *bt, laBlock *b){
         tnsPackAs(GL_TRIANGLE_FAN);
         if(l->IsBlockHeaderClicked && (!l->IsMoving)){
             char* Hint=transLate("Double-click to expand 🖱");
-            int Width = tnsStringGetWidth(Hint,0,0)+bt->LM+bt->RM;
+            int Width = tnsStringGetWidth(Hint,0,0)+LA_M*2;
             int UseL=l->LastX-Width-LA_RH; UseL=TNS_MAX2(UseL,b->X);
             tnsMakeQuad2d(tv, UseL, w->CH-b->Y,
                               UseL+Width, w->CH-b->Y,
@@ -3141,7 +3132,7 @@ void la_BlockDefDrawRecursive(laWindow *w, laBoxedTheme *bt, laBlock *b){
             tnsColor4dv(laThemeColor(_LA_THEME_TAB,LA_BT_BORDER));
             tnsVertexArray2d(tv, 4);
             tnsPackAs(GL_TRIANGLE_FAN);
-            tnsDrawStringAuto(Hint,laThemeColor(_LA_THEME_TAB,LA_BT_TEXT_ACTIVE),UseL+bt->LM,UseL+Width,w->CH-b->Y,LA_TEXT_REVERT_Y);
+            tnsDrawStringAuto(Hint,laThemeColor(_LA_THEME_TAB,LA_BT_TEXT_ACTIVE),UseL+LA_M,UseL+Width,w->CH-b->Y,LA_TEXT_REVERT_Y);
         }
     }elif(b==l->MovingBlock){
         tnsUseNoTexture();
@@ -3934,20 +3925,20 @@ int laEnclosePanelContent(laPanel *p, laUiList *uil){
     if(p->SL && p->SR){return 0;}
     la_SetPropMathcerContext(p);
 
-    la_UpdateUiListRecursive(&p->TitleBar, bt->TM, bt->LM, p->TW - bt->LM-bt->RM, p->TH, 0, p);
-    la_UpdateUiListRecursive(uil, bt->TM+p->TitleBar.B, 0, 1000, 0, 0, p);
+    la_UpdateUiListRecursive(&p->TitleBar, LA_M, LA_M, p->TW - LA_M*2, p->TH, 0, p);
+    la_UpdateUiListRecursive(uil, LA_M+p->TitleBar.B, 0, 1000, 0, 0, p);
     MinWt = la_TestUiListMinumWidth(&p->TitleBar);
     MinW = la_TestUiListMinumWidth(uil);
     if (MinW<MinWt){MinW=MinWt;}
-    int ScrollerW=(uil->ScrollerShownV?(LA_SCROLL_W+bt->RM):0);
+    int ScrollerW=(uil->ScrollerShownV?(LA_SCROLL_W+LA_M):0);
     if (MinW > 20){
-        p->TW = MinW + bt->LM + bt->RM+ScrollerW;
+        p->TW = MinW + LA_M*2 +ScrollerW;
     }
     la_PanelValidateWidth(p,uil);
     laEnsurePanelInBound(p,uil);
     if(p->TW>CW){ p->TW=CW; }
-    la_UpdateUiListRecursive(&p->TitleBar, bt->TM, bt->LM, p->TW - bt->LM-bt->RM, p->TH, 0, p);
-    la_UpdateUiListRecursive(uil, bt->TM+p->TitleBar.B, bt->LM, p->TW - bt->RM - ScrollerW, 0, 0, p);
+    la_UpdateUiListRecursive(&p->TitleBar, LA_M, LA_M, p->TW - LA_M*2, p->TH, 0, p);
+    la_UpdateUiListRecursive(uil, LA_M+p->TitleBar.B, LA_M, p->TW - LA_M - ScrollerW, 0, 0, p);
     laRedrawPanel(p);
     return 1;
 }
@@ -4234,7 +4225,7 @@ void laRecalcCurrentPanel(){
 void laRecalcPanelImmediate(laPanel* p){
     p->FrameDistinguish++;
     laBoxedTheme* bt = (*p->BT);
-    int scrollw=p->UI.ScrollerShownV?bt->RM*2+LA_SCROLL_W:0;
+    int scrollw=p->UI.ScrollerShownV?LA_M*2+LA_SCROLL_W:0;
     la_PanelRefreshDetachedProp(p);
     int enclosed=0;
     if(p->BoundUi || p->MenuRefer){
@@ -4244,15 +4235,15 @@ void laRecalcPanelImmediate(laPanel* p){
     if(!enclosed){
         la_PanelValidateWidth(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);
+        la_UpdateUiListRecursive(&p->TitleBar, LA_M, LA_M, p->TW-LA_M, p->TH-LA_M, 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);
+        la_UpdateUiListRecursive(&p->UI, UseB+LA_M, LA_M, p->TW-LA_M-scrollw, p->TH-LA_M, 0, p);
     }
     laWindow* w=MAIN.CurrentWindow;
     if(w->MaximizedUiPanel==p&&w->MaximizedUi){ int CW = w->CW; int CH = w->CH;
         laUiItem* ui=w->MaximizedUi; ui->TU=ui->U=0; ui->TB=ui->B=CH; ui->TL=ui->L=0; ui->TR=ui->R=CW;
         if(!ui->Page) return; laBoxedTheme* bt=(*ui->Type->Theme);
-        la_UpdateUiListRecursive(ui->Page, ui->TU+bt->TM, ui->TL+bt->LM, ui->TR-bt->RM, ui->TB, 0, w->MaximizedUiPanel);
+        la_UpdateUiListRecursive(ui->Page, ui->TU+LA_M, ui->TL+LA_M, ui->TR-LA_M, ui->TB, 0, w->MaximizedUiPanel);
     }
 }
 void laRecalcCurrentPanelImmediate(){
@@ -5624,7 +5615,7 @@ void la_CalcUiItemInfluence(laListHandle *lst, laUiItem *ui){
     laColumn *c = ui->C;
     laColumn *ic = lst->pFirst;
 
-    c->B = ui->TB + (*ui->Type->Theme)->BP;
+    c->B = ui->TB + LA_M;
 
     for (ic; ic; ic = ic->Item.pNext){
         if (((ic->IR > c->IL) && (ic->IL < c->IR)) || ((ic->IL < c->IR) && (ic->IR > c->IL))){
@@ -5644,7 +5635,7 @@ void la_CalcUiTopInfluence(laListHandle *lst, laUiItem *ui){
     laColumn *c = ui->C;
     laColumn *ic = lst->pFirst;
 
-    c->B = ui->TB + (*ui->Type->Theme)->TP;
+    c->B = ui->TB + LA_M;
 
     for (ic; ic; ic = ic->Item.pNext){
         if (((ic->IR > c->IL) && (ic->IL < c->IR)) || ((ic->IL < c->IR) && (ic->IR > c->IL))){
@@ -5664,7 +5655,7 @@ int la_ResetUiColum(laColumn *c, laColumn *Top, int U, int L, int R, int LR, int
     int rep;
     int sp;
     int rev;
-    int M=_LA_THEME_PANEL->LM+_LA_THEME_PANEL->RM;
+    int M=LA_M*2;
 
     if (!c) return 0;
 
@@ -5742,7 +5733,7 @@ int la_InitRowNode(laRowInfo* ri, laUiItem* ui, laBoxedTheme* bt){
 }
 void la_AddRowNode(laRowInfo* ri, laUiItem* ui, laBoxedTheme* bt, int H, int WaitAnimation){
     laRowNode* rn=CreateNew(laRowNode);
-    rn->LP=bt->LP;rn->RP=bt->RP;
+    rn->LP=LA_M;rn->RP=LA_M;
     rn->GotW = (ui->Type->GetMinWidth?ui->Type->GetMinWidth(ui):(LA_RH));
     rn->ui=ui;
     rn->H=H;
@@ -5753,13 +5744,13 @@ void la_AddRowNode(laRowInfo* ri, laUiItem* ui, laBoxedTheme* bt, int H, int Wai
     if(ui->Flags&LA_UI_FLAGS_UNDERNEATH){ ri->LastNoHeight=1; };
 
     if(!ri->UnitMinW){ri->UnitMinW=LA_RH;}
-    ri->TotalPadding += (bt->LP+bt->RP);
+    ri->TotalPadding += LA_M*2;
     ri->MinW+=ri->UnitMinW;
     ri->NonExpandW+=rn->GotW;
     ri->ExpandAccum+=ui->Expand;
     ri->CountElements++;
     if(ui->Expand){ri->Expand=1;}
-    if(ri->U+H+bt->BP>ri->MaxB){ri->MaxB=ri->U+H+bt->BP;}
+    if(ri->U+H+LA_M>ri->MaxB){ri->MaxB=ri->U+H+LA_M;}
 }
 int la_ShrinkableRowElements(laRowInfo* ri){
     int count=0;
@@ -5855,7 +5846,7 @@ int la_UpdateUiListRecursive(laUiList *uil, int U, int L, int R, int B, int Fast
     int WaitAnimation;
     int RowMode=0; laRowInfo ri={0};
     laBoxedTheme* pt=*(ParentPanel->BT);
-    int _PL=-pt->LM,_PR=-pt->RM,_PT=-pt->TM,_PB=-pt->BM;
+    //int _PL=-pt->LM,_PR=-pt->RM,_PT=-pt->TM,_PB=-pt->BM;
     int MaxR=0;
 
     if(!uil->Scale){uil->Scale=1;}
@@ -5936,8 +5927,8 @@ int la_UpdateUiListRecursive(laUiList *uil, int U, int L, int R, int B, int Fast
             continue;
         }else if (ui->Type == _LA_UI_CONDITION_TOGGLE){
             laConditionUiExtraData *cued = ui->Extra;
-            ui->TL = ui->C->IL + bt->LP; ui->TR = ui->C->IR - bt->RP;
-            ui->TU = ui->C->B + bt->TP;  ui->TB = ui->TU+LA_RH;
+            ui->TL = ui->C->IL + LA_M; ui->TR = ui->C->IR - LA_M;
+            ui->TU = ui->C->B + LA_M;  ui->TB = ui->TU + LA_RH;
             if (!WaitAnimation){
                 ui->L = ui->TL; ui->R = ui->TR;
                 ui->U = ui->TU; ui->B = ui->TB;
@@ -5950,8 +5941,6 @@ int la_UpdateUiListRecursive(laUiList *uil, int U, int L, int R, int B, int Fast
             }
             if (ui->State == LA_UI_NORMAL){
                 cued->IsTrue = 0;
-                //if(cued->Remove && (ui->Item.pNext != cued->EndUi))
-                //	la_DestroyUiRange(uil, ui->Item.pNext, cued->ElseUi?cued->ElseUi->Item.pPrev:cued->EndUi->Item.pPrev);
                 ui = cued->ElseUi ? cued->ElseUi : cued->EndUi;
             }else{
                 cued->IsTrue = 1;
@@ -5964,7 +5953,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+LA_RH/5;
+            ui->TU = ui->C->B + LA_M; 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){
@@ -5994,15 +5983,15 @@ int la_UpdateUiListRecursive(laUiList *uil, int U, int L, int R, int B, int Fast
         }
 
 
-        if(!RowMode){ ui->TL = ui->C->IL + (NoGap?_PL:bt->LP); ui->TR = ui->C->IR - (NoGap?_PR:bt->RP); }
+        if(!RowMode){ ui->TL = ui->C->IL + (NoGap?-LA_M:LA_M); ui->TR = ui->C->IR - (NoGap?-LA_M:LA_M); }
 
         int GB=0;
         if (ui->Type == _LA_UI_FIXED_GROUP && ui->Page->HeightCoeff < 0 && ui->Flags&LA_UI_FLAGS_PREFER_BOTTOM){ GB=ui->Page->TB-ui->Page->PanY; }
 
         H = ui->Type->GetHeight ? ui->Type->GetHeight(ui) : 1;
-        ui->TU = ui->C->B + (NoGap?_PT:bt->TP);
+        ui->TU = ui->C->B + (NoGap?-LA_M:LA_M);
         if (H < 0){
-            if(B){ H = B + (H+1) * LA_RH - ui->TU+_PB+((H<-1)?_PT:0); }
+            if(B){ H = B + (H+1) * LA_RH - ui->TU-LA_M+((H<-1)?-LA_M:0); }
             else{ H=LA_RH; }
         } 
         else H *= LA_RH;
@@ -6061,9 +6050,9 @@ int la_UpdateUiListRecursive(laUiList *uil, int U, int L, int R, int B, int Fast
                         laGetCategory(ui->PP.LastPs->p, ui->PP.LastPs->UseInstance, ui->PP.EndInstance, _cat, &cat); if(cat[0]) GotCategory=1;
                     }else GotCategory=0;
 
-                    if(GotCategory){ Begin+=LA_RH*(FirstIn?1:1.5)+bt->TM; 
+                    if(GotCategory){ Begin+=LA_RH*(FirstIn?1:1.5); 
                         if (RowPriority){
-                            Row += 1; Col=0; Begin = ElementB+bt->TM+LA_RH*(FirstIn?1:1.5)+bt->TM;
+                            Row += 1; Col=0; Begin = ElementB+LA_RH*(FirstIn?1:1.5);
                         }
                     }
                     FirstIn=0;
@@ -6088,12 +6077,12 @@ int la_UpdateUiListRecursive(laUiList *uil, int U, int L, int R, int B, int Fast
                             la_AddInstancePage(ui, TInstance, 0); if(GotCategory){ strSafeSet(&ui->Page->TabName,cat); }
                             la_CalcUiTopInfluence(&uil->Columns, ui);
                             if (Template) laMakeUiListFromTemplate(ui->Page, Template, &ParentPanel->PP, &ParentPanel->PropLinkPP, &ui->PP, 0, &uil->Columns, ui->TemplateContext);
-                            SubB = la_UpdateUiListRecursive(ui->Page, Gap+Begin+(NoDecal?0:bt->TM), EL+(NoDecal?0:bt->LM), ER-(NoDecal?0:bt->RM), B, Fast, ParentPanel) +(NoDecal?0:bt->TM);
+                            SubB = la_UpdateUiListRecursive(ui->Page, Gap+Begin, EL+(NoDecal?0:LA_M), ER-(NoDecal?0:LA_M), B, Fast, ParentPanel);
                             ElementB = RowPriority ? (SubB > ElementB ? SubB : ElementB) : SubB;
                             iuil = ui->Page->Item.pNext;
                     }else{
                         la_CalcUiTopInfluence(&uil->Columns, ui); if(GotCategory){ strSafeSet(&iuil->TabName,cat); }
-                        SubB = la_UpdateUiListRecursive(iuil, Gap+Begin+(NoDecal?0:bt->TM), EL+(NoDecal?0:bt->LM), ER-(NoDecal?0:bt->RM), B, Fast, ParentPanel) + (NoDecal?0:bt->TM);
+                        SubB = la_UpdateUiListRecursive(iuil, Gap+Begin, EL+(NoDecal?0:LA_M), ER-(NoDecal?0:LA_M), B, Fast, ParentPanel);
                         ElementB = RowPriority ? (SubB > ElementB ? SubB : ElementB) : SubB;
                         la_CalcUiItemInfluence(&uil->Columns, ui);
                         iuil = iuil->Item.pNext;
@@ -6110,7 +6099,7 @@ int la_UpdateUiListRecursive(laUiList *uil, int U, int L, int R, int B, int Fast
                         if (Col >= ElementLimit){
                             Col = 0;
                             Row += 1;
-                            Begin = ElementB + bt->TM;
+                            Begin = ElementB;
                         }
                     }elif(Spread){
                         EL+=SpreadWidth;
@@ -6118,15 +6107,15 @@ int la_UpdateUiListRecursive(laUiList *uil, int U, int L, int R, int B, int Fast
                         MaxER=TNS_MAX2(ER,MaxER);
                         if((!uil->AllowScale) && (ER > ui->TR)){
                             EL=ui->TL; ER=SpreadWidth+EL;
-                            Begin = ElementB + bt->TM;
+                            Begin = ElementB;
                         }
                     }else{
                         Row += 1;
-                        Begin = ElementB + bt->TM;
+                        Begin = ElementB;
                         if (ElementLimit && Row >= ElementLimit){
                             Row = 0;
                             Col += 1;
-                            Begin = ui->TU + bt->TM;
+                            Begin = ui->TU;
                         }
                     }
                     ui->TB = ElementB;
@@ -6148,12 +6137,14 @@ int la_UpdateUiListRecursive(laUiList *uil, int U, int L, int R, int B, int Fast
                     if(!Template) Template=laui_SubPropInfoDefault;
                     //ui->Template = Template;
                     int EraseWidth=(ui->Type == _LA_UI_COLLECTION_SELECTOR)?LA_RH:0;
+                    int TopPad = (ui->Type == _LA_UI_COLLECTION_SINGLE)?(NoDecal?-LA_M:LA_M):-LA_M;
+                    int SidePad = NoDecal?-LA_M:LA_M;
                     if (!ui->Subs.pFirst && TInstance){
                         la_AddInstancePage(ui, TInstance, 0);
                         la_CalcUiTopInfluence(&uil->Columns, ui);
                         laMakeUiListFromTemplate(ui->Page, Template, &ParentPanel->PP, &ParentPanel->PropLinkPP, &ui->PP, 0, &uil->Columns, ui->TemplateContext);
-                        SubB = la_UpdateUiListRecursive(ui->Page, ui->TB+(NoDecal?0:bt->TM), ui->TL+(NoDecal?0:bt->LM), ui->TR-(NoDecal?0:bt->RM)-EraseWidth, B, Fast, ParentPanel);
-                        ui->TB = SubB + (NoDecal?0:bt->BM);
+                        SubB = la_UpdateUiListRecursive(ui->Page, ui->TB+TopPad, ui->TL+SidePad, ui->TR-SidePad-EraseWidth, B, Fast, ParentPanel);
+                        ui->TB = SubB - (NoDecal?0:LA_M);
                     }else if (ui->Subs.pFirst){
                         if (!TInstance || TInstance != ui->Page->Instance){
                             la_DestroyTabPage(ui, ui->Subs.pFirst, 0);
@@ -6162,18 +6153,21 @@ int la_UpdateUiListRecursive(laUiList *uil, int U, int L, int R, int B, int Fast
                                 la_AddInstancePage(ui, TInstance, 0);
                                 la_CalcUiTopInfluence(&uil->Columns, ui);
                                 laMakeUiListFromTemplate(ui->Page, Template, &ParentPanel->PP, &ParentPanel->PropLinkPP, &ui->PP, 0, &uil->Columns, ui->TemplateContext);
-                                SubB = la_UpdateUiListRecursive(ui->Page, ui->TB+(NoDecal?0:bt->TM), ui->TL+(NoDecal?0:bt->LM), ui->TR-(NoDecal?0:bt->RM)-EraseWidth, B, Fast, ParentPanel);
-                                ui->TB = SubB + (NoDecal?0:bt->TM);
+                                SubB = la_UpdateUiListRecursive(ui->Page, ui->TB+TopPad, ui->TL+SidePad, ui->TR-SidePad-EraseWidth, B, Fast, ParentPanel);
+                                ui->TB = SubB - (NoDecal?0:LA_M);
                             }else
-                                ui->TB = ui->TU + LA_RH + bt->BM;
+                                ui->TB = ui->TU + LA_RH;// + bt->BM;
                         }else{
-                            SubB = la_UpdateUiListRecursive(ui->Page, ui->TB+(NoDecal?0:bt->TM), ui->TL+(NoDecal?0:bt->LM), ui->TR-(NoDecal?0:bt->RM)-EraseWidth, B, Fast, ParentPanel);
-                            ui->TB = SubB + (NoDecal?0:bt->BM);
+                            SubB = la_UpdateUiListRecursive(ui->Page, ui->TB+TopPad, ui->TL+SidePad, ui->TR-SidePad-EraseWidth, B, Fast, ParentPanel);
+                            ui->TB = SubB - (NoDecal?0:LA_M);
                         }
                     }
                     if(ui->Type == _LA_UI_COLLECTION_SELECTOR && (ui->TB>(ui->TU+LA_RH*0.9))&&(ui->TB<ui->TU+(LA_RH*1.1))){
                         ui->TB=ui->TU+LA_RH;
                     }
+                    if(ui->Type == _LA_UI_COLLECTION_SINGLE){
+                        ui->TB+= NoDecal?0:LA_M*2;
+                    }
                 }
                 if (ui->TB-ui->TU<LA_RH) ui->TB = ui->TU + LA_RH;
                 if (!WaitAnimation){
@@ -6186,40 +6180,40 @@ int la_UpdateUiListRecursive(laUiList *uil, int U, int L, int R, int B, int Fast
         }else{
             if (ui->Type != _LA_UI_COLLECTION && (ui->Subs.pFirst || ui->Page) && ui->Type != _LA_UI_MENU_ROOT){
                 if (ui->Type != _LA_UI_CANVAS){
-                    int scrollw=ui->Page->ScrollerShownV?bt->RP*2+LA_SCROLL_W:0;
+                    int scrollw=ui->Page->ScrollerShownV?LA_M*2+LA_SCROLL_W:0;
                     la_CalcUiTopInfluence(&uil->Columns, ui); int first_in=((ui->Flags&LA_UI_FLAGS_PREFER_BOTTOM) && ui->Page->B==0);
                     SubB = la_UpdateUiListRecursive(ui->Page,
-                        ui->TB + (ui->State == LA_UI_ACTIVE ? 0 : LA_RH)+(NoDecal?0:bt->TM), ui->TL+(NoDecal?0:bt->LM), ui->TR-(NoDecal?0:bt->RM)-scrollw, B, Fast, ParentPanel);
+                        ui->TB + (ui->State == LA_UI_ACTIVE ? 0 : LA_RH)+(NoDecal?0:LA_M), ui->TL+(NoDecal?0:LA_M), ui->TR-(NoDecal?0:LA_M)-scrollw, B, Fast, ParentPanel);
                     ui->TB = (ui->Page->HeightCoeff > 0 ? ui->TU + ui->Page->HeightCoeff * LA_RH :
-                            (ui->Page->HeightCoeff < 0 ? B + (ui->Page->HeightCoeff+1) * LA_RH + (_PB+_PT)+(ui->Page->HeightCoeff==-2?_PB:0) : SubB)) + (NoDecal?0:bt->BM);
-                    int subh = ui->TB-ui->TU-LA_RH-bt->TM-bt->BM;
-                    if((ui->Page->TR>ui->TR-(NoDecal?0:bt->RM) && (!ui->Page->ScrollerShownH)) ||
-                        (ui->Page->TR<=ui->TR-(NoDecal?0:bt->RM)  && ui->Page->ScrollerShownH)){
+                            (ui->Page->HeightCoeff < 0 ? B + (ui->Page->HeightCoeff+1) * LA_RH - (LA_M*2)+(ui->Page->HeightCoeff==-2?-LA_M:0) : SubB)) + (NoDecal?0:LA_M);
+                    int subh = ui->TB-ui->TU-LA_RH-LA_M*2;
+                    if((ui->Page->TR>ui->TR-(NoDecal?0:LA_M) && (!ui->Page->ScrollerShownH)) ||
+                        (ui->Page->TR<=ui->TR-(NoDecal?0:LA_M) && ui->Page->ScrollerShownH)){
                         ui->Page->ScrollerShownH=!ui->Page->ScrollerShownH;
                     }
                     if(ui->Page->AllowScale){ui->Page->ScrollerShownH=1;}
-                    if(ui->Page->ScrollerShownH){subh-=LA_SCROLL_W-bt->BM;}
-                    if((GB && ui->TB >= GB)||first_in){ ui->Page->PanY=(SubB-ui->TB-bt->BM); if(ui->Page->PanY<0)ui->Page->PanY=0; }
+                    if(ui->Page->ScrollerShownH){subh-=LA_SCROLL_W-LA_M;}
+                    if((GB && ui->TB >= GB)||first_in){ ui->Page->PanY=(SubB-ui->TB-LA_M); if(ui->Page->PanY<0)ui->Page->PanY=0; }
                     if(ui->Page->HeightCoeff){
                         if((subh<ui->Page->TB-ui->Page->TU && (!ui->Page->ScrollerShownV)) ||
                             (subh>=ui->Page->TB-ui->Page->TU && ui->Page->ScrollerShownV)){
                             ui->Page->ScrollerShownV=!ui->Page->ScrollerShownV;
                             ParentPanel->Refresh|=LA_TAG_RECALC_SCROLLER;  laRefreshWindow();
                         }
-                        if(SubB-ui->Page->PanY<ui->TB-bt->BM-(ui->Page->ScrollerShownH?LA_SCROLL_W+bt->BM:0)){
-                            ui->Page->PanY = (SubB-ui->TB-bt->BM+(ui->Page->ScrollerShownH?LA_SCROLL_W+bt->BM:0));
+                        if(SubB-ui->Page->PanY<ui->TB-LA_M-(ui->Page->ScrollerShownH?LA_SCROLL_W+LA_M:0)){
+                            ui->Page->PanY = (SubB-ui->TB-LA_M+(ui->Page->ScrollerShownH?LA_SCROLL_W+LA_M:0));
                             if(ui->Page->PanY<0){ui->Page->PanY=0;}
                             //ParentPanel->Refresh|=LA_TAG_RECALC_SCROLLER;
                         }
                     }
                     if(ui->Page->ScrollerShownH && !ui->Page->HeightCoeff){
-                        ui->TB+=(bt->BP*2+LA_SCROLL_W); }
+                        ui->TB+=(LA_M*2+LA_SCROLL_W); }
                 }else{
                     laUiList *suil;
                     if(!MAIN.CurrentWindow->MaximizedUi || ui!=MAIN.CurrentWindow->MaximizedUi){
                         la_CalcUiTopInfluence(&uil->Columns, ui);
                         for (suil = ui->Subs.pFirst; suil; suil = suil->Item.pNext){
-                            SubB = la_UpdateUiListRecursive(suil, ui->TB+(NoDecal?0:bt->TM), ui->TL+(NoDecal?0:bt->LM), ui->TR-(NoDecal?0:bt->RM), ui->TU+H, Fast, ParentPanel);
+                            SubB = la_UpdateUiListRecursive(suil, ui->TB+(NoDecal?0:LA_M), ui->TL+(NoDecal?0:LA_M), ui->TR-(NoDecal?0:LA_M), ui->TU+H, Fast, ParentPanel);
                         }
                     }
                     ui->TB = ui->TU + H;
@@ -6227,7 +6221,7 @@ int la_UpdateUiListRecursive(laUiList *uil, int U, int L, int R, int B, int Fast
             }else ui->TB = ui->TU + H;
         }
 
-        if (ui->TB > Lowest && (!NoHeight)) Lowest = ui->TB + (bt ? (NoGap?_PB:bt->BP) : 0);
+        if (ui->TB > Lowest && (!NoHeight)) Lowest = ui->TB + (bt ? (NoGap?-LA_M:LA_M) : 0);
         if(!RowMode){
             if(!NoHeight) la_CalcUiItemInfluence(&uil->Columns, ui);
         }else{
@@ -6380,7 +6374,7 @@ void la_DrawUiListArrows(laUiList *uil, int L, int R, int U, int B, real* color)
 void la_DrawUiListScrollerV(laUiList *uil, int DisplayOffset, int TotalH, int DisplayH, int UiR){
     if(!uil->ScrollerShownV) return;
     
-    int W = LA_SCROLL_W, RM=_LA_THEME_PANEL->RM;
+    int W = LA_SCROLL_W, RM=LA_M;
     int Len = (int)((real)DisplayH / (real)TotalH * (real)DisplayH);
     int Offset = (int)((real)DisplayOffset / (real)TotalH * (real)DisplayH);
     int U = uil->U + Offset;
@@ -6428,7 +6422,7 @@ void la_DrawUiListScrollerV(laUiList *uil, int DisplayOffset, int TotalH, int Di
 void la_DrawUiListScrollerH(laUiList *uil, int DisplayOffset, int TotalW, int DisplayW, int UiB){
     if(!uil->ScrollerShownH) return;
     
-    int W = LA_SCROLL_W,RM=_LA_THEME_PANEL->RM;
+    int W = LA_SCROLL_W,RM=LA_M;
     int Len = (int)((real)DisplayW / (real)TotalW * (real)DisplayW);
     int Offset = (int)((real)DisplayOffset / (real)TotalW * (real)DisplayW);
     int L = uil->L + Offset;
@@ -6686,15 +6680,15 @@ int la_DrawUiListRecursive(laUiListDraw *uild, laUiList *uil, int L, int R, int
                 ui->Type == _LA_UI_COLLECTION_SINGLE ||
                 ui->Type == _LA_UI_COLLECTION_SELECTOR && (ui->Subs.pFirst || ui->Page)){
                 if (!ui->Page){ ui = ui->Item.pNext; continue; }
-                tnsFlush(); int DoNodes=RegisterNodes; int NoDecal=ui->Flags&LA_UI_FLAGS_NO_DECAL;
+                tnsFlush(); int DoNodes=RegisterNodes; int NoDecal=ui->Flags&LA_UI_FLAGS_NO_DECAL; int SidePad=NoDecal?-LA_M:LA_M;
                 if(ui->Flags&LA_UI_FLAGS_NODE_CONTAINER){ la_InitSocketRecord(uild, ui->Page); DoNodes=1; }
-                Ret += la_DrawUiListRecursive(uild, ui->Page, ui->L+(NoDecal?0:bt->LM), ui->R-(NoDecal?0:bt->RM), U, B,
-                    (ui->Page->HeightCoeff ? ui->B - ui->Page->U : 10000) -(NoDecal?0:bt->LM), ConditionStackLevel, GlobalX, GlobalY, DoNodes);
+                Ret += la_DrawUiListRecursive(uild, ui->Page, ui->L+SidePad, ui->R-SidePad, U, B,
+                    (ui->Page->HeightCoeff ? ui->B - ui->Page->U : 10000) -(NoDecal?0:LA_M), ConditionStackLevel, GlobalX, GlobalY, DoNodes);
                 if (ui->Page->ScrollerShownH){ la_DrawUiListScrollerH(ui->Page, ui->Page->PanX,
-                    ui->Page->R-ui->Page->L-bt->RM-bt->LM, ui->R-ui->Page->L-bt->RM-bt->LM-(ui->Page->ScrollerShownV?LA_SCROLL_W:0),ui->B); }
+                    ui->Page->R-ui->Page->L-LA_M*2, ui->R-ui->Page->L-LA_M*2-(ui->Page->ScrollerShownV?LA_SCROLL_W:0),ui->B); }
                 if (ui->Page->HeightCoeff) la_DrawUiListScrollerV(ui->Page, ui->Page->PanY,
-                    ui->Page->B-ui->Page->U-(NoDecal?0:bt->TM-bt->BM), ui->B-ui->Page->U-(NoDecal?0:bt->TM-bt->BM)-(ui->Page->ScrollerShownH?LA_SCROLL_W+bt->RM:0),ui->R);
-                if (ui->Page->AllowScale){ la_DrawUiListArrows(ui->Page,ui->L, ui->R, ui->Page->U, ui->B-LA_SCROLL_W-bt->BM*2, laThemeColor(bt, LA_BT_BORDER)); }
+                    ui->Page->B-ui->Page->U-(NoDecal?0:LA_M-LA_M), ui->B-ui->Page->U-(NoDecal?0:LA_M-LA_M)-(ui->Page->ScrollerShownH?LA_SCROLL_W+LA_M:0),ui->R);
+                if (ui->Page->AllowScale){ la_DrawUiListArrows(ui->Page,ui->L, ui->R, ui->Page->U, ui->B-LA_SCROLL_W-LA_M*2, laThemeColor(bt, LA_BT_BORDER)); }
             }elif (ui->Type == _LA_UI_COLLECTION){
                 int CanGetState = laCanGetState(ui->PP.LastPs->p);
                 int CanGetTheme = laCanGetTheme(ui->PP.LastPs->p);laTheme* OriginalTheme=MAIN.CurrentTheme;
@@ -6708,12 +6702,12 @@ int la_DrawUiListRecursive(laUiListDraw *uild, laUiList *uil, int L, int R, int
 
                     if(NeedDraw){ int drawn=0;
                         if (!(ui->Flags&LA_UI_COLLECTION_NO_HIGHLIGHT) && sub->Instance == Active){
-                            la_DrawInstanceBkg(sub, laAccentColor(LA_BT_NORMAL),bt->LP,bt->RP); drawn=1;
+                            la_DrawInstanceBkg(sub, laAccentColor(LA_BT_NORMAL),LA_M,LA_M); drawn=1;
                         }
                         if (CanGetState && !drawn){
                             State = laGetUiState(ui->PP.LastPs->p, sub->Instance);
                             if(State >= 0){
-                                la_DrawInstanceBkg(sub, laAccentColor(State),bt->LP,bt->RP);
+                                la_DrawInstanceBkg(sub, laAccentColor(State),LA_M,LA_M);
                             }
                         }
                     }
@@ -6722,14 +6716,14 @@ int la_DrawUiListRecursive(laUiListDraw *uild, laUiList *uil, int L, int R, int
                         int NoDecal=ui->Flags&LA_UI_FLAGS_NO_DECAL;
                         int NoGap=ui->Flags&LA_UI_FLAGS_NO_GAP;
                         tnsDrawStringAuto(transLate(sub->TabName->Ptr),laThemeColor(bt,LA_BT_DISABLED|LA_BT_TEXT),
-                            ui->L+(NoDecal?0:bt->LM)+(NoGap?0:bt->LP),ui->R,sub->U-LA_RH,LA_TEXT_MONO);
+                            ui->L+(NoDecal?0:LA_M)+(NoGap?0:LA_M),ui->R,sub->U-LA_RH,LA_TEXT_MONO);
                         tnsFlush();
                     }
 
                     if(CanGetTheme){
                         laTheme* t=laGetUiTheme(ui->PP.LastPs->p, ui->PP.LastPs->UseInstance, ui->PP.EndInstance);
                         la_SwitchThemeQuick(t, OriginalTheme);
-                        if(t) la_DrawInstanceBkg(sub, laThemeColor(_LA_THEME_FLOATING_PANEL ,LA_BT_NORMAL),bt->LP,bt->RP);
+                        if(t) la_DrawInstanceBkg(sub, laThemeColor(_LA_THEME_FLOATING_PANEL ,LA_BT_NORMAL),LA_M,LA_M);
                     }
 
                     tnsFlush();
@@ -6743,7 +6737,7 @@ int la_DrawUiListRecursive(laUiListDraw *uild, laUiList *uil, int L, int R, int
                 if(!(ui->Flags&LA_UI_FLAGS_NO_OVERLAY)){
                     for (sub = ui->Subs.pFirst; sub; sub = sub->Item.pNext){
                         tnsFlush();
-                        Ret += la_DrawUiListRecursive(uild, sub, L-1, R+1, U-1, B+1, ui->B-bt->TP-bt->BP-bt->BM-bt->TM, ConditionStackLevel, GlobalX, GlobalY, RegisterNodes);
+                        Ret += la_DrawUiListRecursive(uild, sub, L-1, R+1, U-1, B+1, ui->B-LA_M*2-LA_M*2, ConditionStackLevel, GlobalX, GlobalY, RegisterNodes);
                     }
                 }
             }
@@ -6977,9 +6971,9 @@ laUiList *la_DetectUiListRecursive(laUiList *uil, int x, int y, int LimH,
         if ((ui->Type == _LA_UI_FIXED_GROUP || ui->Type == _LA_UI_TAB) && (ui->Subs.pFirst || ui->Page)){
             if (ui->Page->HeightCoeff) CPB = ui->B+ui->Page->PanY;
             else CPB = ui->Page->B;
-            if (ui->Page->ScrollerShownV && laIsInBound(x, y, ui->R - LA_SCROLL_W - bt->RP*2, ui->R, ui->Page->U, CPB)){
+            if (ui->Page->ScrollerShownV && laIsInBound(x, y, ui->R - LA_SCROLL_W - LA_M*2, ui->R, ui->Page->U, CPB)){
                 if (ScrollUil) *ScrollUil = ui->Page; if (ParentUi) *ParentUi = ui;
-            }elif (ui->Page->ScrollerShownH && laIsInBound(x, y, ui->Page->L, ui->Page->R, ui->B - LA_SCROLL_W - bt->BP*2, ui->B)){
+            }elif (ui->Page->ScrollerShownH && laIsInBound(x, y, ui->Page->L, ui->Page->R, ui->B - LA_SCROLL_W - LA_M*2, ui->B)){
                 if (ScrollUil) *ScrollUil = ui->Page; if (ParentUi) *ParentUi = ui;
             }elif (laIsInBound(x, y, ui->Page->L, ui->Page->R, ui->Page->U, CPB)){
                 if (ParentUi) *ParentUi = ui; 
@@ -7064,9 +7058,9 @@ laUiList *la_DetectUiListRecursiveDeep(laUiList *uil, int x, int y, int LimH, la
         if ((ui->Type == _LA_UI_FIXED_GROUP || ui->Type == _LA_UI_TAB) && (ui->Subs.pFirst || ui->Page)){
             if (ui->Page->HeightCoeff) CPB = ui->B;
             else CPB = ui->Page->B;
-            if (ui->Page->ScrollerShownV && laIsInBound(x, y, ui->R - LA_SCROLL_W - bt->RP*2, ui->R, ui->Page->U, CPB)){
+            if (ui->Page->ScrollerShownV && laIsInBound(x, y, ui->R - LA_SCROLL_W - LA_M*2, ui->R, ui->Page->U, CPB)){
                 if (ScrollUil) *ScrollUil = ui->Page; if (ParentUi) *ParentUi = ui; uilr->pui=ui;
-            }elif (ui->Page->ScrollerShownH && laIsInBound(x, y, ui->Page->L, ui->Page->R, ui->B - LA_SCROLL_W - bt->BP*2, ui->B)){
+            }elif (ui->Page->ScrollerShownH && laIsInBound(x, y, ui->Page->L, ui->Page->R, ui->B - LA_SCROLL_W - LA_M*2, ui->B)){
                 if (ScrollUil) *ScrollUil = ui->Page; if (ParentUi) *ParentUi = ui; uilr->pui=ui;
             }elif (laIsInBound(x, y, ui->Page->L, ui->Page->R, ui->Page->U, CPB)){
                 if (ParentUi) *ParentUi = ui; uilr->pui=ui;
@@ -7078,7 +7072,7 @@ laUiList *la_DetectUiListRecursiveDeep(laUiList *uil, int x, int y, int LimH, la
             if (ui->Page->HeightCoeff) CPB = ui->B;
             else
                 CPB = ui->Page->B;
-            if (laIsInBound(x, y, ui->Page->R, ui->Page->R + LA_SCROLL_W + bt->RM, ui->Page->U, CPB)){
+            if (laIsInBound(x, y, ui->Page->R, ui->Page->R + LA_SCROLL_W + LA_M, ui->Page->U, CPB)){
                 if (ScrollUil) *ScrollUil = ui->Page;
                 if (ParentUi) *ParentUi = ui; uilr->pui=ui;
             }
@@ -7106,7 +7100,7 @@ int la_TestUiListMinumWidth(laUiList *uil){
         bt = ui->Type->Theme ? (*ui->Type->Theme) : 0;
 
         if ((ui->Type == _LA_UI_FIXED_GROUP || ui->Type == _LA_UI_TAB) && (ui->Subs.pFirst || ui->Page)){
-            tW = la_TestUiListMinumWidth(ui->Page) + bt->LP + bt->RP;
+            tW = la_TestUiListMinumWidth(ui->Page) + LA_M*2;
             tW = (int)((float)tW / ui->C->PreWidth + 2);
             if (W < tW) W = tW;
         }elif (ui->Type == _LA_UI_COLLECTION){
@@ -7114,7 +7108,7 @@ int la_TestUiListMinumWidth(laUiList *uil){
             tW = 0; sW = 0;
             for (sub = ui->Subs.pFirst; sub; sub = sub->Item.pNext){
                 ui->PP.EndInstance = sub->Instance;
-                sW = la_TestUiListMinumWidth(sub) + bt->LP + bt->RP;
+                sW = la_TestUiListMinumWidth(sub) + LA_M*2;
                 if (sW > tW) tW = sW;
             }
             ui->PP.EndInstance = Restore;
@@ -7126,7 +7120,7 @@ int la_TestUiListMinumWidth(laUiList *uil){
         }elif (ui->Type==&_LA_UI_ROW_END){
             RowMode=0; rW=(int)((float)rW / ui->C->PreWidth + 2); if (W < rW) W = rW;
         }elif (ui->Type->GetMinWidth){
-            tW = ui->Type->GetMinWidth(ui) + bt->LP + bt->RP;
+            tW = ui->Type->GetMinWidth(ui) + LA_M*2;
             if(RowMode){ rW+=tW; }else{ tW = (int)((float)tW / ui->C->PreWidth + 2); if (W < tW) W = tW; }
         }
         ui = ui->Item.pNext;
@@ -8308,12 +8302,16 @@ void la_DrawWindow(laWindow *w){
     MAIN.CurrentWindow = w;
     la_WindowDefDraw(w, 0);
 }
+
+void laset_UiRowHeight(void* unused, int val);
 int laFinalize(){
     if(!laValidateProperties()){ laShutoff(0); return 0; }
     
     laUiTemplate* uit;
     while(uit=lstPopItem(&MAIN.InitPanelTemplates)) lstAppendItem(&MAIN.PanelTemplates,uit);
 
+    laset_UiRowHeight(0, LA_RH0);
+
     return 1;
 }
 void la_PreFrame(){

+ 28 - 28
la_resource.c

@@ -152,33 +152,33 @@ void la_RegisterMainThemes(){
         t->EdgeBrightness=0.65; t->EdgeTransparency=0.8; t->VertexBrightness=0.65, t->VertexTransparency=0.9;
         t->SelectedFaceTransparency=0.6,t->SelectedEdgeTransparency=0.9, t->SelectedVertexTransparency=1.0;
         laDesignBoxedTheme(t, "Panel",&_LA_THEME_PANEL,
-            0.85, 0.5, 0.9, 0.2, 0.1, 0.9, 1, 1, 1, 1, 1, 1, 1, 1);
+            0.85, 0.5, 0.9, 0.2, 0.1, 0.9);
         laDesignBoxedTheme(t, "Floating Panel",&_LA_THEME_FLOATING_PANEL,
-            0.95, 0.8, 0.15, 0.15, 0.1, 0.9, 1, 1, 1, 1, 1, 1, 1, 1);
+            0.95, 0.8, 0.15, 0.15, 0.1, 0.9);
         laDesignBoxedTheme(t, "Valuator",&_LA_THEME_VALUATOR,
-            0.8, 0.5, 0.3, 0.2, 0.1, 0.9, 1, 1, 1, 1, 1, 1, 1, 1);
+            0.8, 0.5, 0.3, 0.2, 0.1, 0.9);
         laDesignBoxedTheme(t, "Button",&_LA_THEME_BUTTON,
-            0.97, 0.2, 0.3, 0.2, 0.9, 0.95, 1, 1, 1, 1, 1, 1, 1, 1);
+            0.97, 0.2, 0.3, 0.2, 0.9, 0.95);
         laDesignBoxedTheme(t, "String",&_LA_THEME_STRING,
-            0.9, 0.95, 0.3, 0.2, 0.1, 0.95, 1, 1, 1, 1, 1, 1, 1, 1);
+            0.9, 0.95, 0.3, 0.2, 0.1, 0.95);
         laDesignBoxedTheme(t, "Selector",&_LA_THEME_SELECTOR,
-            0.97, 0.25, 0.3, 0.2, 0.9, 0.95, 1, 1, 1, 1, 1, 1, 1, 1);
+            0.97, 0.25, 0.3, 0.2, 0.9, 0.95);
         laDesignBoxedTheme(t, "Collection Selector",&_LA_THEME_COLLECTION_SELECTOR,
-            0.85, 0.7, 0.3, 0.2, 0.1, 0.95, 0, 0, -1, -1, 1, 1, 1, 1);
+            0.85, 0.7, 0.3, 0.2, 0.1, 0.95);
         laDesignBoxedTheme(t, "Label",&_LA_THEME_LABEL,
-            0.7, 0.8, 0.3, 0.1, 0.05, 0.95, 1, 1, 1, 1, 1, 1, 1, 1);
+            0.7, 0.8, 0.3, 0.1, 0.05, 0.95);
         laDesignBoxedTheme(t, "Tab",&_LA_THEME_TAB,
-            0.9, 0.8, 0.2, 0.1, 0.7, 0.9, 1, 1, 1, 1, 1, 1, 1, 1);
+            0.9, 0.8, 0.2, 0.1, 0.7, 0.9);
         laDesignBoxedTheme(t, "Socket",&_LA_THEME_SOCKET,
-            0.97, 0.2, 0.3, 0.2, 0.9, 0.95, 1, 1, 1, 1, 1, 1, 1, 1);
+            0.97, 0.2, 0.3, 0.2, 0.9, 0.95);
         laDesignBoxedTheme(t, "Collection Group",&_LA_THEME_COLLECTION_GROUP,
-            0.75, 0.65, 0.2, 0.1, 0.7, 0.3, 1, 1, 0, 0, 1, 1, 1, 1);
+            0.75, 0.65, 0.2, 0.1, 0.7, 0.3);
         laDesignBoxedTheme(t, "Collection Item",&_LA_THEME_COLLECTION_ITEM,
-            0.75, 0.65, 0.2, 0.1, 0.7, 0.3, 1, 1, 0, 0, 1, 1, 1, 1);
+            0.75, 0.65, 0.2, 0.1, 0.7, 0.3);
         laDesignBoxedTheme(t, "3D Viewer",&_LA_THEME_3D_VIEW,
-            0.75, 0.6, 0.50, 0.1, 0.92, 0.6, 1, 1, 1, 1, 1, 1, 1, 1);
+            0.75, 0.6, 0.50, 0.1, 0.92, 0.6);
         laDesignBoxedTheme(t, "2D Viewer",&_LA_THEME_2D_VIEW,
-            0.75, 0.6, 0.50, 0.1, 0.92, 0.6, 1, 1, 1, 1, 1, 1, 1, 1);
+            0.75, 0.6, 0.50, 0.1, 0.92, 0.6);
 
         la_RefreshThemeColor(t);
     }
@@ -195,36 +195,36 @@ void la_RegisterMainThemes(){
         t->EdgeBrightness=0.05; t->EdgeTransparency=0.8; t->VertexBrightness=0.05, t->VertexTransparency=0.9;
         t->SelectedFaceTransparency=0.6,t->SelectedEdgeTransparency=0.9, t->SelectedVertexTransparency=1.0;
         bt = laDesignBoxedTheme(t, "Panel",&_LA_THEME_PANEL,
-            0.2, 0.2, 0.1, 0.7, 0.9, 0.8, 1, 1, 1, 1, 1, 1, 1, 1);
+            0.2, 0.2, 0.1, 0.7, 0.9, 0.8);
             memAssignRef(bt, &bt->Parent, t1);
         bt = laDesignBoxedTheme(t, "Floating Panel",&_LA_THEME_FLOATING_PANEL,
-            0.05, 0.05, 0.4, 0.8, 0.9, 0.8, 1, 1, 1, 1, 1, 1, 1, 1);
+            0.05, 0.05, 0.4, 0.8, 0.9, 0.8);
             memAssignRef(bt, &bt->Parent, t1);
         bt = laDesignBoxedTheme(t, "Valuator",&_LA_THEME_VALUATOR,
-            0.3, 0.1, 0.4, 0.8, 0.9, 0.9, 1, 1, 1, 1, 1, 1, 1, 1);
+            0.3, 0.1, 0.4, 0.8, 0.9, 0.9);
             memAssignRef(bt, &bt->Parent, t1);
         bt = laDesignBoxedTheme(t, "Button",&_LA_THEME_BUTTON,
-            0.1, 0.9, 0.3, 0.8, 0.1, 0.95, 1, 1, 1, 1, 1, 1, 1, 1);
+            0.1, 0.9, 0.3, 0.8, 0.1, 0.95);
         bt = laDesignBoxedTheme(t, "String",&_LA_THEME_STRING,
-            0.1, 0.03, 0.3, 0.8, 0.9, 0.95, 1, 1, 1, 1, 1, 1, 1, 1);
+            0.1, 0.03, 0.3, 0.8, 0.9, 0.95);
         bt = laDesignBoxedTheme(t, "Selector",&_LA_THEME_SELECTOR,
-            0.15, 0.7, 0.3, 0.8, 0.2, 0.95, 1, 1, 1, 1, 1, 1, 1, 1);
+            0.15, 0.7, 0.3, 0.8, 0.2, 0.95);
         bt = laDesignBoxedTheme(t, "Collection Selector",&_LA_THEME_COLLECTION_SELECTOR,
-            0.15, 0.1, 0.3, 0.8, 0.9, 0.95, 0, 0, -1, -1, 1, 1, 1, 1);
+            0.15, 0.1, 0.3, 0.8, 0.9, 0.95);
         bt = laDesignBoxedTheme(t, "Label",&_LA_THEME_LABEL,
-            0.15, 0.1, 0.3, 0.8, 0.9, 0.95, 1, 1, 1, 1, 1, 1, 1, 1);
+            0.15, 0.1, 0.3, 0.8, 0.9, 0.95);
         bt = laDesignBoxedTheme(t, "Tab",&_LA_THEME_TAB,
-            0.2, 0.3, 0.8, 0.7, 0.1, 0.9, 1, 1, 1, 1, 1, 1, 1, 1);
+            0.2, 0.3, 0.8, 0.7, 0.1, 0.9);
         bt = laDesignBoxedTheme(t, "Socket",&_LA_THEME_SOCKET,
-            0.1, 0.65, 0.7, 0.8, 0.1, 0.95, 1, 1, 1, 1, 1, 1, 1, 1);
+            0.1, 0.65, 0.7, 0.8, 0.1, 0.95);
         bt = laDesignBoxedTheme(t, "Collection Group",&_LA_THEME_COLLECTION_GROUP,
-            0.25, 0.35, 0.4, 0.7, 0.1, 0.45, 1, 1, 0, 0, 1, 1, 1, 1);
+            0.25, 0.35, 0.4, 0.7, 0.1, 0.45);
         bt = laDesignBoxedTheme(t, "Collection Item",&_LA_THEME_COLLECTION_ITEM,
-            0.25, 0.35, 0.8, 0.7, 0.1, 0.3, 1, 1, 0, 0, 1, 1, 1, 1);
+            0.25, 0.35, 0.8, 0.7, 0.1, 0.3);
         bt = laDesignBoxedTheme(t, "3D Viewer",&_LA_THEME_3D_VIEW,
-            0.25, 0.5, 0.5, 0.7, 0.1, 0.6, 1, 1, 1, 1, 1, 1, 1, 1);
+            0.25, 0.5, 0.5, 0.7, 0.1, 0.6);
         bt = laDesignBoxedTheme(t, "2D Viewer",&_LA_THEME_2D_VIEW,
-            0.25, 0.5, 0.55, 0.7, 0.1, 0.6, 1, 1, 1, 1, 1, 1, 1, 1);
+            0.25, 0.5, 0.55, 0.7, 0.1, 0.6);
 
         la_RefreshThemeColor(t);
     }

+ 17 - 17
resources/la_operators.c

@@ -2033,8 +2033,8 @@ int la_ScrollPanel(laGeneralUiExtraData*ex, laPanel*p, laEvent* e){
         laUiList* uuil=ex->Ptr1; laUiItem* upui=ex->Ptr2;
         if(upui){ laPanUiListFree(uuil, ex->LastX-e->x, ex->LastY-e->y);
             //if(uuil->HeightCoeff){
-                if(uuil->B-upui->Page->PanY<upui->TB-(*p->BT)->BM-LA_SCROLL_W){
-                    upui->Page->PanY = (uuil->B-upui->TB+(*p->BT)->BM+LA_SCROLL_W);
+                if(uuil->B-upui->Page->PanY<upui->TB-LA_M-LA_SCROLL_W){
+                    upui->Page->PanY = (uuil->B-upui->TB+LA_M+LA_SCROLL_W);
                     if(upui->Page->PanY<0){upui->Page->PanY=0;}
                 }
             //}
@@ -2076,11 +2076,11 @@ int la_ScrollPanel(laGeneralUiExtraData*ex, laPanel*p, laEvent* e){
                 while (lip && upui){
                     if(uuil->AllowScale){ if((ran=laScaleUiList(uuil, 1.0f-dir*0.1, upui->L, upui->R, upui->U, upui->B))){ laRecalcCurrentPanel(); break;} }
                     else{ if((ran=laPanUiListAuto(uuil, 0, dir*MAIN.ScrollingSpeed*LA_RH,
-                                uuil->L, upui->R-(uuil->ScrollerShownV?(LA_SCROLL_W+(*p->BT)->RM):0),
-                                uuil->U, upui->B-(*upui->Type->Theme)->BM-(uuil->ScrollerShownH?(LA_SCROLL_W+(*p->BT)->BM):0)))) break; }
+                                uuil->L, upui->R-(uuil->ScrollerShownV?(LA_SCROLL_W+LA_M):0),
+                                uuil->U, upui->B-LA_M-(uuil->ScrollerShownH?(LA_SCROLL_W+LA_M):0)))) break; }
                     lip=lip->Item.pPrev; uuil=lip->uil;  upui=lip->Item.pPrev?((laUiListRecord*)lip->Item.pPrev)->pui:0; 
                 }
-                if(!ran) laPanUiListAuto(p->MenuRefer?p->MenuRefer:&p->UI, 0, dir*MAIN.ScrollingSpeed*LA_RH, 0, p->W, p->TitleBar.B+(*p->BT)->TM, p->H-(*p->BT)->BM);
+                if(!ran) laPanUiListAuto(p->MenuRefer?p->MenuRefer:&p->UI, 0, dir*MAIN.ScrollingSpeed*LA_RH, 0, p->W, p->TitleBar.B+LA_M, p->H-LA_M);
                 laRedrawCurrentPanel();
                 ret= 1;
             }
@@ -2143,7 +2143,7 @@ int OPMOD_Panel(laOperator *a, laEvent *e){
             uid->Ptr1 = suil; uid->Ptr2 = pui;
             uid->TargetIndexVali = 3;
             uid->LastX = e->x; uid->LastY = e->y;
-            uid->On=(!pui || e->x>pui->R-LA_SCROLL_W-2*(*p->BT)->RM)?1:0;
+            uid->On=(!pui || e->x>pui->R-LA_SCROLL_W-2*LA_M)?1:0;
             return LA_RUNNING;
         }
     }
@@ -2199,9 +2199,9 @@ int OPMOD_Panel(laOperator *a, laEvent *e){
                                         (pui?la_ScrollerHorizontalPan(e->x - uid->LastX, p, uid->Ptr1, uid->Ptr2):0);
             uid->Dragging = (int)uid->TargetIndexValf; uid->TargetIndexValf-=uid->Dragging;
             int pV=uid->Dragging*IsVertical, pH=uid->Dragging*(!IsVertical);
-            if (!pui) laPanUiList(suil, pH, pV,0, p->W, suil->U, p->H-(*p->BT)->BM);
-            else laPanUiList(suil, pH, pV, suil->L, pui->R-(suil->ScrollerShownV?(LA_SCROLL_W+(*p->BT)->RM):0),
-                                           suil->U, pui->B-(*p->BT)->BM-(suil->ScrollerShownH?(LA_SCROLL_W+(*p->BT)->BM):0));
+            if (!pui) laPanUiList(suil, pH, pV,0, p->W, suil->U, p->H-LA_M);
+            else laPanUiList(suil, pH, pV, suil->L, pui->R-(suil->ScrollerShownV?(LA_SCROLL_W+LA_M):0),
+                                           suil->U, pui->B-LA_M-(suil->ScrollerShownH?(LA_SCROLL_W+LA_M):0));
             uid->LastX = e->x; uid->LastY = e->y;
             laRedrawCurrentPanel();
             return LA_RUNNING;
@@ -2252,7 +2252,7 @@ int OPMOD_MenuPanel(laOperator *a, laEvent *e){
             uid->Ptr1 = suil; uid->Ptr2 = pui;
             uid->TargetIndexVali = 3;
             uid->LastX = e->x; uid->LastY = e->y;
-            uid->On=(!pui || e->x>pui->R-LA_SCROLL_W-2*(*p->BT)->RM)?1:0;
+            uid->On=(!pui || e->x>pui->R-LA_SCROLL_W-2*LA_M)?1:0;
             return LA_RUNNING;
         }
     }
@@ -2271,9 +2271,9 @@ int OPMOD_MenuPanel(laOperator *a, laEvent *e){
                                         (pui?la_ScrollerHorizontalPan(e->x - uid->LastX, p, uid->Ptr1, uid->Ptr2):0);
             uid->Dragging = (int)uid->TargetIndexValf; uid->TargetIndexValf-=uid->Dragging;
             int pV=uid->Dragging*IsVertical, pH=uid->Dragging*(!IsVertical);
-            if (!pui) laPanUiList(suil, pH, pV,0, p->W, suil->U, p->H-(*p->BT)->BM);
-            else laPanUiList(suil, pH, pV, suil->L, pui->R-(suil->ScrollerShownV?(LA_SCROLL_W+(*p->BT)->RM):0),
-                                           suil->U, pui->B-(*p->BT)->BM-(suil->ScrollerShownH?(LA_SCROLL_W+(*p->BT)->BM):0));
+            if (!pui) laPanUiList(suil, pH, pV,0, p->W, suil->U, p->H-LA_M);
+            else laPanUiList(suil, pH, pV, suil->L, pui->R-(suil->ScrollerShownV?(LA_SCROLL_W+LA_M):0),
+                                           suil->U, pui->B-LA_M-(suil->ScrollerShownH?(LA_SCROLL_W+LA_M):0));
             uid->LastX = e->x; uid->LastY = e->y;
             laRedrawCurrentPanel();
             return LA_RUNNING;
@@ -2346,7 +2346,7 @@ int OPMOD_ModalPanel(laOperator *a, laEvent *e){
             uid->Ptr1 = suil; uid->Ptr2 = pui;
             uid->TargetIndexVali = 3;
             uid->LastX = e->x; uid->LastY = e->y;
-            uid->On=(!pui || e->x>pui->R-LA_SCROLL_W-2*(*p->BT)->RM)?1:0;
+            uid->On=(!pui || e->x>pui->R-LA_SCROLL_W-2*LA_M)?1:0;
             return LA_RUNNING;
         }
     }
@@ -2400,9 +2400,9 @@ int OPMOD_ModalPanel(laOperator *a, laEvent *e){
                                         (pui?la_ScrollerHorizontalPan(e->x - uid->LastX, p, uid->Ptr1, uid->Ptr2):0);
             uid->Dragging = (int)uid->TargetIndexValf; uid->TargetIndexValf-=uid->Dragging;
             int pV=uid->Dragging*IsVertical, pH=uid->Dragging*(!IsVertical);
-            if (!pui) laPanUiList(suil, pH, pV,0, p->W, suil->U, p->H-(*p->BT)->BM);
-            else laPanUiList(suil, pH, pV, suil->L, pui->R-(suil->ScrollerShownV?(LA_SCROLL_W+(*p->BT)->RM):0),
-                                           suil->U, pui->B-(*p->BT)->BM-(suil->ScrollerShownH?(LA_SCROLL_W+(*p->BT)->BM):0));
+            if (!pui) laPanUiList(suil, pH, pV,0, p->W, suil->U, p->H-LA_M);
+            else laPanUiList(suil, pH, pV, suil->L, pui->R-(suil->ScrollerShownV?(LA_SCROLL_W+LA_M):0),
+                                           suil->U, pui->B-LA_M-(suil->ScrollerShownH?(LA_SCROLL_W+LA_M):0));
             uid->LastX = e->x; uid->LastY = e->y;
             laRedrawCurrentPanel();
             return LA_RUNNING;

+ 7 - 14
resources/la_properties.c

@@ -108,16 +108,6 @@ void laset_ThemeAlpha(laBoxedTheme* bt, real val){
     la_RefreshBoxedThemeColor(bt);
     laRedrawAllWindows();
 }
-void laset_ThemeMargins(laBoxedTheme* bt, int index, int val){
-    bt->Margins[index]=val;
-    la_RefreshBoxedThemeColor(bt);
-    laRedrawAllWindows();
-}
-void laset_ThemePaddings(laBoxedTheme* bt, int index, int val){
-    bt->Paddings[index]=val;
-    la_RefreshBoxedThemeColor(bt);
-    laRedrawAllWindows();
-}
 void laset_ThemeWireTransparency(laTheme* t, real val){ t->WireTransparency = val; la_RegenerateWireColors(); laRedrawAllWindows(); }
 void laset_ThemeWireBrightness(laTheme* t, real val){ t->WireBrightness = val; la_RegenerateWireColors(); laRedrawAllWindows(); }
 void laset_ThemeWireSaturation(laTheme* t, real val){ t->WireSaturation = val; la_RegenerateWireColors(); laRedrawAllWindows(); }
@@ -146,7 +136,8 @@ extern tnsFontManager* FM;
 
 void laset_UiRowHeight(void* unused, int val){
     MAIN.UiRowHeight = val;
-    MAIN.ScaledUiRowHeight=MAIN.UiRowHeight;
+    MAIN.ScaledUiRowHeight = MAIN.UiRowHeight;
+    MAIN.ScaledMargin = MAIN.ScaledUiRowHeight*MAIN.MarginSize*0.1f;
     la_RefreshThemeColor(MAIN.CurrentTheme);
     tfntResizeFontTexture(FM->UsingFont, TNS_FONT_BUFFER_W_DEFAULT);
     tnsInvalidateFontCache();
@@ -155,12 +146,14 @@ void laset_UiRowHeight(void* unused, int val){
 void laset_FontSize(void* unused, real val){
     MAIN.FontSize = val;
     MAIN.ScaledUiRowHeight=MAIN.UiRowHeight;
+    MAIN.ScaledMargin = MAIN.ScaledUiRowHeight*MAIN.MarginSize*0.1f;
     tnsInvalidateFontCache();
     tfntResizeFontTexture(FM->UsingFont, TNS_FONT_BUFFER_W_DEFAULT);
     laRedrawAllWindows();
 }
 void laset_MarginSize(void* unused, real val){
     MAIN.MarginSize = val;
+    MAIN.ScaledMargin = MAIN.ScaledUiRowHeight*MAIN.MarginSize*0.1f;
     la_RefreshThemeColor(MAIN.CurrentTheme);
     laRedrawAllWindows();
 }
@@ -1544,8 +1537,6 @@ void la_RegisterInternalProps(){
 
             p = laAddPropertyContainer("boxed_theme", "Boxed Theme", "A single theme item for one or multiple kinds of uiitems", 0,laui_BoxedThemeItem, sizeof(laBoxedTheme), 0,0,1);{
                 laAddStringProperty(p, "name", "Name", "Boxed theme name", 0,0,0,0,1, offsetof(laBoxedTheme, Name), 0,0,0,0,LA_AS_IDENTIFIER);
-                laAddIntProperty(p, "margins", "Margins", "Margins On Four Sides", 0,"Left,Right,Top,Bottom", 0, 10, -2, 1, 1, 0,offsetof(laBoxedTheme, Margins), 0,0,4, 0,laset_ThemeMargins, 0,0,0,0,0,0);
-                laAddIntProperty(p, "paddings", "Paddings", "Paddings On Four Sides", 0,"Left,Right,Top,Bottom", 0,10, -2, 1, 1, 0,offsetof(laBoxedTheme, Paddings), 0,0,4, 0,laset_ThemePaddings, 0,0,0,0,0,0);
                 laAddFloatProperty(p, "normal", "Normal", "Background brightness", 0,0,0,1, 0,0.025, 1, 0,offsetof(laBoxedTheme, NormalY), 0,laset_ThemeNormal, 0,0,0,0,0,0,0,0,0);
                 laAddFloatProperty(p, "active", "Active", "Background brightness in active state", 0,0,0,1, 0,0.025, 1, 0,offsetof(laBoxedTheme, ActiveY), 0,laset_ThemeActive, 0,0,0,0,0,0,0,0,0);
                 laAddFloatProperty(p, "border", "Border", "Border brightness", 0,0,0,1, 0,0.025, 1, 0,offsetof(laBoxedTheme, BorderY), 0,laset_ThemeBorder, 0,0,0,0,0,0,0,0,0);
@@ -1640,7 +1631,9 @@ void la_RegisterInternalProps(){
             laAddStringProperty(p, "example_string", "Example String", "Example string", 0,0,0,0,1, offsetof(LA,example_string), 0,0,0,0,0);
             laAddStringProperty(p, "unknown_prop", "Unknown Property", "Placeholder for unknown property, probably due to a wrong property path, or not setting LA_AS_IDENTIFIER in any of the properties.",
                 LA_WIDGET_STRING_PLAIN, 0,0,0,0,0,0,laget_UnknownPropertyString, 0,0,LA_READ_ONLY);
-        
+            ep=laAddEnumProperty(p, "detached_view_switch", "View Detached", "Use detached view on panels", LA_WIDGET_ENUM_HIGHLIGHT,0,0,0,0,offsetof(LA, DetachedViewSwitch),0,0,0,0,0,0,0,0,0,LA_UDF_IGNORE);
+            laAddEnumItemAs(ep, "LINKED", "Linked", "View is linked to global current states", 0, U'🔗');
+            laAddEnumItemAs(ep, "DETACHED", "Detached", "View is detached from global states and is pinned to panel", 1, U'📌');
         }
         
         if(MAIN.InitArgs.HasAudio){

+ 8 - 12
resources/la_templates.c

@@ -732,16 +732,12 @@ void laui_BoxedThemeItem(laUiList *uil, laPropPack *Base, laPropPack *UNUSED_Thi
     laShowItemFull(uil, cr, Base, "name", LA_WIDGET_STRING_PLAIN, 0 ,0,0);
 
     bracket = laOnConditionToggle(uil, cl, 0, 0, 0, 0, 0);{
-        laShowItem(uil, cr, Base, "normal");
-        laShowItem(uil, cr, Base, "active");
-        laShowItem(uil, cr, Base, "border");
-        laShowItem(uil, cr, Base, "text");
-        laShowItem(uil, cr, Base, "text_active");
-        laShowItem(uil, cr, Base, "alpha");
-        laShowLabel(uil,crl,"Margins:",0,0);
-        laShowItem(uil, crl, Base, "margins")->Flags=LA_UI_FLAGS_TRANSPOSE;
-        laShowLabel(uil,crr,"Paddings:",0,0);
-        laShowItem(uil, crr, Base, "paddings")->Flags=LA_UI_FLAGS_TRANSPOSE;
+        laShowItem(uil, crl, Base, "normal");
+        laShowItem(uil, crr, Base, "active");
+        laShowItem(uil, crl, Base, "border");
+        laShowItem(uil, crr, Base, "alpha");
+        laShowItem(uil, crl, Base, "text");
+        laShowItem(uil, crr, Base, "text_active");
     }
     laEndCondition(uil, bracket);
 }
@@ -1245,8 +1241,8 @@ void laui_RackPage(laUiList *uil, laPropPack *This, laPropPack *Extra, laColumn
     laColumn* c=laFirstColumn(uil); laRackPage* r=This->EndInstance;
     laUiItem* b=laOnConditionThat(uil,c,laPropExpression(This,"has_rack"));{
         laUiItem* g=laMakeGroup(uil,c,"Racks",0);{ g->Flags|=/*LA_UI_FLAGS_NO_GAP|LA_UI_FLAGS_NO_DECAL|*/LA_UI_FLAGS_NODE_CONTAINER;
-            laUiList* gu=g->Page; laColumn* gc=laFirstColumn(gu); gu->AllowScale=1; gu->HeightCoeff=-1; g->State=LA_UI_ACTIVE;
-            laUiItem* hui=laShowItemFull(gu,gc,This,"racks",0,0,laui_NodeRack,r?r->RackType:0); hui->Expand=15; hui->Flags|=LA_UI_FLAGS_NO_DECAL;
+            laUiList* gu=g->Page; laColumn* gc=laFirstColumn(gu); gu->AllowScale=1; g->State=LA_UI_ACTIVE; gu->HeightCoeff=-1; 
+            laUiItem* hui=laShowItemFull(gu,gc,This,"racks",0,0,laui_NodeRack,r?r->RackType:0); hui->Expand=15; //hui->Flags|=LA_UI_FLAGS_NO_DECAL;
         }
     }laElse(uil,b);{
         laShowItemFull(uil,c,This,"add_rack",0,0,0,0);

+ 92 - 88
resources/la_widgets.c

@@ -227,18 +227,18 @@ int la_LabelGetMinWidth(laUiItem *ui){
     if(ui->Flags&LA_UI_MIN_WIDTH){ return LA_RH; }
     int strw=tnsStringGetWidth(transLate(SSTR(ui->Display)), 0, ui->Flags&LA_TEXT_MONO);
     if(ui->Type==_LA_UI_MENU_ROOT && strw<LA_RH)strw=LA_RH;
-    return (strw + bt->LM + bt->RM);
+    return (strw + LA_M + LA_M);
 }
 int la_StringPropGetMinWidth(laUiItem *ui){
     laBoxedTheme *bt = *ui->Type->Theme;
     if(ui->Flags&LA_UI_MIN_WIDTH){ return LA_RH; }
     char _buf[LA_RAW_CSTR_MAX_LEN]={0}; int ExtraW=0; char* buf=_buf;
-    if(ui->Type == _LA_UI_STRING_MULTI){ExtraW=2*LA_RH+bt->LM;}
+    if(ui->Type == _LA_UI_STRING_MULTI){ExtraW=2*LA_RH+LA_M;}
     laGetString(&ui->PP, _buf, &buf); int rows=0;
     int strw=tnsStringGetDimension(buf, 0, 0, 0, &rows, ui->Flags&LA_TEXT_MONO);
     int Plain = ui->Flags&LA_UI_FLAGS_PLAIN;
     if((!Plain)&&strw<LA_RH*4){strw=LA_RH*4;}
-    return (strw + bt->LM + bt->RM+ExtraW);
+    return (strw + LA_M + LA_M+ExtraW);
 }
 int la_EnumGetMinWidth(laUiItem *ui){
     laBoxedTheme *bt = *ui->Type->Theme;
@@ -253,7 +253,7 @@ int la_EnumGetMinWidth(laUiItem *ui){
     int NoDecal=ui->Flags&LA_UI_FLAGS_NO_DECAL;
     int SharedWidth;
     if(!IsIcon){
-        SharedWidth = bt->LM + bt->RM + ((IsCycle||IsExpand||NoDecal)?0:LA_RH); int HasIcon=0;
+        SharedWidth = LA_M + LA_M + ((IsCycle||IsExpand||NoDecal)?0:LA_RH); int HasIcon=0;
         if(Highlight){ int ico=0;
             if (ui->ExtraInstructions){
                 if (ui->Type->OperatorType->ParseArgs){
@@ -266,14 +266,14 @@ int la_EnumGetMinWidth(laUiItem *ui){
                 tW = tnsStringGetWidth(transLate(ep->Base.Name), 0, ui->Flags&LA_TEXT_MONO) + SharedWidth;
             }
             if (tW > W) W = tW;
-            if(HasIcon||ico) W+=bt->LM+LA_RH;
+            if(HasIcon||ico) W+=LA_M+LA_RH;
         }else{
             for (i = ep->Items.pFirst; i; i = i->Item.pNext){
                 tW = tnsStringGetWidth(transLate(i->Name), 0, ui->Flags&LA_TEXT_MONO) + SharedWidth;
                 if (i->IconID){ HasIcon=1; }
                 if (tW > W) W = tW;
             }
-            if(HasIcon) W+=bt->LM+LA_RH;
+            if(HasIcon) W+=LA_M+LA_RH;
         }
     }else{
         W = LA_RH;
@@ -324,7 +324,7 @@ int la_ButtonGetMinWidth(laUiItem *ui){
     }
 
     int strw=tnsStringGetWidth(label, 0, ui->Flags&LA_TEXT_MONO);
-    if(strw){ strw+=bt->RM+bt->LM; }
+    if(strw){ strw+=LA_M+LA_M; }
 
     return ((IconID ? (LA_RH) : 0) + strw);
 }
@@ -332,7 +332,7 @@ int la_CollectionSimpleGetMinWidth(laUiItem *ui){
     laBoxedTheme *bt = *ui->Type->Theme;
     int Simple=ui->Flags&LA_UI_COLLECTION_SIMPLE_SELECTOR;
     int Expand=ui->Expand||(ui->Flags&LA_UI_FLAGS_EXPAND);
-    int w=LA_RH+((Simple&&Expand)?(tnsStringGetWidth("Select",0,0)+bt->RM+bt->LM):0);
+    int w=LA_RH+((Simple&&Expand)?(tnsStringGetWidth("Select",0,0)+LA_M+LA_M):0);
     return w;
 }
 int la_ColumnViewerGetMinWidth(laUiItem *ui){
@@ -366,7 +366,7 @@ int la_MouseActionReporterMinWidth(laUiItem *ui){
     if(!(SSTR(ui->Display)[0])) return 3*LA_RH;
     int strw=tnsStringGetWidth(transLate(SSTR(ui->Display)), 0, ui->Flags&LA_TEXT_MONO);
     if(ui->Type==_LA_UI_MENU_ROOT && strw<LA_RH)strw=LA_RH;
-    return (strw + bt->LM + bt->RM);
+    return (strw + LA_M + LA_M);
 }
 
 void la_SingleLineStringDrawSelection(laUiItem *ui, int Begin, int U, laBoxedTheme *bt, uint32_t *str, laStringEdit *se);
@@ -419,7 +419,7 @@ void la_CollectionSelectorDraw(laUiItem *ui, int h){
     }
     if(Simple){
         int R=ui->R; if(ui->Expand || (ui->Flags&LA_UI_FLAGS_EXPAND)){
-            R=ui->L+LA_RH; tnsDrawStringAuto(transLate("Select"), laThemeColor(bt,ui->State|LA_BT_TEXT), R+bt->LM, ui->R, ui->U, 0);
+            R=ui->L+LA_RH; tnsDrawStringAuto(transLate("Select"), laThemeColor(bt,ui->State|LA_BT_TEXT), R+LA_M, ui->R, ui->U, 0);
         }
         tnsDrawStringAuto("⯆", laThemeColor(bt,ui->State|LA_BT_TEXT), ui->L, R, ui->U, LA_TEXT_ALIGN_CENTER);
     }
@@ -471,7 +471,7 @@ void la_GroupDraw(laUiItem *ui, int h){
 
     if (ui->State != LA_UI_ACTIVE){
         tnsDrawStringAuto(ui->Page ? transLate(ui->Page->TabName->Ptr) : transLate("No Page"),
-            laThemeColor(bt,ui->State|LA_BT_TEXT), ui->L+bt->LM, ui->R+bt->RM, ui->U, LA_TEXT_ALIGN_CENTER);
+            laThemeColor(bt,ui->State|LA_BT_TEXT), ui->L+LA_M, ui->R+LA_M, ui->U, LA_TEXT_ALIGN_CENTER);
     }
 }
 void la_TabDraw(laUiItem *ui, int h){
@@ -515,7 +515,7 @@ void la_TabDraw(laUiItem *ui, int h){
         tnsVertex2d(ui->L + l, ui->U + h); tnsVertex2d(ui->L + l, ui->U);
         tnsVertex2d(ui->L + l + w, ui->U); tnsVertex2d(ui->L + l + w, ui->U + h);
         tnsPackAs(IsThisPage?GL_LINE_STRIP:GL_LINE_LOOP);
-        tnsDrawStringAuto(transLate(uil->TabName->Ptr), laThemeColor(bt,IsThisPage?LA_BT_BORDER:LA_BT_TEXT), ui->L+l+bt->LM, ui->L+l+w-bt->RM, ui->U, LA_TEXT_ALIGN_CENTER);
+        tnsDrawStringAuto(transLate(uil->TabName->Ptr), laThemeColor(bt,IsThisPage?LA_BT_BORDER:LA_BT_TEXT), ui->L+l+LA_M, ui->L+l+w-LA_M, ui->U, LA_TEXT_ALIGN_CENTER);
         page++;
     }
     tnsFlush();
@@ -690,10 +690,10 @@ void la_IntDraw(laUiItem *ui, int h){
                 tnsColor4dv(laThemeColor(bt, LA_BT_TEXT));
                 la_SingleLineStringDrawSelection(ui, _L, _U, bt, buf, ui->Extra->Edit);
 
-                tnsDrawStringM(0, buf, laThemeColor(bt, LA_BT_TEXT_ACTIVE), _L + bt->LM, _R - bt->RM, _U, ui->Flags);
+                tnsDrawStringM(0, buf, laThemeColor(bt, LA_BT_TEXT_ACTIVE), _L + LA_M, _R - LA_M, _U, ui->Flags);
             }else{
                 tnsDrawStringWithPriority(NoLabel?0:buf2, buf,
-                    IsDisabled?laThemeColor(bt, LA_BT_DISABLED):laThemeColor(bt, LA_BT_TEXT|ui->State), bt->TextAlign, _L + bt->LM, _R - bt->RM, _U, ui->Flags);//, ui->ExtraInstructions);
+                    IsDisabled?laThemeColor(bt, LA_BT_DISABLED):laThemeColor(bt, LA_BT_TEXT|ui->State), bt->TextAlign, _L + LA_M, _R - LA_M, _U, ui->Flags);//, ui->ExtraInstructions);
             }
         }
 
@@ -820,10 +820,10 @@ void la_FloatDraw(laUiItem *ui, int h){
                 tnsColor4dv(laThemeColor(bt, LA_BT_TEXT));
                 la_SingleLineStringDrawSelection(ui, _L, _U, bt, buf, ui->Extra->Edit);
 
-                tnsDrawStringM(0, buf, laThemeColor(bt, LA_BT_TEXT_ACTIVE), _L + bt->LM, _R - bt->RM, _U, ui->Flags);
+                tnsDrawStringM(0, buf, laThemeColor(bt, LA_BT_TEXT_ACTIVE), _L + LA_M, _R - LA_M, _U, ui->Flags);
             }else{
                 tnsDrawStringWithPriority(NoLabel?0:buf2, buf,
-                    IsDisabled?laThemeColor(bt, LA_BT_DISABLED):laThemeColor(bt, LA_BT_TEXT|ui->State), bt->TextAlign, _L + bt->LM, _R - bt->RM, _U, ui->Flags);//, ui->ExtraInstructions);
+                    IsDisabled?laThemeColor(bt, LA_BT_DISABLED):laThemeColor(bt, LA_BT_TEXT|ui->State), bt->TextAlign, _L + LA_M, _R - LA_M, _U, ui->Flags);//, ui->ExtraInstructions);
             }
         }
         if (ui->Extra && ui->Extra->On == i + 1) ui->State = Original;
@@ -961,7 +961,7 @@ void la_EnumSelectorDraw(laUiItem *ui, int h){
             if (ico) tnsDrawIcon(ico, laThemeColor(bt, LA_BT_TEXT|ExtraState), _L,iconR, _U, LA_TEXT_ALIGN_CENTER|ui->Flags);
             if(!IconOnly){
                 int UseFlags=ui->Flags; if(!HasIcon && IsExpand){ if(!(UseFlags&LA_TEXT_ALIGN)); UseFlags|=LA_TEXT_ALIGN_CENTER; }
-                tnsDrawStringAuto(buf, laThemeColor(bt, LA_BT_TEXT|ExtraState), _L+bt->LM+(HasIcon?LA_RH:0), _R-bt->RM, _U, UseFlags);
+                tnsDrawStringAuto(buf, laThemeColor(bt, LA_BT_TEXT|ExtraState), _L+LA_M+(HasIcon?LA_RH:0), _R-LA_M, _U, UseFlags);
             }
             if (!IsExpand && !IsVertical && !IconOnly && !IsCycle && !NoEvent){
                 tnsDrawIcon(U'🔻', laThemeColor(bt, LA_BT_TEXT|ExtraState), _R-LA_RH, _R, _U, ui->Flags);
@@ -1029,12 +1029,12 @@ void la_ButtonDraw(laUiItem *ui, int h){
         }
     }
 
-    if (IconID) L = ui->L + bt->LM  + h;
-    else L = ui->L + bt->LM;
+    if (IconID) L = ui->L + LA_M  + h;
+    else L = ui->L + LA_M;
 
     if (IconID) tnsDrawIcon(IconID, laThemeColor(bt, ui->State|LA_BT_TEXT), ui->L, IconOnly?(ui->R):(ui->L+LA_RH), ui->U, LA_TEXT_ALIGN_CENTER);
 
-    if (!IconOnly) tnsDrawStringAuto(label, laThemeColor(bt, ui->State|LA_BT_TEXT), L, ui->R-bt->RM, ui->U, ui->Flags);
+    if (!IconOnly) tnsDrawStringAuto(label, laThemeColor(bt, ui->State|LA_BT_TEXT), L, ui->R-LA_M, ui->U, ui->Flags);
 }
 void la_LabelDraw(laUiItem *ui, int h){
     laBoxedTheme *bt = (*ui->Type->Theme);
@@ -1059,20 +1059,20 @@ void la_SingleLineStringDrawSelection(laUiItem *ui, int Begin, int U, laBoxedThe
     tnsUseNoTexture();
     if (!strHasSelection(se)){
         tnsColor4dv(laAccentColor(LA_BT_TEXT));
-        int L = (se->CursorBefore ? tnsStringGetWidthU(str, se->CursorBefore, ui->Flags&LA_TEXT_MONO) : 0) + Begin + bt->LM;
-        tnsVertex2d(L-1, U + LA_RH - bt->BM);
-        tnsVertex2d(L-1, U + bt->TM);
-        tnsVertex2d(L+2, U + bt->TM);
-        tnsVertex2d(L+2, U + LA_RH - bt->BM);
+        int L = (se->CursorBefore ? tnsStringGetWidthU(str, se->CursorBefore, ui->Flags&LA_TEXT_MONO) : 0) + Begin + LA_M;
+        tnsVertex2d(L-1, U + LA_RH - LA_M);
+        tnsVertex2d(L-1, U + LA_M);
+        tnsVertex2d(L+2, U + LA_M);
+        tnsVertex2d(L+2, U + LA_RH - LA_M);
         tnsPackAs(GL_TRIANGLE_FAN);
     }else{
-        int L = (se->BeginBefore ? tnsStringGetWidthU(str, se->BeginBefore, ui->Flags&LA_TEXT_MONO) : 0) + Begin + bt->LM;
-        int R = (se->EndBefore ? tnsStringGetWidthU(str, se->EndBefore, ui->Flags&LA_TEXT_MONO) : 0) + Begin + bt->LM;
+        int L = (se->BeginBefore ? tnsStringGetWidthU(str, se->BeginBefore, ui->Flags&LA_TEXT_MONO) : 0) + Begin + LA_M;
+        int R = (se->EndBefore ? tnsStringGetWidthU(str, se->EndBefore, ui->Flags&LA_TEXT_MONO) : 0) + Begin + LA_M;
         tnsColor4dv(laAccentColor(LA_BT_NORMAL));
-        tnsVertex2d(L, U + bt->TM);
-        tnsVertex2d(L, U + LA_RH - bt->BM);
-        tnsVertex2d(R, U + LA_RH - bt->TM);
-        tnsVertex2d(R, U + bt->BM);
+        tnsVertex2d(L, U + LA_M);
+        tnsVertex2d(L, U + LA_RH - LA_M);
+        tnsVertex2d(R, U + LA_RH - LA_M);
+        tnsVertex2d(R, U + LA_M);
         tnsPackAs(GL_TRIANGLE_FAN);
     }
 }
@@ -1104,10 +1104,10 @@ void la_SingleLineStringDraw(laUiItem *ui, int h){
         laGetString(&ui->PP, _temp, &temp);
     }
 
-    if (line) la_SingleLineStringDrawSelection(ui, ui->L+(NoDecal?0:bt->LM), ui->U, bt, line, ui->Extra->Edit);
+    if (line) la_SingleLineStringDrawSelection(ui, ui->L+(NoDecal?0:LA_M), ui->U, bt, line, ui->Extra->Edit);
 
     if(ui->PP.LastPs->p->CanTranslate){ temp=transLate(temp); }
-    tnsDrawStringAutoM(line?0:temp, line, IsDisabled?laThemeColor(bt,LA_BT_TEXT|LA_UI_DISABLED):laThemeColor(bt,LA_BT_TEXT), ui->L+(NoDecal?0:bt->LM), ui->R-(NoDecal?0:bt->RM), ui->U, ui->Flags);
+    tnsDrawStringAutoM(line?0:temp, line, IsDisabled?laThemeColor(bt,LA_BT_TEXT|LA_UI_DISABLED):laThemeColor(bt,LA_BT_TEXT), ui->L+(NoDecal?0:LA_M), ui->R-(NoDecal?0:LA_M), ui->U, ui->Flags);
 }
 void la_MultiStringDraw(laUiItem *ui, int h){
     laBoxedTheme *bt = (*ui->Type->Theme);
@@ -1116,7 +1116,7 @@ void la_MultiStringDraw(laUiItem *ui, int h){
 
     if (!ui->State) ui->State = LA_UI_NORMAL;
 
-    int NumberWidth=bt->LM;
+    int NumberWidth=LA_M;
 
 
     if((!ui->Extra->Edit) || (ui->Extra->Ptr1!=ui->PP.EndInstance)){
@@ -1131,7 +1131,7 @@ void la_MultiStringDraw(laUiItem *ui, int h){
 
     if (ui->State!=LA_UI_ACTIVE){
         strSetEditViewRange(ui->Extra->Edit,
-            ui->Extra->HeightCoeff>0?ui->Extra->HeightCoeff:((ui->B-ui->U)/LA_RH),(ui->R-ui->L-NumberWidth-bt->LM*2-bt->RM)/MonoWidth);
+            ui->Extra->HeightCoeff>0?ui->Extra->HeightCoeff:((ui->B-ui->U)/LA_RH),(ui->R-ui->L-NumberWidth-LA_M*2-LA_M)/MonoWidth);
     }
 
     if(!NoDecal){
@@ -1164,12 +1164,12 @@ void la_MultiStringDraw(laUiItem *ui, int h){
             tnsPackAs(GL_TRIANGLE_STRIP);
         }
     }else{
-        NumberWidth=bt->LM;
+        NumberWidth=LA_M;
     }
 
     tnsColor4dv(laThemeColor(bt, LA_BT_TEXT));
 
-    int Line=0, Skip=0, _L=ui->L+NumberWidth+bt->LM; char num[10]={0};
+    int Line=0, Skip=0, _L=ui->L+NumberWidth+LA_M; char num[10]={0};
     for(laStringLine* sl=se->Lines.pFirst;sl;sl=sl->Item.pNext){
         int UseLine=Line+Skip;
         if(UseLine<se->ViewStartLine){ Skip++; continue; }
@@ -1177,7 +1177,7 @@ void la_MultiStringDraw(laUiItem *ui, int h){
         int slen=strlenU(sl->Buf);
         sprintf(num,"%d", UseLine+1); int LineU=ui->U+Line*LA_RH;
         tnsDrawStringM(num, 0, laThemeColor(bt, ((UseLine==se->CursorLine)?LA_BT_NORMAL:LA_BT_TEXT)),
-             _L-bt->LM -(tnsStringGetWidth(num, 0, ui->Flags&LA_TEXT_MONO)), ui->R, LineU, ui->Flags);
+             _L-LA_M -(tnsStringGetWidth(num, 0, ui->Flags&LA_TEXT_MONO)), ui->R, LineU, ui->Flags);
         if(slen>=se->ViewStartCol){
             tnsDrawStringM(0, &sl->Buf[se->ViewStartCol], laThemeColor(bt, ui->State|LA_BT_TEXT), _L, ui->R, LineU, ui->Flags|LA_TEXT_OVERFLOW_ARROW);
         }
@@ -1204,11 +1204,11 @@ void la_MultiStringDraw(laUiItem *ui, int h){
     }
 
     if(ui->Extra->HeightCoeff>=0)
-        tnsDrawStringAuto("◿",laThemeColor(bt,LA_BT_BORDER),ui->R-LA_RH, ui->R, ui->B-bt->BM-LA_RH, LA_TEXT_ALIGN_CENTER);
+        tnsDrawStringAuto("◿",laThemeColor(bt,LA_BT_BORDER),ui->R-LA_RH, ui->R, ui->B-LA_M-LA_RH, LA_TEXT_ALIGN_CENTER);
 
     if(!NoDecal){
         char buf[100]={0}; sprintf(buf, "%d,%d | %d Lines", se->CursorLine+1, se->CursorBefore+1, se->TotalLines);
-        tnsDrawStringAuto(buf,laThemeColor(bt,LA_BT_BORDER),ui->L, ui->R-LA_RH, ui->B-bt->BM-LA_RH, LA_TEXT_MONO|LA_TEXT_ALIGN_RIGHT);
+        tnsDrawStringAuto(buf,laThemeColor(bt,LA_BT_BORDER),ui->L, ui->R-LA_RH, ui->B-LA_M-LA_RH, LA_TEXT_MONO|LA_TEXT_ALIGN_RIGHT);
     }
     
     //if (ui->Extra && ui->Extra->Edit) la_SingleLineStringDrawSelection(ui, ui->L, ui->U, bt, temp, ui->Extra->Edit);
@@ -1232,8 +1232,8 @@ void la_UiSeperatorDraw(laUiItem *ui, int h){
 }
 void la_ColorCircleDrawHCY(laUiItem *ui, int h){
     laBoxedTheme *bt = (*ui->Type->Theme);
-    real c = (real)((ui->R + ui->L) / 2) - h / 2; /*- bt->RM*/
-    real r = (ui->B - ui->U - bt->TP - bt->BP) / 2;
+    real c = (real)((ui->R + ui->L) / 2) - h / 2; /*- LA_M*/
+    real r = (ui->B - ui->U - LA_M - LA_M) / 2;
     int i = 0;
     real colors[584]={0}; //4*72*2+4*2
     real verts[292]={0}; //72*2*2+2*2
@@ -1311,8 +1311,8 @@ void la_ColorCircleDrawHCY(laUiItem *ui, int h){
 
     pi_4 = TNS_PI / 4;
 
-    tnsMakeArc2d(&verts[26], 12, c, ui->U + r, r + bt->LM + h, pi_4, -pi_4);
-    tnsMakeArc2d(verts, 12, c, ui->U + r, r + bt->LM, pi_4, -pi_4);
+    tnsMakeArc2d(&verts[26], 12, c, ui->U + r, r + LA_M + h, pi_4, -pi_4);
+    tnsMakeArc2d(verts, 12, c, ui->U + r, r + LA_M, pi_4, -pi_4);
     tnsMakeLinerGradient4d(&colors[52], 13, 0, 0, 0, 1, 1, 1, 1, 1);
     tnsMakeLinerGradient4d(colors, 13, 0, 0, 0, 1, 1, 1, 1, 1);
     tnsMakeBridgedIndex(index, 13, 0, 0);
@@ -1321,7 +1321,7 @@ void la_ColorCircleDrawHCY(laUiItem *ui, int h){
     tnsIndexArray(index, 26);
     tnsPackAs(GL_TRIANGLE_STRIP);
 
-    tnsMakeArc2d(&verts[26], 12, c, ui->U + r, r + bt->LM + h, -pi_4, pi_4);
+    tnsMakeArc2d(&verts[26], 12, c, ui->U + r, r + LA_M + h, -pi_4, pi_4);
     tnsColor4dv(laThemeColor(bt,LA_BT_BORDER));
     tnsVertexArray2d(verts, 26);
     tnsPackAs(GL_LINE_LOOP);
@@ -1356,13 +1356,13 @@ void la_ColorCircleDrawHCY(laUiItem *ui, int h){
     tnsPackAs(GL_LINE_LOOP);
     tnsLineWidth(1);
 
-    if(ui->Extra->HeightCoeff>=0) tnsDrawStringAuto("◿",laThemeColor(bt,LA_BT_BORDER),ui->R-LA_RH, ui->R, ui->B-bt->BM-LA_RH, LA_TEXT_ALIGN_CENTER);
+    if(ui->Extra->HeightCoeff>=0) tnsDrawStringAuto("◿",laThemeColor(bt,LA_BT_BORDER),ui->R-LA_RH, ui->R, ui->B-LA_M-LA_RH, LA_TEXT_ALIGN_CENTER);
 
-    if(IsClay) tnsDrawStringAuto("Clay",laThemeColor(bt,LA_BT_TEXT),ui->L, c-r+LA_RH, ui->U+bt->TM, LA_TEXT_ALIGN_RIGHT|LA_TEXT_MONO);
-    if(IsP3) tnsDrawStringAuto("D65 P3",laThemeColor(bt,LA_BT_TEXT),ui->L, c-r+LA_RH, ui->U+bt->TM, LA_TEXT_ALIGN_RIGHT|LA_TEXT_MONO);
+    if(IsClay) tnsDrawStringAuto("Clay",laThemeColor(bt,LA_BT_TEXT),ui->L, c-r+LA_RH, ui->U+LA_M, LA_TEXT_ALIGN_RIGHT|LA_TEXT_MONO);
+    if(IsP3) tnsDrawStringAuto("D65 P3",laThemeColor(bt,LA_BT_TEXT),ui->L, c-r+LA_RH, ui->U+LA_M, LA_TEXT_ALIGN_RIGHT|LA_TEXT_MONO);
     char bufinfo[64];
     sprintf(bufinfo,"%s%s",ShowInfo?"🛈":"",ShowProof?"🖶":"");
-    if(ShowInfo||ShowProof) tnsDrawStringAuto(bufinfo,laThemeColor(bt,LA_BT_TEXT),c-r, ui->R, ui->B-bt->BM-LA_RH, LA_TEXT_ALIGN_LEFT);
+    if(ShowInfo||ShowProof) tnsDrawStringAuto(bufinfo,laThemeColor(bt,LA_BT_TEXT),c-r, ui->R, ui->B-LA_M-LA_RH, LA_TEXT_ALIGN_LEFT);
 
     tnsFlush();
 
@@ -1384,7 +1384,7 @@ void la_MenuItemDraw(laUiItem *ui, int h){
         tnsVertex2d(ui->R, ui->B); tnsVertex2d(ui->L, ui->B);
         tnsPackAs(GL_LINE_LOOP);
     }
-    tnsDrawStringAuto(transLate(ui->Display->Ptr), laThemeColor(bt, LA_BT_TEXT|ui->State), ui->L+bt->LM, ui->R, ui->U, ui->Flags);
+    tnsDrawStringAuto(transLate(ui->Display->Ptr), laThemeColor(bt, LA_BT_TEXT|ui->State), ui->L+LA_M, ui->R, ui->U, ui->Flags);
 }
 void la_ConditionToggleDraw(laUiItem *ui, int h){
     laBoxedTheme *bt = (*ui->Type->Theme);
@@ -1424,9 +1424,9 @@ void la_ConditionToggleDraw(laUiItem *ui, int h){
         }
     }
     if (buf[0]){ sprintf(buf2,"%s%s",transLate(buf),(NoDecal&&(ui->State==LA_UI_NORMAL))?" [...]":""); }
-    if (buf2[0]) tnsDrawStringAuto(buf2, laThemeColor(bt, LA_BT_TEXT|UseState), ui->L+bt->LM, ui->R-bt->RM, ui->U, ui->Flags);
+    if (buf2[0]) tnsDrawStringAuto(buf2, laThemeColor(bt, LA_BT_TEXT|UseState), ui->L+LA_M, ui->R-LA_M, ui->U, ui->Flags);
     else
-        tnsDrawStringAuto(ui->State == LA_UI_ACTIVE ? "⯆" : "⯈", laThemeColor(bt, LA_BT_TEXT|UseState), ui->L+bt->LM, ui->R-bt->RM, ui->U, ui->Flags);
+        tnsDrawStringAuto(ui->State == LA_UI_ACTIVE ? "⯆" : "⯈", laThemeColor(bt, LA_BT_TEXT|UseState), ui->L+LA_M, ui->R-LA_M, ui->U, ui->Flags);
 }
 void la_DrawColumnAdjusterRecursive(int U, int B, laColumn *c, int W, tnsVector3d color, int LeftMost){
     if (c->LS){
@@ -1442,25 +1442,25 @@ void la_ColumnAdjusterDraw(laUiItem *ui, int h){
 
     tnsUseNoTexture();
     tnsColor4dv(laThemeColor(bt,LA_BT_TEXT));
-    la_DrawColumnAdjusterRecursive(ui->U, ui->U + LA_RH, ui->C, (bt->LM+bt->RM)/2, laThemeColor(bt, LA_BT_TEXT), ui->C->IL);
+    la_DrawColumnAdjusterRecursive(ui->U, ui->U + LA_RH, ui->C, (LA_M+LA_M)/2, laThemeColor(bt, LA_BT_TEXT), ui->C->IL);
 }
 void la_ColumnViewerDraw(laUiItem *ui, int h){
     laBoxedTheme *bt = (*ui->Type->Theme);
     laColumn *c = ui->PP.EndInstance;
-    int W = ui->R - ui->L - bt->LM - bt->RM;
+    int W = ui->R - ui->L - LA_M - LA_M;
     //if (c->IR == c->IL)
     //    return;
     int T = c->Top->IR - c->Top->IL;
-    int L = (int)((real)(c->IL - c->Top->IL) * W / T) + ui->L + bt->LM,
-        R = (int)((real)(c->IR - c->Top->IL) * W / T) + ui->L + bt->LM;
+    int L = (int)((real)(c->IL - c->Top->IL) * W / T) + ui->L + LA_M,
+        R = (int)((real)(c->IR - c->Top->IL) * W / T) + ui->L + LA_M;
 
     tnsUseNoTexture();
     tnsColor4dv(laThemeColor(bt,LA_BT_BORDER));
 
-    tnsVertex2d(L, ui->U + bt->TM);
-    tnsVertex2d(R, ui->U + bt->TM);
-    tnsVertex2d(R, ui->B - bt->BM);
-    tnsVertex2d(L, ui->B - bt->BM);
+    tnsVertex2d(L, ui->U + LA_M);
+    tnsVertex2d(R, ui->U + LA_M);
+    tnsVertex2d(R, ui->B - LA_M);
+    tnsVertex2d(L, ui->B - LA_M);
     tnsPackAs(GL_TRIANGLE_FAN);
 }
 void la_NodeSocketDraw(laUiItem *ui, int h){
@@ -1521,7 +1521,7 @@ void la_MapperDraw(laUiItem *ui, int h){
 
     laPropContainer* pc=la_EnsureSubTarget(ui->PP.LastPs->p,ui->PP.EndInstance);
     if(!pc || pc!=LA_PC_MAPPER || !ui->PP.EndInstance){
-        tnsDrawStringAuto("Property is not a la_value_mapper.",0,ui->L+bt->LM,ui->R-bt->RM,bt->TM,LA_TEXT_LINE_WRAP); return;
+        tnsDrawStringAuto("Property is not a la_value_mapper.",0,ui->L+LA_M,ui->R-LA_M,LA_M,LA_TEXT_LINE_WRAP); return;
     }
 
     laValueMapper* vm=ui->PP.EndInstance; int any=0;
@@ -1624,14 +1624,14 @@ void la_ValueMeterType1Draw(laUiItem *ui, int h){
 
         if(!NoLabel){
             if(Len==1){ sprintf(buf,"%s",ui->PP.LastPs->p->Name); } else{ if(i<8)sprintf(buf,"%s",prefix[i]); }
-            if(buf[0]) tnsDrawStringAuto(buf, laThemeColor(bt, LA_BT_TEXT), _L + bt->LM, _R - bt->RM, _U, ui->Flags);//, ui->ExtraInstructions);
+            if(buf[0]) tnsDrawStringAuto(buf, laThemeColor(bt, LA_BT_TEXT), _L + LA_M, _R - LA_M, _U, ui->Flags);//, ui->ExtraInstructions);
         }
         if(IsVertical){
-            if(oflow){ tnsDrawStringAuto("⯆",laThemeColor(bt, LA_BT_TEXT), _L+bt->LM,_R-bt->RM, _U, LA_TEXT_ALIGN_CENTER); }
-            elif(ofhigh){ tnsDrawStringAuto("⯅",laThemeColor(bt, LA_BT_TEXT), _L+bt->LM,_R-bt->RM, _B-LA_RH, LA_TEXT_ALIGN_CENTER); }
+            if(oflow){ tnsDrawStringAuto("⯆",laThemeColor(bt, LA_BT_TEXT), _L+LA_M,_R-LA_M, _U, LA_TEXT_ALIGN_CENTER); }
+            elif(ofhigh){ tnsDrawStringAuto("⯅",laThemeColor(bt, LA_BT_TEXT), _L+LA_M,_R-LA_M, _B-LA_RH, LA_TEXT_ALIGN_CENTER); }
         }else{
-            if(oflow){ tnsDrawStringAuto("⯇",laThemeColor(bt, LA_BT_TEXT), _L+bt->LM,_R-bt->RM, _U, LA_TEXT_ALIGN_LEFT); }
-            elif(ofhigh){ tnsDrawStringAuto("⯈",laThemeColor(bt, LA_BT_TEXT), _L+bt->LM,_R-bt->RM, _U, LA_TEXT_ALIGN_RIGHT); }
+            if(oflow){ tnsDrawStringAuto("⯇",laThemeColor(bt, LA_BT_TEXT), _L+LA_M,_R-LA_M, _U, LA_TEXT_ALIGN_LEFT); }
+            elif(ofhigh){ tnsDrawStringAuto("⯈",laThemeColor(bt, LA_BT_TEXT), _L+LA_M,_R-LA_M, _U, LA_TEXT_ALIGN_RIGHT); }
         }
     }
 
@@ -1768,17 +1768,17 @@ void la_ValueMeterType2Draw(laUiItem *ui, int h){
                 real sfac = (real)(val-min) / (max - min); int smove=Move-sfac*ScaleLen;
                     if(IsInt) sprintf(buf,"%.0lf",val/times); else sprintf(buf,"%.2lf",val/times);
                 if(IsVertical){ int scaleb=cy+smove; if(scaleb>_B+LA_RH2 || scaleb<_U-LA_RH2) continue;
-                    tnsDrawStringAuto(buf,laThemeColor(bt,LA_BT_TEXT),_L+bt->LM,_R-bt->RM,scaleb-LA_RH2,ui->Flags);
+                    tnsDrawStringAuto(buf,laThemeColor(bt,LA_BT_TEXT),_L+LA_M,_R-LA_M,scaleb-LA_RH2,ui->Flags);
                 }else{ int scalel=cx-smove; if(scalel<_L-100 || scalel>_R+100) continue;
                     tnsDrawStringAuto(buf,laThemeColor(bt,LA_BT_TEXT),scalel-100,scalel+100,_U,ui->Flags);
                 }
             }
             if(IsVertical){
-                tnsDrawStringAuto(limits[0],laThemeColor(bt,LA_BT_TEXT|ui->State),_L+bt->LM,_R-bt->RM,_SB,ui->Flags);
-                tnsDrawStringAuto(limits[1],laThemeColor(bt,LA_BT_TEXT|ui->State),_L+bt->LM,_R-bt->RM,_SU-LA_RH,ui->Flags);
+                tnsDrawStringAuto(limits[0],laThemeColor(bt,LA_BT_TEXT|ui->State),_L+LA_M,_R-LA_M,_SB,ui->Flags);
+                tnsDrawStringAuto(limits[1],laThemeColor(bt,LA_BT_TEXT|ui->State),_L+LA_M,_R-LA_M,_SU-LA_RH,ui->Flags);
             }else{
-                tnsDrawStringAuto(limits[0],laThemeColor(bt,LA_BT_TEXT|ui->State),_SL-100,_SL-bt->LM,_B-LA_RH,LA_TEXT_ALIGN_RIGHT);
-                tnsDrawStringAuto(limits[1],laThemeColor(bt,LA_BT_TEXT|ui->State),_SR+bt->RM,_SR+100,_B-LA_RH,LA_TEXT_ALIGN_LEFT);
+                tnsDrawStringAuto(limits[0],laThemeColor(bt,LA_BT_TEXT|ui->State),_SL-100,_SL-LA_M,_B-LA_RH,LA_TEXT_ALIGN_RIGHT);
+                tnsDrawStringAuto(limits[1],laThemeColor(bt,LA_BT_TEXT|ui->State),_SR+LA_M,_SR+100,_B-LA_RH,LA_TEXT_ALIGN_LEFT);
             }
         }
 
@@ -1789,8 +1789,8 @@ void la_ValueMeterType2Draw(laUiItem *ui, int h){
         tnsPackAs(GL_LINES);
 
         if(times!=1){ sprintf(buf,"%d",times10);
-            if(IsVertical && cw>LA_RH) tnsDrawStringAuto(buf,laAccentColor(LA_BT_BORDER),_L+bt->LM,_R-bt->RM,cy,LA_TEXT_MONO|LA_TEXT_ALIGN_RIGHT);
-            elif(ch>LA_RH) tnsDrawStringAuto(buf,laAccentColor(LA_BT_BORDER),cx+bt->LM,cx+100,_U,LA_TEXT_MONO|LA_TEXT_ALIGN_LEFT);
+            if(IsVertical && cw>LA_RH) tnsDrawStringAuto(buf,laAccentColor(LA_BT_BORDER),_L+LA_M,_R-LA_M,cy,LA_TEXT_MONO|LA_TEXT_ALIGN_RIGHT);
+            elif(ch>LA_RH) tnsDrawStringAuto(buf,laAccentColor(LA_BT_BORDER),cx+LA_M,cx+100,_U,LA_TEXT_MONO|LA_TEXT_ALIGN_LEFT);
         }
 
         tnsUseNoTexture();
@@ -1800,11 +1800,11 @@ void la_ValueMeterType2Draw(laUiItem *ui, int h){
         tnsPackAs(GL_LINE_LOOP);
 
         //if(IsVertical){
-        //    if(oflow){ tnsDrawStringAuto("⯆",laThemeColor(bt, LA_BT_TEXT), _L+bt->LM,_R-bt->RM, _U, LA_TEXT_ALIGN_CENTER); }
-        //    elif(ofhigh){ tnsDrawStringAuto("⯅",laThemeColor(bt, LA_BT_TEXT), _L+bt->LM,_R-bt->RM, _B-LA_RH, LA_TEXT_ALIGN_CENTER); }
+        //    if(oflow){ tnsDrawStringAuto("⯆",laThemeColor(bt, LA_BT_TEXT), _L+LA_M,_R-LA_M, _U, LA_TEXT_ALIGN_CENTER); }
+        //    elif(ofhigh){ tnsDrawStringAuto("⯅",laThemeColor(bt, LA_BT_TEXT), _L+LA_M,_R-LA_M, _B-LA_RH, LA_TEXT_ALIGN_CENTER); }
         //}else{
-        //    if(oflow){ tnsDrawStringAuto("⯇",laThemeColor(bt, LA_BT_TEXT), _L+bt->LM,_R-bt->RM, _U, LA_TEXT_ALIGN_LEFT); }
-        //    elif(ofhigh){ tnsDrawStringAuto("⯈",laThemeColor(bt, LA_BT_TEXT), _L+bt->LM,_R-bt->RM, _U, LA_TEXT_ALIGN_RIGHT); }
+        //    if(oflow){ tnsDrawStringAuto("⯇",laThemeColor(bt, LA_BT_TEXT), _L+LA_M,_R-LA_M, _U, LA_TEXT_ALIGN_LEFT); }
+        //    elif(ofhigh){ tnsDrawStringAuto("⯈",laThemeColor(bt, LA_BT_TEXT), _L+LA_M,_R-LA_M, _U, LA_TEXT_ALIGN_RIGHT); }
         //}
 
         tnsPopStringClip();
@@ -2260,6 +2260,11 @@ int la_DetectColumn(laUiItem *ui, int LocalX, int Total){
     return (int)((real)(LocalX - ui->L) / (real)(ui->R - ui->L) * (real)Total);
 }
 
+int la_RejectByUiList(laUiItem*ui, laOperator* a, laEvent* e){
+    laListItemPointer* lip=a->LocalUiLists.pLast; if(!lip) return 0;
+    laUiList* uil=lip->p;
+}
+
 laColumn *la_DetectSplit(laColumn *Root, int LocalX){
     laColumn *result = 0;
     if (!Root->LS) return 0;
@@ -2329,7 +2334,7 @@ int la_ProcessTextEdit(laEvent *e, laStringEdit *se, laUiItem* ui){
     case LA_L_MOUSE_DOWN:
     case LA_MOUSEMOVE:
         if(!ui) return 0;
-        MonoWidth=tnsGetMonoFontAdvance(); _L=(*ui->Type->Theme)->LM*2+ui->L;
+        MonoWidth=tnsGetMonoFontAdvance(); _L=LA_M*2+ui->L;
         int Count=se->TotalLines; while(Count){ Count/=10; _L+=MonoWidth; }
         if(e->type==LA_L_MOUSE_DOWN){
             strSetCursor(se, (e->y-ui->U)/LA_RH+se->ViewStartLine, (real)se->ViewStartCol+((real)e->x-_L)/MonoWidth+0.5); strCancelSelect(se); strLazySelect(se);
@@ -2678,7 +2683,7 @@ int OPMOD_ColorHCY(laOperator *a, laEvent *e){
         return LA_FINISHED_PASS;
     }
 
-    if(e->type == LA_L_MOUSE_DOWN && es->HeightCoeff>=0 && e->x>ui->R-bt->RM-LA_RH && e->y>ui->B-bt->BM-LA_RH){
+    if(e->type == LA_L_MOUSE_DOWN && es->HeightCoeff>=0 && e->x>ui->R-LA_M-LA_RH && e->y>ui->B-LA_M-LA_RH){
         es->Dragging=3; es->LastX=e->x; es->LastY=e->y; es->TargetIndexVali=es->HeightCoeff; return LA_RUNNING;
     }
     if(es->Dragging==3){
@@ -2690,9 +2695,9 @@ int OPMOD_ColorHCY(laOperator *a, laEvent *e){
         return LA_RUNNING;
     }
 
-    real c = (real)((ui->R + ui->L) / 2) - LA_RH / 2; /*- bt->RM;*/
-    real r = (ui->B - ui->U - bt->TP - bt->BP) / 2;
-    real dx = e->x - c, dy = e->y - (ui->U + r + bt->TP);
+    real c = (real)((ui->R + ui->L) / 2) - LA_RH / 2; /*- LA_M;*/
+    real r = (ui->B - ui->U - LA_M - LA_M) / 2;
+    real dx = e->x - c, dy = e->y - (ui->U + r + LA_M);
     real dist = sqrt(dx * dx + dy * dy);
 
     if (e->type == LA_L_MOUSE_DOWN){ ui->State = LA_UI_ACTIVE; laRedrawCurrentPanel(); es->Dragging=(dist<=r)?1:2; }
@@ -3085,7 +3090,7 @@ void la_SetMultistringViewRange(laUiItem* ui, laStringEdit* se, laBoxedTheme* bt
     int NumberWidth=0; int MonoWidth=tnsGetMonoFontAdvance(); int Count=se->TotalLines;
     while(Count){ Count/=10; NumberWidth+=MonoWidth; }
     strSetEditViewRange(ui->Extra->Edit,
-        ui->Extra->HeightCoeff>0?ui->Extra->HeightCoeff:((ui->B-ui->U)/LA_RH),(ui->R-ui->L-NumberWidth-bt->LM*2-bt->RM)/MonoWidth);
+        ui->Extra->HeightCoeff>0?ui->Extra->HeightCoeff:((ui->B-ui->U)/LA_RH),(ui->R-ui->L-NumberWidth-LA_M*2-LA_M)/MonoWidth);
 }
 int OPMOD_MultiString(laOperator *a, laEvent *e){
     laUiItem *ui = a->Instance;
@@ -3130,7 +3135,7 @@ int OPMOD_MultiString(laOperator *a, laEvent *e){
 
     if(laKeyMapExecuteEventEx(a, &ui->ExtraPP, &ui->Type->KeyMapper, e)) return LA_RUNNING;
     
-    if(e->type == LA_L_MOUSE_DOWN && es->HeightCoeff>=0 && e->x>ui->R-bt->RM-LA_RH && e->y>ui->B-bt->BM-LA_RH){
+    if(e->type == LA_L_MOUSE_DOWN && es->HeightCoeff>=0 && e->x>ui->R-LA_M-LA_RH && e->y>ui->B-LA_M-LA_RH){
         es->Dragging=1; es->LastX=e->x; es->LastY=e->y; es->TargetIndexVali=es->HeightCoeff;
         return LA_RUNNING;
     }
@@ -3188,7 +3193,7 @@ int OPMOD_TabSelector(laOperator *a, laEvent *e){
     if (!laIsInBound(e->x, e->y, ui->L, ui->R, ui->U, ui->U+LA_RH)){ return LA_FINISHED; }
 
     if (e->type == LA_L_MOUSE_DOWN){
-        if (ui->Page->HeightCoeff && ui->R - e->x < LA_RH + bt->RM) return LA_RUNNING_PASS;
+        if (ui->Page->HeightCoeff && ui->R - e->x < LA_RH + LA_M) return LA_RUNNING_PASS;
         for (uil = ui->Subs.pFirst; uil; uil = uil->Item.pNext){ count++; }
         page = la_DetectColumn(ui, e->x, count);
         for (uil = ui->Subs.pFirst; uil; uil = uil->Item.pNext){
@@ -3256,9 +3261,8 @@ int OPMOD_Collection(laOperator *a, laEvent *e) {
   if (e->type == LA_L_MOUSE_DOWN && (!laIsPropertyReadOnly(&ui->PP)) &&
       ui->Type != _LA_UI_COLLECTION_SINGLE) {
     laUiList *uil;
+    if (a->ConfirmData) return LA_RUNNING_PASS;
     for (uil = ui->Subs.pFirst; uil; uil = uil->Item.pNext) {
-      if (a->ConfirmData)
-        return LA_RUNNING_PASS;
       if (laIsInBound(e->x, e->y, uil->L, uil->R, uil->U, uil->B)) {
         laRecalcCurrentPanel();
         laPropPack PP = {0};
@@ -3278,7 +3282,7 @@ int OPMOD_Collection(laOperator *a, laEvent *e) {
         return LA_RUNNING_PASS;
       }
     }
-    return LA_RUNNING;
+    return LA_RUNNING_PASS;
   }
   elif (e->type == LA_R_MOUSE_DOWN) {
     laUiList *uil;

+ 18 - 18
resources/la_widgets_viewers.c

@@ -324,14 +324,14 @@ void la_RootObjectDrawOverlay(laUiItem *ui, int h){
     int startx=(ui->R+ui->L)/2-LA_RH2*2;
     int offs=LA_RH/12;
     
-    tnsDrawStringAuto("☰",colork,startx+offs, startx+LA_RH+offs, ui->B-bt->BM-LA_RH+offs, LA_TEXT_ALIGN_CENTER);
-    tnsDrawStringAuto("☰",color,startx, startx+LA_RH, ui->B-bt->BM-LA_RH, LA_TEXT_ALIGN_CENTER);
-    tnsDrawStringAuto(MaxIco,colork,startx+LA_RH+offs, startx+LA_2RH+offs, ui->B-bt->BM-LA_RH+offs, LA_TEXT_ALIGN_CENTER);
-    tnsDrawStringAuto(MaxIco,color,startx+LA_RH, startx+LA_2RH, ui->B-bt->BM-LA_RH, LA_TEXT_ALIGN_CENTER);
+    tnsDrawStringAuto("☰",colork,startx+offs, startx+LA_RH+offs, ui->B-LA_M-LA_RH+offs, LA_TEXT_ALIGN_CENTER);
+    tnsDrawStringAuto("☰",color,startx, startx+LA_RH, ui->B-LA_M-LA_RH, LA_TEXT_ALIGN_CENTER);
+    tnsDrawStringAuto(MaxIco,colork,startx+LA_RH+offs, startx+LA_2RH+offs, ui->B-LA_M-LA_RH+offs, LA_TEXT_ALIGN_CENTER);
+    tnsDrawStringAuto(MaxIco,color,startx+LA_RH, startx+LA_2RH, ui->B-LA_M-LA_RH, LA_TEXT_ALIGN_CENTER);
 
     if(ui->Expand>=0 && ui!=MAIN.CurrentWindow->MaximizedUi){
-        tnsDrawStringAuto("◿",colork,ui->R-LA_RH+offs, ui->R+offs, ui->B-bt->BM-LA_RH+offs, LA_TEXT_ALIGN_CENTER);
-        tnsDrawStringAuto("◿",laThemeColor(bt,LA_BT_BORDER),ui->R-LA_RH, ui->R, ui->B-bt->BM-LA_RH, LA_TEXT_ALIGN_CENTER);
+        tnsDrawStringAuto("◿",colork,ui->R-LA_RH+offs, ui->R+offs, ui->B-LA_M-LA_RH+offs, LA_TEXT_ALIGN_CENTER);
+        tnsDrawStringAuto("◿",laThemeColor(bt,LA_BT_BORDER),ui->R-LA_RH, ui->R, ui->B-LA_M-LA_RH, LA_TEXT_ALIGN_CENTER);
     }
     tnsFlush();
 }
@@ -522,14 +522,14 @@ void la_CanvasDefaultOverlay(laUiItem* ui, int h){
     int startx=(ui->R+ui->L)/2-LA_RH2*2;
     int offs=LA_RH/12;
     
-    tnsDrawStringAuto("☰",colork,startx+offs, startx+LA_RH+offs, ui->B-bt->BM-LA_RH+offs, LA_TEXT_ALIGN_CENTER);
-    tnsDrawStringAuto("☰",color,startx, startx+LA_RH, ui->B-bt->BM-LA_RH, LA_TEXT_ALIGN_CENTER);
-    tnsDrawStringAuto(MaxIco,colork,startx+LA_RH+offs, startx+LA_2RH+offs, ui->B-bt->BM-LA_RH+offs, LA_TEXT_ALIGN_CENTER);
-    tnsDrawStringAuto(MaxIco,color,startx+LA_RH, startx+LA_2RH, ui->B-bt->BM-LA_RH, LA_TEXT_ALIGN_CENTER);
+    tnsDrawStringAuto("☰",colork,startx+offs, startx+LA_RH+offs, ui->B-LA_M-LA_RH+offs, LA_TEXT_ALIGN_CENTER);
+    tnsDrawStringAuto("☰",color,startx, startx+LA_RH, ui->B-LA_M-LA_RH, LA_TEXT_ALIGN_CENTER);
+    tnsDrawStringAuto(MaxIco,colork,startx+LA_RH+offs, startx+LA_2RH+offs, ui->B-LA_M-LA_RH+offs, LA_TEXT_ALIGN_CENTER);
+    tnsDrawStringAuto(MaxIco,color,startx+LA_RH, startx+LA_2RH, ui->B-LA_M-LA_RH, LA_TEXT_ALIGN_CENTER);
 
     if(ui->Expand>=0 && ui!=MAIN.CurrentWindow->MaximizedUi){
-        tnsDrawStringAuto("◿",colork,ui->R-LA_RH+offs, ui->R+offs, ui->B-bt->BM-LA_RH+offs, LA_TEXT_ALIGN_CENTER);
-        tnsDrawStringAuto("◿",laThemeColor(bt,LA_BT_BORDER),ui->R-LA_RH, ui->R, ui->B-bt->BM-LA_RH, LA_TEXT_ALIGN_CENTER);
+        tnsDrawStringAuto("◿",colork,ui->R-LA_RH+offs, ui->R+offs, ui->B-LA_M-LA_RH+offs, LA_TEXT_ALIGN_CENTER);
+        tnsDrawStringAuto("◿",laThemeColor(bt,LA_BT_BORDER),ui->R-LA_RH, ui->R, ui->B-LA_M-LA_RH, LA_TEXT_ALIGN_CENTER);
     }
 
     tnsFlush();
@@ -787,10 +787,10 @@ int OPEXT_3DOr2DViewUiItem(laOperator *a, int ExitCode){
 }
 
 int la_CanvasDetectButtons(laUiItem* ui, laBoxedTheme* bt, int x,int y, int total_buttons, int* very_close){
-    int midx=(ui->R+ui->L)/2-LA_RH2*(total_buttons-1), midy=ui->B-LA_RH2-bt->BM;
-    if(y>ui->B-LA_2RH-bt->BM || y<ui->U+LA_2RH+bt->TM || x<ui->L+LA_2RH+bt->TM || x>ui->R-LA_2RH-bt->RM)
+    int midx=(ui->R+ui->L)/2-LA_RH2*(total_buttons-1), midy=ui->B-LA_RH2-LA_M;
+    if(y>ui->B-LA_2RH-LA_M || y<ui->U+LA_2RH+LA_M || x<ui->L+LA_2RH+LA_M || x>ui->R-LA_2RH-LA_M)
         { if(very_close)*very_close=1; }else return 0;
-    if(y<ui->B-LA_RH-bt->BM)return 0;
+    if(y<ui->B-LA_RH-LA_M)return 0;
     for(int i=0;i<total_buttons;i++){ if(x>=midx-LA_RH2 && x<midx+LA_RH2) return i+1; midx+=LA_RH;}
     return 0;
 }
@@ -813,7 +813,7 @@ int OPMOD_Canvas(laOperator *a, laEvent *e){
     //if(dp = laDetectPanel(x,y) && dp!=p){ return LA_RUNNING_PASS; }
 
     if(e->type&LA_MOUSE_EVENT){
-        if(e->type == LA_L_MOUSE_DOWN && ui->Expand>=0 && e->x>ui->R-bt->RM-LA_RH && e->y>ui->B-bt->BM-LA_RH){
+        if(e->type == LA_L_MOUSE_DOWN && ui->Expand>=0 && e->x>ui->R-LA_M-LA_RH && e->y>ui->B-LA_M-LA_RH){
             ex->Dragging=1; ex->ClickedX=e->x; ex->ClickedY=e->y; ex->TargetIndexVali=ui->Expand;
             return LA_RUNNING;
         }
@@ -858,8 +858,8 @@ int OPMOD_Canvas(laOperator *a, laEvent *e){
                 laUiListRecord* lip=levels.pLast; laUiList* uuil=lip->uil; laUiItem* upui=lip->Item.pPrev?((laUiListRecord*)lip->Item.pPrev)->pui:0; int ran=0;
                 while (lip && upui){
                     if((ran=laPanUiListAuto(uuil, 0, dir*MAIN.ScrollingSpeed*LA_RH,
-                        uuil->L, upui->R-(uuil->ScrollerShownV?(LA_SCROLL_W+bt->RM):0),
-                        uuil->U, upui->B-(*upui->Type->Theme)->BM-(uuil->ScrollerShownH?(LA_SCROLL_W+bt->BM):0)))) break;
+                        uuil->L, upui->R-(uuil->ScrollerShownV?(LA_SCROLL_W+LA_M):0),
+                        uuil->U, upui->B-LA_M-(uuil->ScrollerShownH?(LA_SCROLL_W+LA_M):0)))) break;
                     lip=lip->Item.pPrev; uuil=lip->uil;  upui=lip->Item.pPrev?((laUiListRecord*)lip->Item.pPrev)->pui:0; 
                 }
                 if(ran)laRedrawCurrentPanel();