Qt: bugfix for #13018.

git-svn-id: trunk@18389 -
This commit is contained in:
zeljko 2009-01-22 09:21:40 +00:00
parent 65d0d8bd24
commit 0d3bcfd192

View File

@ -5652,7 +5652,19 @@ end;
function TQtTabWidget.EventFilter(Sender: QObjectH; Event: QEventH): Boolean;
cdecl;
var
w: QWidgetH;
ResizeEvent: QResizeEventH;
i: Integer;
NewSize: TSize;
OldSize: TSize;
begin
Result := False;
QEvent_accept(Event);
if LCLObject = nil then
exit;
BeginEventProcessing;
if (Sender = TabBar) then
begin
@ -5671,6 +5683,28 @@ begin
end;
end else
begin
{qt doesn't call resize for inactive pages, so LCL don't know
about changes on inactive pages, we must send resizeEvent to
all pages except for active one.This is fix for #13018}
if QEvent_type(Event) = QEventResize then
begin
w := QTabWidget_currentWidget(QTabWidgetH(Widget));
if w <> nil then
begin
QWidget_size(w, @NewSize);
OldSize.Cx := 0;
OldSize.Cy := 0;
for i := 0 to QTabWidget_count(QTabWidgetH(Widget)) - 1 do
begin
w := QTabWidget_widget(QTabWidgetH(Widget), i);
if w <> QTabWidget_currentWidget(QTabWidgetH(Widget)) then
begin
ResizeEvent := QResizeEvent_create(@NewSize, @OldSize);
QCoreApplication_postEvent(w, ResizeEvent, 1);
end;
end;
end;
end;
Result := inherited EventFilter(Sender, Event);
end;