fixed shrunken centered nested elements.
This commit is contained in:
parent
ab449a12e3
commit
5c114b8b69
|
@ -1666,6 +1666,20 @@ Element.prototype.clearPos = function() {
|
||||||
* Positioning
|
* Positioning
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// Help center shrunken nested elements.
|
||||||
|
Screen.prototype.spos =
|
||||||
|
Element.prototype.spos = function() {
|
||||||
|
var pos = this.lpos;
|
||||||
|
if (!pos || !this.shrink) return this;
|
||||||
|
pos.width = pos.xl - pos.xi;
|
||||||
|
pos.height = pos.yl - pos.yi;
|
||||||
|
pos.left = pos.xi;
|
||||||
|
pos.top = pos.yi;
|
||||||
|
pos.right = this.screen.cols - pos.xl;
|
||||||
|
pos.bottom = this.screen.rows - pos.yl;
|
||||||
|
return pos;
|
||||||
|
};
|
||||||
|
|
||||||
// NOTE: When coords are entered in the Element constructor, all of the coords
|
// NOTE: When coords are entered in the Element constructor, all of the coords
|
||||||
// are *relative* to their parent, when retrieving them from `.left`, `.right`,
|
// are *relative* to their parent, when retrieving them from `.left`, `.right`,
|
||||||
// etc members, the coords are absolute. To see the *relative* coords again,
|
// etc members, the coords are absolute. To see the *relative* coords again,
|
||||||
|
@ -1674,6 +1688,8 @@ Element.prototype.clearPos = function() {
|
||||||
Element.prototype.__defineGetter__('left', function() {
|
Element.prototype.__defineGetter__('left', function() {
|
||||||
var left = this.position.left;
|
var left = this.position.left;
|
||||||
|
|
||||||
|
var parent = this.parent.spos();
|
||||||
|
|
||||||
if (typeof left === 'string') {
|
if (typeof left === 'string') {
|
||||||
if (left === 'center') left = '50%';
|
if (left === 'center') left = '50%';
|
||||||
left = +left.slice(0, -1) / 100;
|
left = +left.slice(0, -1) / 100;
|
||||||
|
@ -1687,7 +1703,7 @@ Element.prototype.__defineGetter__('left', function() {
|
||||||
return this.screen.cols - this.width - this.right;
|
return this.screen.cols - this.width - this.right;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (this.parent.left || 0) + left;
|
return (parent.left || 0) + left;
|
||||||
});
|
});
|
||||||
|
|
||||||
Element.prototype.__defineGetter__('right', function() {
|
Element.prototype.__defineGetter__('right', function() {
|
||||||
|
@ -1700,6 +1716,8 @@ Element.prototype.__defineGetter__('right', function() {
|
||||||
Element.prototype.__defineGetter__('top', function() {
|
Element.prototype.__defineGetter__('top', function() {
|
||||||
var top = this.position.top;
|
var top = this.position.top;
|
||||||
|
|
||||||
|
var parent = this.parent.spos();
|
||||||
|
|
||||||
if (typeof top === 'string') {
|
if (typeof top === 'string') {
|
||||||
if (top === 'center') top = '50%';
|
if (top === 'center') top = '50%';
|
||||||
top = +top.slice(0, -1) / 100;
|
top = +top.slice(0, -1) / 100;
|
||||||
|
@ -1713,7 +1731,7 @@ Element.prototype.__defineGetter__('top', function() {
|
||||||
return this.screen.rows - this.height - this.bottom;
|
return this.screen.rows - this.height - this.bottom;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (this.parent.top || 0) + top;
|
return (parent.top || 0) + top;
|
||||||
});
|
});
|
||||||
|
|
||||||
Element.prototype.__defineGetter__('bottom', function() {
|
Element.prototype.__defineGetter__('bottom', function() {
|
||||||
|
@ -2144,15 +2162,6 @@ Box.prototype.render = function(stop) {
|
||||||
xi = ret.xi, xl = ret.xl, yi = ret.yi, yl = ret.yl;
|
xi = ret.xi, xl = ret.xl, yi = ret.yi, yl = ret.yl;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Possibly do something like this, except more complex.
|
|
||||||
// if (this.parent.padding) {
|
|
||||||
// xi += this.parent.padding;
|
|
||||||
// xl += this.parent.padding;
|
|
||||||
// yi += this.parent.padding;
|
|
||||||
// yl += this.parent.padding;
|
|
||||||
// }
|
|
||||||
// if (this.parent.border) xi++, xl++, yi++, yl++;
|
|
||||||
|
|
||||||
ret = {
|
ret = {
|
||||||
xi: xi,
|
xi: xi,
|
||||||
xl: xl,
|
xl: xl,
|
||||||
|
|
|
@ -18,8 +18,10 @@ var inner = blessed.box({
|
||||||
parent: outer,
|
parent: outer,
|
||||||
left: 0,
|
left: 0,
|
||||||
top: 0,
|
top: 0,
|
||||||
width: 5,
|
//width: 5,
|
||||||
height: 5,
|
//height: 5,
|
||||||
|
shrink: true,
|
||||||
|
content: 'foobar',
|
||||||
//padding: 1,
|
//padding: 1,
|
||||||
//content: 'f',
|
//content: 'f',
|
||||||
bg: 'magenta'
|
bg: 'magenta'
|
||||||
|
|
Loading…
Reference in New Issue