diff --git a/lcl/interfaces/qt/qtint.pp b/lcl/interfaces/qt/qtint.pp index 083fdbe067..4c08f2525c 100644 --- a/lcl/interfaces/qt/qtint.pp +++ b/lcl/interfaces/qt/qtint.pp @@ -392,7 +392,7 @@ begin begin if not (Obj is TQtWidget) then raise Exception.Create('QtObjectFromWidgetH: QObject_property returned ' - + 'a variant which is not TQtWidget but ' + dbgsName(Obj)); + + 'a variant which is not TQtWidget ' + dbgHex(PtrUInt(Obj))); QtWg := TQtWidget(Obj); //Write('Converted successfully, Control='); if QtWg<>nil then diff --git a/lcl/interfaces/qt/qtobject.inc b/lcl/interfaces/qt/qtobject.inc index 5d7f18fa54..7cb1d79b78 100644 --- a/lcl/interfaces/qt/qtobject.inc +++ b/lcl/interfaces/qt/qtobject.inc @@ -1005,8 +1005,14 @@ begin {$IF DEFINED(VerboseFocus) OR DEFINED(DebugQtFocus)} WriteLn('> ** TQtWidgetSet.FocusChanged: old: ', dbgHex(PtrUInt(aold)), ' new: ', dbgHex(PtrUInt(anew))); {$ENDIF} - OldWidget := GetFirstQtObjectFromWidgetH(aold); - NewWidget := GetFirstQtObjectFromWidgetH(anew); + if (AOld <> nil) and not QWidget_isVisible(AOld) then + OldWidget := nil + else + OldWidget := GetFirstQtObjectFromWidgetH(aold); + if (ANew <> nil) and not QWidget_isVisible(ANew) then + NewWidget := nil + else + NewWidget := GetFirstQtObjectFromWidgetH(anew); if OldWidget = NewWidget then begin