[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-core-devel
Subject:    [PATCH] Multiline support in KSqueezedTextLabel
From:       Aurélien_Gâteau <aurelien.gateau () free ! fr>
Date:       2008-07-10 21:36:28
Message-ID: 487680DC.5000202 () free ! fr
[Download RAW message or body]

Hello,

Attached patch adds multiline support to KSqueezedTextLabel. Is it ok to 
commit and backport to 4.1?

Aurélien

["ksqueezedtextlabel-handle-multiline.diff" (text/x-diff)]

diff --git a/kdeui/widgets/ksqueezedtextlabel.cpp b/kdeui/widgets/ksqueezedtextlabel.cpp
index 34b0073..83929fc 100644
--- a/kdeui/widgets/ksqueezedtextlabel.cpp
+++ b/kdeui/widgets/ksqueezedtextlabel.cpp
@@ -94,10 +94,20 @@ void KSqueezedTextLabel::setText( const QString &text ) {
 void KSqueezedTextLabel::squeezeTextToLabel() {
   QFontMetrics fm(fontMetrics());
   int labelWidth = size().width();
-  int textWidth = fm.width(d->fullText);
-  if (textWidth > labelWidth) {
-    QString squeezedText = fm.elidedText(d->fullText, d->elideMode, labelWidth);
-    QLabel::setText(squeezedText);
+  QStringList squeezedLines;
+  bool squeezed = false;
+  Q_FOREACH(const QString& line, d->fullText.split("\n")) {
+    int lineWidth = fm.width(line);
+    if (lineWidth > labelWidth) {
+      squeezed = true;
+      squeezedLines << fm.elidedText(line, d->elideMode, labelWidth);
+    } else {
+      squeezedLines << line;
+    }
+  }
+
+  if (squeezed) {
+    QLabel::setText(squeezedLines.join("\n"));
     setToolTip(d->fullText);
   } else {
     QLabel::setText(d->fullText);


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic