diff --git a/example/example_en_US.ts b/example/example_en_US.ts
index cc03fbcc..23ed22bf 100644
--- a/example/example_en_US.ts
+++ b/example/example_en_US.ts
@@ -1968,7 +1968,7 @@ Some contents...
-
+
@@ -1988,57 +1988,57 @@ Some contents...
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/example/example_zh_CN.ts b/example/example_zh_CN.ts
index ab387f56..6117c99f 100644
--- a/example/example_zh_CN.ts
+++ b/example/example_zh_CN.ts
@@ -2110,7 +2110,7 @@ Some contents...
-
+
名称
@@ -2130,57 +2130,57 @@ Some contents...
全选
-
+
年龄
-
+
清除所有
-
+
头像
-
+
地址
-
+
昵称
-
+
长字符串
-
+
操作
-
+
<上一页
-
+
下一页>
-
+
删除选中
-
+
添加一行数据
diff --git a/example/qml/page/T_TableView.qml b/example/qml/page/T_TableView.qml
index 4372033e..fca26434 100644
--- a/example/qml/page/T_TableView.qml
+++ b/example/qml/page/T_TableView.qml
@@ -280,6 +280,26 @@ FluContentPage{
}
}
+ Component{
+ id:com_auto_suggestbox
+ FluAutoSuggestBox {
+ anchors.fill: parent
+ focus: true
+ Component.onCompleted: {
+ var data = ["傲来国界花果山水帘洞","傲来国界坎源山脏水洞","大唐国界黑风山黑风洞","大唐国界黄风岭黄风洞","大唐国界骷髅山白骨洞","宝象国界碗子山波月洞","宝象国界平顶山莲花洞","宝象国界压龙山压龙洞","乌鸡国界号山枯松涧火云洞","乌鸡国界衡阳峪黑水河河神府"]
+ var result = data.map(function(item) {
+ return {title: item};
+ });
+ items = result
+ text= String(display)
+ }
+ onCommit: {
+ editTextChaged(text)
+ tableView.closeEditor()
+ }
+ }
+ }
+
Component{
id:com_avatar
Item{
@@ -490,6 +510,7 @@ FluContentPage{
{
title: qsTr("Address"),
dataIndex: 'address',
+ editDelegate: com_auto_suggestbox,
width:200,
minimumWidth:100,
maximumWidth:250
diff --git a/example/qml/window/MainWindow.qml b/example/qml/window/MainWindow.qml
index 4fff0309..8b92bedc 100644
--- a/example/qml/window/MainWindow.qml
+++ b/example/qml/window/MainWindow.qml
@@ -15,7 +15,7 @@ FluWindow {
title: "FluentUI"
width: 1000
height: 680
- minimumWidth: 1000
+ minimumWidth: 680
minimumHeight: 200
launchMode: FluWindowType.SingleTask
fitsAppBarWindows: true
diff --git a/src/FluFrameless.cpp b/src/FluFrameless.cpp
index 7ae11159..4258b7ef 100644
--- a/src/FluFrameless.cpp
+++ b/src/FluFrameless.cpp
@@ -141,7 +141,6 @@ void FluFrameless::componentComplete() {
const auto uMsg = msg->message;
const auto wParam = msg->wParam;
const auto lParam = msg->lParam;
- static QPoint offsetXY;
if (uMsg == WM_WINDOWPOSCHANGING) {
auto *wp = reinterpret_cast(lParam);
if (wp != nullptr && (wp->flags & SWP_NOSIZE) == 0) {
@@ -163,10 +162,6 @@ void FluFrameless::componentComplete() {
}
int offsetSize;
bool isMaximum = ::IsZoomed(hwnd);
- auto _offsetXY = QPoint(abs(clientRect->left - originalLeft), abs(clientRect->top - originalTop));
- if (_offsetXY.x() != 0) {
- offsetXY = _offsetXY;
- }
if (isMaximum || _isFullScreen()) {
offsetSize = 0;
} else {
@@ -175,19 +170,10 @@ void FluFrameless::componentComplete() {
if (!isCompositionEnabled()) {
offsetSize = 0;
}
-#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
clientRect->top = originalTop + offsetSize;
clientRect->bottom = originalBottom - offsetSize;
clientRect->left = originalLeft + offsetSize;
clientRect->right = originalRight - offsetSize;
-#else
- if (!isMaximum) {
- clientRect->top = originalTop + offsetSize;
- clientRect->bottom = originalBottom - offsetSize;
- clientRect->left = originalLeft + offsetSize;
- clientRect->right = originalRight - offsetSize;
- }
-#endif
_setMaximizeHovered(false);
*result = WVR_REDRAW;
return true;
@@ -266,27 +252,15 @@ void FluFrameless::componentComplete() {
return true;
} else if (uMsg == WM_GETMINMAXINFO) {
auto *minmaxInfo = reinterpret_cast(lParam);
-#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
- minmaxInfo->ptMaxPosition.x = 0;
- minmaxInfo->ptMaxPosition.y = 0;
- minmaxInfo->ptMaxSize.x = 0;
- minmaxInfo->ptMaxSize.y = 0;
- return false;
-#else
auto pixelRatio = window()->devicePixelRatio();
auto geometry = window()->screen()->availableGeometry();
RECT rect;
SystemParametersInfo(SPI_GETWORKAREA, 0, &rect, 0);
- if (!_fixSize) {
- minmaxInfo->ptMinTrackSize.x = qRound(window()->minimumWidth() * pixelRatio + offsetXY.x());
- minmaxInfo->ptMinTrackSize.y = qRound(window()->minimumHeight() * pixelRatio + offsetXY.y() + _appbar->height() * pixelRatio);
- }
- minmaxInfo->ptMaxPosition.x = rect.left - offsetXY.x();
- minmaxInfo->ptMaxPosition.y = rect.top - offsetXY.x();
- minmaxInfo->ptMaxSize.x = qRound(geometry.width() * pixelRatio) + offsetXY.x() * 2;
- minmaxInfo->ptMaxSize.y = qRound(geometry.height() * pixelRatio) + offsetXY.y() * 2;
- return true;
-#endif
+ minmaxInfo->ptMaxPosition.x = rect.left;
+ minmaxInfo->ptMaxPosition.y = rect.top;
+ minmaxInfo->ptMaxSize.x = qRound(geometry.width() * pixelRatio);
+ minmaxInfo->ptMaxSize.y = qRound(geometry.height() * pixelRatio);
+ return false;
} else if (uMsg == WM_NCRBUTTONDOWN) {
if (wParam == HTCAPTION) {
_showSystemMenu(QCursor::pos());
diff --git a/src/Qt5/imports/FluentUI/Controls/FluAutoSuggestBox.qml b/src/Qt5/imports/FluentUI/Controls/FluAutoSuggestBox.qml
index bfa5a147..4cf102ed 100644
--- a/src/Qt5/imports/FluentUI/Controls/FluAutoSuggestBox.qml
+++ b/src/Qt5/imports/FluentUI/Controls/FluAutoSuggestBox.qml
@@ -7,6 +7,7 @@ FluTextBox{
property var items:[]
property string emptyText: qsTr("No results found")
property int autoSuggestBoxReplacement: FluentIcons.Search
+ property string textRole: "title"
property var filter: function(item){
if(item.title.indexOf(control.text)!==-1){
return true
@@ -25,7 +26,7 @@ FluTextBox{
function handleClick(modelData){
control_popup.visible = false
control.itemClicked(modelData)
- control.updateText(modelData.title)
+ control.updateText(modelData[textRole])
}
function loadData(){
var result = []
@@ -48,7 +49,6 @@ FluTextBox{
}
Popup{
id:control_popup
- y:control.height
focus: false
padding: 0
enter: Transition {
@@ -62,7 +62,7 @@ FluTextBox{
contentItem: FluClip{
radius: [5,5,5,5]
ListView{
- id:list_view
+ id: list_view
anchors.fill: parent
clip: true
boundsBehavior: ListView.StopAtBounds
@@ -72,7 +72,7 @@ FluTextBox{
height: visible ? 38 : 0
visible: list_view.count === 0
FluText{
- text:emptyText
+ text: emptyText
anchors{
verticalCenter: parent.verticalCenter
left: parent.left
@@ -81,10 +81,10 @@ FluTextBox{
}
}
delegate:FluControl{
- id:item_control
+ id: item_control
height: 38
width: control.width
- onClicked:{
+ onClicked: {
d.handleClick(modelData)
}
background: Rectangle{
@@ -103,7 +103,7 @@ FluTextBox{
}
}
contentItem: FluText{
- text:modelData.title
+ text: modelData[textRole]
leftPadding: 10
rightPadding: 10
verticalAlignment : Qt.AlignVCenter
@@ -128,7 +128,7 @@ FluTextBox{
if(d.flagVisible){
var pos = control.mapToItem(null, 0, 0)
if(d.window.height>pos.y+control.height+rect_background.implicitHeight){
- control_popup.y = control.height
+ control_popup.y = Qt.binding(function(){return control.height})
} else if(pos.y>rect_background.implicitHeight){
control_popup.y = -rect_background.implicitHeight
} else {
diff --git a/src/Qt5/imports/FluentUI/Controls/FluTableView.qml b/src/Qt5/imports/FluentUI/Controls/FluTableView.qml
index 97703723..b09cab1b 100644
--- a/src/Qt5/imports/FluentUI/Controls/FluTableView.qml
+++ b/src/Qt5/imports/FluentUI/Controls/FluTableView.qml
@@ -196,6 +196,11 @@ Rectangle {
id:com_table_delegate
MouseArea{
id:item_table_mouse
+ TableView.onPooled: {
+ if(d.editPosition && d.editPosition.row === row && d.editPosition.column === column){
+ control.closeEditor()
+ }
+ }
property var rowObject : control.getRow(row)
property var itemModel: model
property bool editVisible: {
@@ -274,9 +279,9 @@ Rectangle {
if(typeof(display) == "object"){
return
}
+ loader_edit.display = display
d.editDelegate = d.getEditDelegate(column)
updateEditPosition()
- loader_edit.display = display
}
onClicked:
(event)=>{
diff --git a/src/Qt6/imports/FluentUI/Controls/FluAutoSuggestBox.qml b/src/Qt6/imports/FluentUI/Controls/FluAutoSuggestBox.qml
index bd5c2d25..18119013 100644
--- a/src/Qt6/imports/FluentUI/Controls/FluAutoSuggestBox.qml
+++ b/src/Qt6/imports/FluentUI/Controls/FluAutoSuggestBox.qml
@@ -6,6 +6,7 @@ FluTextBox{
property var items:[]
property string emptyText: qsTr("No results found")
property int autoSuggestBoxReplacement: FluentIcons.Search
+ property string textRole: "title"
property var filter: function(item){
if(item.title.indexOf(control.text)!==-1){
return true
@@ -24,7 +25,7 @@ FluTextBox{
function handleClick(modelData){
control_popup.visible = false
control.itemClicked(modelData)
- control.updateText(modelData.title)
+ control.updateText(modelData[textRole])
}
function loadData(){
var result = []
@@ -47,7 +48,6 @@ FluTextBox{
}
Popup{
id:control_popup
- y:control.height
focus: false
padding: 0
enter: Transition {
@@ -61,7 +61,7 @@ FluTextBox{
contentItem: FluClip{
radius: [5,5,5,5]
ListView{
- id:list_view
+ id: list_view
anchors.fill: parent
clip: true
boundsBehavior: ListView.StopAtBounds
@@ -71,7 +71,7 @@ FluTextBox{
height: visible ? 38 : 0
visible: list_view.count === 0
FluText{
- text:emptyText
+ text: emptyText
anchors{
verticalCenter: parent.verticalCenter
left: parent.left
@@ -80,10 +80,10 @@ FluTextBox{
}
}
delegate:FluControl{
- id:item_control
+ id: item_control
height: 38
width: control.width
- onClicked:{
+ onClicked: {
d.handleClick(modelData)
}
background: Rectangle{
@@ -102,7 +102,7 @@ FluTextBox{
}
}
contentItem: FluText{
- text:modelData.title
+ text: modelData[textRole]
leftPadding: 10
rightPadding: 10
verticalAlignment : Qt.AlignVCenter
@@ -127,7 +127,7 @@ FluTextBox{
if(d.flagVisible){
var pos = control.mapToItem(null, 0, 0)
if(d.window.height>pos.y+control.height+rect_background.implicitHeight){
- control_popup.y = control.height
+ control_popup.y = Qt.binding(function(){return control.height})
} else if(pos.y>rect_background.implicitHeight){
control_popup.y = -rect_background.implicitHeight
} else {
diff --git a/src/Qt6/imports/FluentUI/Controls/FluTableView.qml b/src/Qt6/imports/FluentUI/Controls/FluTableView.qml
index 9f0b36c0..d87c632f 100644
--- a/src/Qt6/imports/FluentUI/Controls/FluTableView.qml
+++ b/src/Qt6/imports/FluentUI/Controls/FluTableView.qml
@@ -196,6 +196,11 @@ Rectangle {
id:com_table_delegate
MouseArea{
id:item_table_mouse
+ TableView.onPooled: {
+ if(d.editPosition && d.editPosition.row === row && d.editPosition.column === column){
+ control.closeEditor()
+ }
+ }
property var rowObject : control.getRow(row)
property var itemModel: model
property bool editVisible: {
@@ -274,9 +279,9 @@ Rectangle {
if(typeof(display) == "object"){
return
}
+ loader_edit.display = display
d.editDelegate = d.getEditDelegate(column)
updateEditPosition()
- loader_edit.display = display
}
onClicked:
(event)=>{