From b1d2addda907f3f435e063efb4ce57f5a6efbe7d Mon Sep 17 00:00:00 2001
From: Ksard <tat.xs.ard@gmail.com>
Date: Tue, 14 Jan 2020 10:05:57 +0300
Subject: [PATCH] [*] Update calculating and deleting the unnecessary part of
 text at comboBox

---
 widgets/DapComboBox.qml        | 22 ++++++++++++----------
 widgets/DapComboBoxForm.ui.qml |  2 +-
 2 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/widgets/DapComboBox.qml b/widgets/DapComboBox.qml
index 8bd71b4..b19262e 100644
--- a/widgets/DapComboBox.qml
+++ b/widgets/DapComboBox.qml
@@ -1,13 +1,10 @@
-import QtQuick 2.7
+import QtQuick 2.4
 import QtQuick.Controls 2.0
 
 DapComboBoxForm
 {
     id:dapComboBox
 
-    //temporary variable for the calculating unnecessary part of text
-    property int stringSize
-
     delegate:ItemDelegate
     {
 
@@ -33,6 +30,7 @@ DapComboBoxForm
             anchors.fill: parent
             anchors.topMargin: paddingTopItemDelegate
             anchors.leftMargin: popup.visible ? sidePaddingActive : sidePaddingNormal
+            anchors.rightMargin: popup.visible ? sidePaddingActive : sidePaddingNormal
             font:dapComboBox.font
             //Calculates various properties of a given string of text for a particular font
             TextMetrics
@@ -40,19 +38,23 @@ DapComboBoxForm
                 id: tm
                 font: dapComboBox.font
                 elide: Text.ElideRight
-                elideWidth: parent.width - (popup.visible ? sidePaddingActive : sidePaddingNormal) * 2 - 8*pt
                 text: modelData
+                elideWidth:
+                {
+                    if(index != currentIndex)
+                        return widthPopupComboBoxActive - 2*sidePaddingActive;
+                    else
+                        return widthPopupComboBoxNormal - indicatorWidth ;
+                }
+
             }
             text:
             {
                 if(index != currentIndex)
-                    return modelData;
+                    return tm.elidedText.replace('…', '..');
                 else
                 {
-                    stringSize = tm.elidedText.length;
-                    if(stringSize < modelData.length)
-                        mainLineText = tm.elidedText.substring(0, stringSize-3) + '..';
-                    else mainLineText = modelData;
+                    mainLineText = tm.elidedText.replace('…', '..');
                     return "";
                 }
             }
diff --git a/widgets/DapComboBoxForm.ui.qml b/widgets/DapComboBoxForm.ui.qml
index c16956c..e76aba1 100644
--- a/widgets/DapComboBoxForm.ui.qml
+++ b/widgets/DapComboBoxForm.ui.qml
@@ -102,7 +102,7 @@ ComboBox
         Text 
         {
             id:textTopComboBox
-            anchors.fill: parent
+            anchors.left: parent.left
             anchors.leftMargin: popup.visible ? sidePaddingActive : sidePaddingNormal
             text: mainLineText
             font: parent.font
-- 
GitLab