- replace old SIZENORMAL, SIZEICONINC, ... constants with SIZE_RESTORED, SIZE_MINIMIZED
  - add new SIZE_FULLSCREEN constant to support wsFullScreen state

git-svn-id: trunk@36432 -
This commit is contained in:
paul 2012-03-30 01:05:10 +00:00
parent b356839d80
commit d6e2a77af5
9 changed files with 55 additions and 48 deletions

View File

@ -702,10 +702,10 @@ begin
begin
OldState := FWindowState;
case (Message.SizeType and not SIZE_SourceIsInterface) of
SIZENORMAL:
SIZE_RESTORED:
if Showing then
FWindowState := wsNormal;
SIZEICONIC:
SIZE_MINIMIZED:
begin
if Showing then
FWindowState := wsMinimized;
@ -713,9 +713,12 @@ begin
and (Application.MainForm = Self) then
Application.Minimize;
end;
SIZEFULLSCREEN:
SIZE_MAXIMIZED:
if Showing then
FWindowState := wsMaximized;
SIZE_FULLSCREEN:
if Showing then
FWindowState := wsFullScreen;
end;
if OldState <> FWindowState then
begin
@ -731,7 +734,7 @@ begin
inherited WMSize(Message);
if (Message.SizeType and Size_Restored) > 0 then
if (Message.SizeType and SIZE_RESTORED) > 0 then
begin
FRestoredLeft := Left;
FRestoredTop := Top;

View File

@ -1042,13 +1042,13 @@ begin
Kind := -1;
case EventKind of
kEventWindowCollapsed: Kind := SIZEICONIC;
kEventWindowCollapsed: Kind := SIZE_MINIMIZED;
kEventWindowExpanded, kEventWindowZoomed:
begin
if IsWindowInStandardState(TCarbonWindow(AWidget).fWindowRef, nil, nil) then
Kind := SIZEFULLSCREEN
Kind := SIZE_MAXIMIZED
else
Kind := SIZENORMAL;
Kind := SIZE_RESTORED;
end;
else
DebugLn('CarbonWindow_ShowWindow invalid event kind: ' + DbgS(EventKind));

View File

@ -1003,7 +1003,7 @@ end;
function LCLObjectExtension.lclWindowState: Integer;
begin
Result := SIZENORMAL;
Result := SIZE_RESTORED;
end;
procedure LCLObjectExtension.lclInvalidateRect(const r: TRect);
@ -1300,13 +1300,14 @@ end;
function LCLWindowExtension.lclWindowState: Integer;
begin
// todo: check fullscreen using NSFullScreenWindowMask
if isMiniaturized then
Result := SIZEICONIC
Result := SIZE_MINIMIZED
else
if isZoomed then
Result := SIZEFULLSCREEN
Result := SIZE_MAXIMIZED
else
Result := SIZENORMAL;
Result := SIZE_RESTORED;
end;
procedure LCLWindowExtension.lclInvalidateRect(const r: TRect);

View File

@ -15,7 +15,7 @@
* *
* This file is part of the Lazarus Component Library (LCL) *
* *
* See the file COPYING.modifiedLGPL.txt, included in this distribution, *
* See the file COPYING.modifiedLGPL.txt, included in this distribution, *
* for details about the copyright. *
* *
* This program is distributed in the hope that it will be useful, *
@ -535,7 +535,7 @@ end;
procedure TFPGUIPrivateWidget.ResizeHandler(Sender: TObject);
begin
LCLSendSizeMsg(FLCLObject,Widget.Width,Widget.Height,SIZENORMAL,true);
LCLSendSizeMsg(FLCLObject,Widget.Width,Widget.Height,SIZE_RESTORED,true);
end;
procedure TFPGUIPrivateWidget.MsgDeactivate(var fpgmsg: TfpgMessageRec);
@ -583,7 +583,7 @@ end;
procedure TFPGUIPrivateWidget.MsgResize(var fpgmsg: TfpgMessageRec);
begin
LCLSendSizeMsg(LCLObject, fpgmsg.Params.rect.Width,fpgmsg.Params.rect.Height, SIZENORMAL, false);
LCLSendSizeMsg(LCLObject, fpgmsg.Params.rect.Width,fpgmsg.Params.rect.Height, SIZE_RESTORED, false);
end;
procedure TFPGUIPrivateWidget.MsgMove(var fpgmsg: TfpgMessageRec);
@ -773,7 +773,7 @@ end;
procedure TFPGUIPrivateWidget.SetSize(AWidth, AHeight: LongInt);
begin
FWidget.SetPosition(FWidget.Left, FWidget.Top, AWidth, AHeight);
LCLSendSizeMsg(FLCLObject,AWidth,AHeight,SIZENORMAL,false);
LCLSendSizeMsg(FLCLObject,AWidth,AHeight,SIZE_RESTORED,false);
end;
procedure TFPGUIPrivateWidget.SetPosition(AX, AY: Integer);

View File

@ -1146,27 +1146,28 @@ begin
end;
end;
{$ENDIF}
SizeMsg.SizeType := SIZEICONIC;
SizeMsg.SizeType := SIZE_MINIMIZED;
end
else if (GDK_WINDOW_STATE_MAXIMIZED and state^.new_window_state)>0 then
begin
// it can be both maximized + iconified and just loose iconified state
if (state^.changed_mask and (GDK_WINDOW_STATE_MAXIMIZED or GDK_WINDOW_STATE_ICONIFIED)) = 0 then Exit;
SizeMsg.SizeType := SIZEFULLSCREEN;
SizeMsg.SizeType := SIZE_MAXIMIZED;
end
else
SizeMsg.SizeType := SIZENORMAL;
SizeMsg.SizeType := SIZE_RESTORED;
if (TheForm = Application.MainForm) and
(SizeMsg.SizeType <> SIZEICONIC) and
(SizeMsg.SizeType <> SIZE_MINIMIZED) and
(TheForm.WindowState = wsMinimized) then
Application.IntfAppRestore;
// don't bother the LCL if nothing changed
case SizeMsg.SizeType of
SIZENORMAL: if TheForm.WindowState=wsNormal then exit;
SIZEICONIC: if TheForm.WindowState=wsMinimized then exit;
SIZEFULLSCREEN: if TheForm.WindowState=wsMaximized then exit;
SIZE_RESTORED: if TheForm.WindowState=wsNormal then exit;
SIZE_MINIMIZED: if TheForm.WindowState=wsMinimized then exit;
SIZE_MAXIMIZED: if TheForm.WindowState=wsMaximized then exit;
SIZE_FULLSCREEN: if TheForm.WindowState=wsFullScreen then exit;
end;
with SizeMsg do

View File

@ -6484,12 +6484,13 @@ begin
Result := 0;
Msg := LM_SIZE;
if LCLControl is TCustomForm then begin
// if the LCL gets an event without a State it resets it to SIZENORMAL
// if the LCL gets an event without a State it resets it to SIZE_RESTORED
// so we send it the state it already is
case TCustomForm(LCLControl).WindowState of
wsNormal: SizeType := SIZENORMAL;
wsMinimized: SizeType := SIZEICONIC;
wsMaximized: SizeType := SIZEFULLSCREEN;
wsNormal: SizeType := SIZE_RESTORED;
wsMinimized: SizeType := SIZE_MINIMIZED;
wsMaximized: SizeType := SIZE_MAXIMIZED;
wsFullScreen: SizeType := SIZE_FULLSCREEN;
end;
end
else

View File

@ -3723,11 +3723,11 @@ begin
Msg.Msg := LM_SIZE;
case getWindowState of
QtWindowMinimized: Msg.SizeType := SIZEICONIC;
QtWindowMaximized: Msg.SizeType := SIZEFULLSCREEN;
QtWindowFullScreen: Msg.SizeType := SIZEFULLSCREEN;
QtWindowMinimized: Msg.SizeType := SIZE_MINIMIZED;
QtWindowMaximized: Msg.SizeType := SIZE_MAXIMIZED;
QtWindowFullScreen: Msg.SizeType := SIZE_FULLSCREEN;
else
Msg.SizeType := SIZENORMAL;
Msg.SizeType := SIZE_RESTORED;
end;
Msg.SizeType := Msg.SizeType or Size_SourceIsInterface;
@ -6351,14 +6351,16 @@ begin
FillChar(Msg, SizeOf(Msg), #0);
Msg.Msg := LM_SIZE;
Msg.SizeType := SIZENORMAL;
Msg.SizeType := SIZE_RESTORED;
if getWindowState and QtWindowMinimized <> 0 then
Msg.SizeType := SIZEICONIC
Msg.SizeType := SIZE_MINIMIZED
else
if (getWindowState and QtWindowFullScreen <> 0) or
(getWindowState and QtWindowMaximized <> 0) then
Msg.SizeType := SIZEFULLSCREEN;
if (getWindowState and QtWindowFullScreen <> 0) then
Msg.SizeType := SIZE_FULLSCREEN
else
if (getWindowState and QtWindowMaximized <> 0) then
Msg.SizeType := SIZE_MAXIMIZED;
Msg.SizeType := Msg.SizeType or Size_SourceIsInterface;

View File

@ -250,8 +250,7 @@ end;
* *
* Target : The Control that will recieve the message LM_SIZE *
* Width, Height : The new Width and Height for the control *
* SizeType : SIZENORMAL, SIZEICONIC, SIZEFULLSCREEN, SIZEZOOMSHOW or *
* SIZEZOOMHIDE. (In LCLType) *
* SizeType : SIZE_RESTORED, SIZE_MINIMIZED, SIZE_MAXIMIZED,... *
* FromInterface : True if this message was sent from the widgetset to notify *
* the LCL of a change. False to make the widgetset change *
* the size of the control. Default = True *
@ -267,7 +266,6 @@ begin
Mess.Msg := LM_SIZE;
Mess.Width := Width;
Mess.Height := Height;
//SIZENORMAL, SIZEICONIC, SIZEFULLSCREEN, SIZEZOOMSHOW, SIZEZOOMHIDE.
Mess.SizeType := SizeType;
if FromInterface then
Mess.SizeType := Mess.SizeType or Size_SourceIsInterface;

View File

@ -864,18 +864,19 @@ const
SWP_SourceIsInterface = $10000; // this flag can be combined with the above
{ WMSIZE message constants}
Size_Restored = 0; // the default
Size_Minimized = 1;
Size_Maximized = 2;
Size_MaxShow = 3;
Size_MaxHide = 4;
SIZE_RESTORED = 0; // the default
SIZE_MINIMIZED = 1;
SIZE_MAXIMIZED = 2;
SIZE_MAXSHOW = 3;
SIZE_MAXHIDE = 4;
SIZE_FULLSCREEN = 16; // non-winapi value to support wsFullScreen state
Size_SourceIsInterface = 128; // this flag can be combined with the above
SIZENORMAL = Size_Restored;
SIZEICONIC = Size_Minimized;
SIZEFULLSCREEN = Size_Maximized;
SIZEZOOMSHOW = Size_MaxShow;
SIZEZOOMHIDE = Size_MaxHide;
SIZENORMAL = SIZE_RESTORED;
SIZEICONIC = SIZE_MINIMIZED;
SIZEFULLSCREEN = SIZE_MAXIMIZED;
SIZEZOOMSHOW = SIZE_MAXSHOW;
SIZEZOOMHIDE = SIZE_MAXHIDE;
{ WMMove Message Constants }
Move_Default = 0;