diff --git a/include/Mw/StringDefs.h b/include/Mw/StringDefs.h
index a4e999d..8ed73f6 100644
--- a/include/Mw/StringDefs.h
+++ b/include/Mw/StringDefs.h
@@ -34,6 +34,7 @@
#define MwNfillArea "IfillArea"
#define MwNratio "Iratio"
#define MwNfixedSize "IfixedSize"
+#define MwNouterPadding "IouterPadding"
#define MwNtitle "Stitle"
#define MwNtext "Stext"
diff --git a/milsko.xml b/milsko.xml
index 83ef0e3..28a8134 100644
--- a/milsko.xml
+++ b/milsko.xml
@@ -86,6 +86,7 @@
+
@@ -491,6 +492,7 @@
+
diff --git a/src/widget/box.c b/src/widget/box.c
index 777c32e..0789a1b 100644
--- a/src/widget/box.c
+++ b/src/widget/box.c
@@ -7,6 +7,7 @@ static int create(MwWidget handle) {
MwSetInteger(handle, MwNorientation, MwHORIZONTAL);
MwSetInteger(handle, MwNpadding, 0);
+ MwSetInteger(handle, MwNouterPadding, 0);
return 0;
}
@@ -28,9 +29,9 @@ static void layout(MwWidget handle) {
int i;
int sum = 0;
int horiz = MwGetInteger(handle, MwNorientation) == MwHORIZONTAL ? 1 : 0;
- int sz = MwGetInteger(handle, horiz ? MwNwidth : MwNheight) - MwGetInteger(handle, MwNpadding);
- int fsz = MwGetInteger(handle, horiz ? MwNheight : MwNwidth) - MwGetInteger(handle, MwNpadding) * 2;
- int sk = 0;
+ int sz = MwGetInteger(handle, horiz ? MwNwidth : MwNheight) - MwGetInteger(handle, MwNouterPadding) * 2;
+ int fsz = MwGetInteger(handle, horiz ? MwNheight : MwNwidth) - MwGetInteger(handle, MwNouterPadding) * 2;
+ int sk = MwGetInteger(handle, MwNouterPadding);
for(i = 0; i < arrlen(handle->children); i++) {
int n = MwGetInteger(handle->children[i], MwNratio);
@@ -38,7 +39,7 @@ static void layout(MwWidget handle) {
if(n == MwDEFAULT) n = 1;
if(s != MwDEFAULT) {
- sz -= s + MwGetInteger(handle, MwNpadding);
+ sz -= s + ((i != (arrlen(handle->children) - 1)) ? MwGetInteger(handle, MwNpadding) : 0);
} else {
sum += n;
}
@@ -53,17 +54,17 @@ static void layout(MwWidget handle) {
if(s != MwDEFAULT) {
wsz = s;
} else {
- wsz = sz * n / sum - MwGetInteger(handle, MwNpadding);
+ wsz = sz * n / sum;
}
+ wsz -= ((i != (arrlen(handle->children) - 1)) ? MwGetInteger(handle, MwNpadding) : 0);
- sk += MwGetInteger(handle, MwNpadding);
MwVaApply(handle->children[i],
- horiz ? MwNx : MwNy, sk, /* this is what gets changed */
- horiz ? MwNy : MwNx, MwGetInteger(handle, MwNpadding), /* fixed between widgets */
- horiz ? MwNwidth : MwNheight, wsz, /* this is what gets changed */
- horiz ? MwNheight : MwNwidth, fsz, /* fixed between widgets */
+ horiz ? MwNx : MwNy, sk, /* this is what gets changed */
+ horiz ? MwNy : MwNx, MwGetInteger(handle, MwNouterPadding), /* fixed between widgets */
+ horiz ? MwNwidth : MwNheight, wsz, /* this is what gets changed */
+ horiz ? MwNheight : MwNwidth, fsz, /* fixed between widgets */
NULL);
- sk += wsz;
+ sk += wsz + ((i != (arrlen(handle->children) - 1)) ? MwGetInteger(handle, MwNpadding) : 0);
}
}