From 26266caedc37b1b7970f428c4581c0ba3405c826 Mon Sep 17 00:00:00 2001 From: zeljan1 Date: Wed, 14 May 2025 13:17:17 +0200 Subject: [PATCH] Qt5,Qt6: fixed painting in designer when using docked form designer. issue #41640 --- lcl/interfaces/qt5/qtint.pp | 1 + lcl/interfaces/qt5/qtwidgets.pas | 14 ++++++++++++++ lcl/interfaces/qt6/qtint.pp | 1 + lcl/interfaces/qt6/qtwidgets.pas | 14 ++++++++++++++ 4 files changed, 30 insertions(+) diff --git a/lcl/interfaces/qt5/qtint.pp b/lcl/interfaces/qt5/qtint.pp index f7f6dc88c7..7cb77c4a73 100644 --- a/lcl/interfaces/qt5/qtint.pp +++ b/lcl/interfaces/qt5/qtint.pp @@ -329,6 +329,7 @@ const // combobox OnCloseUp should be in order OnChange->OnSelect->OnCloseUp LCLQt_ComboBoxCloseUp = QEventType(Ord(QEventUser) + $1012); LCLQt_DestroyWidget = QEventType(Ord(QEventUser) + $1013); + LCLQt_DesignerUpdate = QEventType(Ord(QEventUser) + $1014); QtTextSingleLine = $0100; diff --git a/lcl/interfaces/qt5/qtwidgets.pas b/lcl/interfaces/qt5/qtwidgets.pas index 31bfe435b3..ddf7b65346 100644 --- a/lcl/interfaces/qt5/qtwidgets.pas +++ b/lcl/interfaces/qt5/qtwidgets.pas @@ -20307,6 +20307,7 @@ var YStep, XStep: integer; B: Boolean; Bar: TQtScrollBar; + ALCLEvent: QLCLMessageEventH; function FindScrolledParent(AControl: TWinControl): TWinControl; begin @@ -20512,9 +20513,22 @@ begin end; QEventPaint: begin + if Assigned(LCLObject) and (LCLObject.Parent <> nil) and Assigned(FMenuBar) and + FMenuBar.FVisible then + begin + QPaintEvent_rect(QPaintEventH(Event), @R); + if (R.Width < QWidget_width(FDesignControl)) or + (R.Height < QWidget_height(FDesignControl)) then + begin + ALCLEvent := QLCLMessageEvent_create(LCLQt_DesignerUpdate, 0, 0, 0, 0); + QCoreApplication_postEvent(FDesignControl, ALCLEvent, Ord(QtHighEventPriority)); + exit(True); + end; + end; SlotDesignControlPaint(Sender, Event); Result := True; end; + LCLQt_DesignerUpdate: QWidget_update(FDesignControl); QEventContextMenu: SlotContextMenu(Sender, Event); end; finally diff --git a/lcl/interfaces/qt6/qtint.pp b/lcl/interfaces/qt6/qtint.pp index 10bb02270e..77726c3275 100644 --- a/lcl/interfaces/qt6/qtint.pp +++ b/lcl/interfaces/qt6/qtint.pp @@ -334,6 +334,7 @@ const // combobox OnCloseUp should be in order OnChange->OnSelect->OnCloseUp LCLQt_ComboBoxCloseUp = QEventType(Ord(QEventUser) + $1012); LCLQt_DestroyWidget = QEventType(Ord(QEventUser) + $1013); + LCLQt_DesignerUpdate = QEventType(Ord(QEventUser) + $1014); QtTextSingleLine = $0100; diff --git a/lcl/interfaces/qt6/qtwidgets.pas b/lcl/interfaces/qt6/qtwidgets.pas index c4fa9ecad5..e08aa99e01 100644 --- a/lcl/interfaces/qt6/qtwidgets.pas +++ b/lcl/interfaces/qt6/qtwidgets.pas @@ -20232,6 +20232,7 @@ var YStep, XStep: integer; B: Boolean; Bar: TQtScrollBar; + ALCLEvent: QLCLMessageEventH; function FindScrolledParent(AControl: TWinControl): TWinControl; begin @@ -20437,9 +20438,22 @@ begin end; QEventPaint: begin + if Assigned(LCLObject) and (LCLObject.Parent <> nil) and Assigned(FMenuBar) and + FMenuBar.FVisible then + begin + QPaintEvent_rect(QPaintEventH(Event), @R); + if (R.Width < QWidget_width(FDesignControl)) or + (R.Height < QWidget_height(FDesignControl)) then + begin + ALCLEvent := QLCLMessageEvent_create(LCLQt_DesignerUpdate, 0, 0, 0, 0); + QCoreApplication_postEvent(FDesignControl, ALCLEvent, Ord(QtHighEventPriority)); + exit(True); + end; + end; SlotDesignControlPaint(Sender, Event); Result := True; end; + LCLQt_DesignerUpdate: QWidget_update(FDesignControl); QEventContextMenu: SlotContextMenu(Sender, Event); end; finally