From 9cf3760120684ebe098d7484eb4f156401ba83af Mon Sep 17 00:00:00 2001 From: maxim Date: Sat, 25 Apr 2015 18:39:03 +0000 Subject: [PATCH] Merged revision(s) 48840 #990754d7c0, 48842 #aac691fd52 from trunk: Qt: do not report stalled focus changes if widget is invisible. issue #27960 ........ Qt: cleanup unused local variables, removed one warning. issue #27951 ........ git-svn-id: branches/fixes_1_4@48861 - --- lcl/interfaces/qt/qtint.pp | 2 +- lcl/interfaces/qt/qtobject.inc | 10 ++++++++-- lcl/interfaces/qt/qtpagecontrol.inc | 3 +-- lcl/interfaces/qt/qtsystemtrayicon.pas | 2 ++ lcl/interfaces/qt/qtwidgets.pas | 9 ++++++--- lcl/interfaces/qt/qtwinapi.inc | 2 +- lcl/interfaces/qt/qtwsforms.pp | 2 ++ 7 files changed, 21 insertions(+), 9 deletions(-) diff --git a/lcl/interfaces/qt/qtint.pp b/lcl/interfaces/qt/qtint.pp index f99ec8a819..b2460f98e6 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 diff --git a/lcl/interfaces/qt/qtpagecontrol.inc b/lcl/interfaces/qt/qtpagecontrol.inc index 8a75106829..0d21052e4c 100644 --- a/lcl/interfaces/qt/qtpagecontrol.inc +++ b/lcl/interfaces/qt/qtpagecontrol.inc @@ -307,9 +307,8 @@ class procedure TQtWSCustomTabControl.MovePage(const ATabControl: TCustomTabCont var TabWidget: TQtTabWidget; Index: Integer; - Page: TQtPage; begin - Page := TQtPage(AChild.Handle); + AChild.HandleNeeded; {create handle if it does not exist yet} TabWidget := TQtTabWidget(ATabControl.Handle); Index := AChild.PageIndex; if Index < 0 then diff --git a/lcl/interfaces/qt/qtsystemtrayicon.pas b/lcl/interfaces/qt/qtsystemtrayicon.pas index ab0bb4309d..84ead1dc5e 100644 --- a/lcl/interfaces/qt/qtsystemtrayicon.pas +++ b/lcl/interfaces/qt/qtsystemtrayicon.pas @@ -176,7 +176,9 @@ var R: TRect; P: TQtPoint; AHint: WideString; + {$IFDEF HASX11} PaintData: TSysTrayIconPaintData; + {$ENDIF} begin Result := False; if Sender <> FSysTrayWidget then diff --git a/lcl/interfaces/qt/qtwidgets.pas b/lcl/interfaces/qt/qtwidgets.pas index 1761592b66..720ccc3c49 100644 --- a/lcl/interfaces/qt/qtwidgets.pas +++ b/lcl/interfaces/qt/qtwidgets.pas @@ -3965,7 +3965,10 @@ end; procedure TQtWidget.SlotMove(Event: QEventH); cdecl; var Msg: TLMMove; - APos, ACurrPos: TQtPoint; + APos: TQtPoint; + {$IFDEF HASX11} + ACurrPos: TQtPoint; + {$ENDIF} FrameRect, WindowRect: TRect; begin {$ifdef VerboseQt} @@ -8711,6 +8714,7 @@ begin {$endif} if SliderPressed and not InUpdate then begin + Msg.Msg := 0; // shutup compiler FillChar(Msg, SizeOf(Msg), #0); Msg.Msg := LM_CHANGED; DeliverMessage(Msg); @@ -11593,7 +11597,6 @@ var v: QVariantH; WStr: WideString; DataStr: WideString; - ASelected: Boolean; ImgList: TCustomImageList; AImageIndex: TImageIndex; Bmp: TBitmap; @@ -13671,7 +13674,7 @@ var R: TRect; TopItem: Integer; i: Integer; - j, x: Integer; + j: Integer; ChildCount: Integer; VHeight: Integer; // viewport height RowHeight: Integer; diff --git a/lcl/interfaces/qt/qtwinapi.inc b/lcl/interfaces/qt/qtwinapi.inc index 793f325972..d461dbde24 100644 --- a/lcl/interfaces/qt/qtwinapi.inc +++ b/lcl/interfaces/qt/qtwinapi.inc @@ -1437,7 +1437,7 @@ begin F := DTFlagsToQtFlags(Flags); end; - {$warning HARDCODED WORKAROUND for qt-4.7.1 QPainter bug.} + {Workaround for qt-4.7 QPainter bug.It's fixed in qt-4.7.4. DO NOT REMOVE} { Bug triggers when we try to paint multiline text which contains 1 space. eg "Save project\nCtrl+S". In this case QPainter draws Save diff --git a/lcl/interfaces/qt/qtwsforms.pp b/lcl/interfaces/qt/qtwsforms.pp index 00b4cea9fa..f57e3bbbcc 100644 --- a/lcl/interfaces/qt/qtwsforms.pp +++ b/lcl/interfaces/qt/qtwsforms.pp @@ -395,8 +395,10 @@ const var Widget: TQtMainWindow; R: TRect; + {$IFDEF HASX11} ActiveWin: HWND; W: QWidgetH; + {$ENDIF} Flags: Cardinal; function ShowNonModalOverModal: Boolean;