diff --git a/Linphone/core/search/MagicSearchList.cpp b/Linphone/core/search/MagicSearchList.cpp index f41eecd5a..e7662145f 100644 --- a/Linphone/core/search/MagicSearchList.cpp +++ b/Linphone/core/search/MagicSearchList.cpp @@ -133,6 +133,11 @@ void MagicSearchList::setSelf(QSharedPointer me) { }); } +void MagicSearchList::connectContact(FriendCore *data) { + connect(data, &FriendCore::removed, this, qOverload(&MagicSearchList::remove)); + connect(data, &FriendCore::starredChanged, this, &MagicSearchList::friendStarredChanged); +} + void MagicSearchList::setResults(const QList> &contacts) { for (auto item : mList) { auto isFriendCore = item.objectCast(); @@ -142,12 +147,13 @@ void MagicSearchList::setResults(const QList> &contac qDebug() << log().arg("SetResults: %1").arg(contacts.size()); resetData(contacts); for (auto it : contacts) { - connect(it.get(), &FriendCore::removed, this, qOverload(&MagicSearchList::remove)); - connect(it.get(), &FriendCore::starredChanged, this, &MagicSearchList::friendStarredChanged); + connectContact(it.get()); } } -void MagicSearchList::addResult(const QSharedPointer &contact) { +void MagicSearchList::add(QSharedPointer contact) { + connectContact(contact.get()); + ListProxy::add(contact); } void MagicSearchList::setSearch(const QString &search) { diff --git a/Linphone/core/search/MagicSearchList.hpp b/Linphone/core/search/MagicSearchList.hpp index 84168ec94..a36215bd6 100644 --- a/Linphone/core/search/MagicSearchList.hpp +++ b/Linphone/core/search/MagicSearchList.hpp @@ -41,9 +41,10 @@ public: ~MagicSearchList(); void setSelf(QSharedPointer me); + void connectContact(FriendCore* data); void setSearch(const QString &search); void setResults(const QList> &contacts); - void addResult(const QSharedPointer &contact); + void add(QSharedPointer contact); int getSourceFlags() const; void setSourceFlags(int flags); diff --git a/Linphone/view/Control/Button/PopupButton.qml b/Linphone/view/Control/Button/PopupButton.qml index 989c5668c..50d433784 100644 --- a/Linphone/view/Control/Button/PopupButton.qml +++ b/Linphone/view/Control/Button/PopupButton.qml @@ -76,9 +76,10 @@ Button { onVisibleChanged: { if (!visible) return // Do not use popup.height as it is not consistent. - var position = mainItem.mapToItem(mainItem.Window.contentItem, mainItem.x + popup.implicitContentWidth + popup.padding, mainItem.y + mainItem.height + popup.implicitContentHeight + popup.padding) - if (position.y >= mainItem.Window.height) { - y = -mainItem.height - popup.implicitContentHeight - popup.padding + var popupHeight = mainItem.height + popup.implicitContentHeight + popup.padding + var position = mainItem.mapToItem(mainItem.Window.contentItem, mainItem.x + popup.implicitContentWidth + popup.padding, mainItem.y + popupHeight) + if (position.y + popupHeight >= mainItem.Window.height) { + y = -popupHeight }else { y = mainItem.height + popup.padding } diff --git a/Linphone/view/Control/Display/Contact/AllContactListView.qml b/Linphone/view/Control/Display/Contact/AllContactListView.qml index e1c5631d4..08a06c6b0 100644 --- a/Linphone/view/Control/Display/Contact/AllContactListView.qml +++ b/Linphone/view/Control/Display/Contact/AllContactListView.qml @@ -140,7 +140,7 @@ Flickable{ } function updatePosition(list){ var item = list.itemAtIndex(list.currentIndex) - var centerPos = list.y - height/2 + var centerItemPos = 0 if( item && list.expanded){ // For debugging just in case //var listPosition = item.mapToItem(favoriteList, item.x, item.y) @@ -154,9 +154,10 @@ Flickable{ //console.log("new pos: " +newPosition.x + " / " +newPosition.y) //console.log("header pos: " +headerItem.x + " / " +headerItem.y) //console.log("Moving to " + (headerItem.y+item.y)) - centerPos += item.y + centerItemPos = item.y + list.y + list.headerHeight +item.height/2 } - mainItem.contentY = Math.min(Math.max(0, centerPos), mainItem.contentHeight - mainItem.height) + var centerPos = centerItemPos - height/2 + mainItem.contentY = Math.max(0, Math.min(centerPos, height, contentHeight-height)) } Behavior on contentY{ NumberAnimation { diff --git a/Linphone/view/Control/Display/Contact/ContactListView.qml b/Linphone/view/Control/Display/Contact/ContactListView.qml index b1ae44334..4c045f2a8 100644 --- a/Linphone/view/Control/Display/Contact/ContactListView.qml +++ b/Linphone/view/Control/Display/Contact/ContactListView.qml @@ -42,6 +42,7 @@ ListView { property int itemsRightMargin: 39 * DefaultStyle.dp property bool expanded: true + property int headerHeight: headerItem?.height signal resultsReceived() signal contactDeletionRequested(FriendGui contact) @@ -119,9 +120,6 @@ ListView { id: headerItem width: mainItem.width height: headerContents.implicitHeight - onActiveFocusChanged: { - if(activeFocus) mainItem.updatePosition() - } ColumnLayout { id: headerContents diff --git a/Linphone/view/Page/Main/Contact/ContactPage.qml b/Linphone/view/Page/Main/Contact/ContactPage.qml index 7f89a5745..c6937ce90 100644 --- a/Linphone/view/Page/Main/Contact/ContactPage.qml +++ b/Linphone/view/Page/Main/Contact/ContactPage.qml @@ -769,7 +769,7 @@ AbstractMainPage { text: qsTr("Supprimer ce contact") visible: !mainItem.selectedContact?.core.readOnly onClicked: { - mainItem.deleteContact(contact) + mainItem.deleteContact(mainItem.selectedContact) } } }