mirror of https://github.com/buggins/dlangui.git
Merge pull request #524 from and3md/text_fixes
Fixes for TextWidget/MultilineTextWidget
This commit is contained in:
commit
29aa9ab6c2
|
|
@ -115,16 +115,23 @@ class TextWidget : Widget {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
private CalcSaver!(Font, dstring, uint, uint) _measureSaver;
|
private CalcSaver!(Font, dstring, uint, uint, int) _measureSaver;
|
||||||
|
|
||||||
override void measure(int parentWidth, int parentHeight) {
|
override void measure(int parentWidth, int parentHeight) {
|
||||||
FontRef font = font();
|
FontRef font = font();
|
||||||
uint w = (maxLines == 1) ? MAX_WIDTH_UNSPECIFIED :
|
|
||||||
parentWidth - margins.left - margins.right - padding.left - padding.right;
|
uint w;
|
||||||
|
if (maxLines == 1)
|
||||||
|
w = MAX_WIDTH_UNSPECIFIED;
|
||||||
|
else {
|
||||||
|
w = parentWidth - margins.left - margins.right - padding.left - padding.right;
|
||||||
|
if (maxWidth > 0 && maxWidth < w)
|
||||||
|
w = maxWidth - padding.left - padding.right;
|
||||||
|
}
|
||||||
uint flags = textFlags;
|
uint flags = textFlags;
|
||||||
|
|
||||||
// optimization: do not measure if nothing changed
|
// optimization: do not measure if nothing changed
|
||||||
if (_measureSaver.check(font.get, text, w, flags) || _needLayout) {
|
if (_measureSaver.check(font.get, text, w, flags, maxLines) || _needLayout) {
|
||||||
Point sz;
|
Point sz;
|
||||||
if (maxLines == 1) {
|
if (maxLines == 1) {
|
||||||
sz = font.textSize(text, w, 4, 0, flags);
|
sz = font.textSize(text, w, 4, 0, flags);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue