diff --git a/src/commoncomponents/contextmenu/GeneralMenuItem.qml b/src/commoncomponents/contextmenu/GeneralMenuItem.qml index e72dd6160285b41fb980d1aa371327e0407b4f53..d1069e9911805003a09f3f460b5da2fcbbe20117 100644 --- a/src/commoncomponents/contextmenu/GeneralMenuItem.qml +++ b/src/commoncomponents/contextmenu/GeneralMenuItem.qml @@ -45,6 +45,9 @@ MenuItem { property int leftBorderWidth: JamiTheme.menuItemsCommonBorderWidth property int rightBorderWidth: JamiTheme.menuItemsCommonBorderWidth + property int itemImageLeftMargin: 24 + property int itemTextMargin: 20 + signal clicked contentItem: AbstractButton { @@ -69,7 +72,7 @@ MenuItem { id: contextMenuItemImage Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft - Layout.leftMargin: status === Image.Ready ? 24 : 0 + Layout.leftMargin: status === Image.Ready ? itemImageLeftMargin : 0 visible: status === Image.Ready @@ -81,28 +84,41 @@ MenuItem { id: contextMenuItemText Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft - Layout.leftMargin: contextMenuItemImage.status === Image.Ready ? 20 : 10 - Layout.rightMargin: contextMenuItemImage.status === Image.Ready ? 20 : 10 + Layout.leftMargin: contextMenuItemImage.status === Image.Ready ? + itemTextMargin : itemTextMargin / 2 + Layout.rightMargin: contextMenuItemImage.status === Image.Ready ? + itemTextMargin : itemTextMargin / 2 Layout.preferredHeight: itemPreferredHeight - Layout.preferredWidth: JamiTheme.contextMenuItemTextPreferredWidth + Layout.fillWidth: true text: itemName color: JamiTheme.textColor font.pointSize: JamiTheme.textFontSize horizontalAlignment: Text.AlignLeft verticalAlignment: Text.AlignVCenter - elide: Text.ElideRight - - onWidthChanged: { - if (autoTextSizeAdjustment - && width > contextMenuItemText.Layout.preferredWidth) { - if (width > JamiTheme.contextMenuItemTextMaxWidth) - contextMenuItemText.Layout.preferredWidth - = JamiTheme.contextMenuItemTextMaxWidth - else - contextMenuItemText.Layout.preferredWidth = width - itemPreferredWidth += contextMenuItemText.Layout.preferredWidth - - JamiTheme.contextMenuItemTextPreferredWidth + + TextMetrics { + id: contextMenuItemTextMetrics + + font: contextMenuItemText.font + text: contextMenuItemText.text + + onBoundingRectChanged: { + var sizeToCompare = itemPreferredWidth - + (contextMenuItemImage.source.toString().length > 0 ? + itemTextMargin + itemImageLeftMargin + contextMenuItemImage.width : + itemTextMargin / 2) + if (autoTextSizeAdjustment + && boundingRect.width > sizeToCompare) { + if (boundingRect.width > JamiTheme.contextMenuItemTextMaxWidth) { + itemPreferredWidth += JamiTheme.contextMenuItemTextMaxWidth + - JamiTheme.contextMenuItemTextPreferredWidth + + itemTextMargin + contextMenuItemText.elide = Text.ElideRight + } else + itemPreferredWidth += boundingRect.width + itemTextMargin + - sizeToCompare + } } } } diff --git a/src/constant/JamiTheme.qml b/src/constant/JamiTheme.qml index 345fa04a1d895190a3866a628d93585fdb91b3ab..d39931aec5a9fc5a15056f7d5cfaf441dd57de36 100644 --- a/src/constant/JamiTheme.qml +++ b/src/constant/JamiTheme.qml @@ -198,7 +198,7 @@ Item { property real avatarSizeInCall: 130 property real aboutButtonPreferredWidth: 150 property real callButtonPreferredSize: 50 - property real contextMenuItemTextPreferredWidth: 142 + property real contextMenuItemTextPreferredWidth: 152 property real contextMenuItemTextMaxWidth: 182 property int participantCallInStatusViewWidth: 175 property int participantCallInStatusViewHeight: 300