GTK3: Updated Gdk3 set types after recent changes in git2pas.

Now that `gir2pas` is able to generate correctly set types for C enums,
we migrated more C enums to set type.

This required some changes in the Gtk3 WS code.
This commit is contained in:
Abou Al Montacir 2023-06-04 18:42:42 +02:00 committed by Maxim Ganetsky
parent 505145997b
commit a5c67a943f
3 changed files with 249 additions and 169 deletions

View File

@ -2311,32 +2311,48 @@ const
GDK_PARENT_RELATIVE = 1;
GDK_PRIORITY_REDRAW = 120;
type
TGdkAnchorHints = (
TGdkAnchorHintsMinValue = -$7FFFFFFF,
GDK_ANCHOR_FLIP_X = 1,
GDK_ANCHOR_FLIP_Y = 2,
GDK_ANCHOR_FLIP = 3,
GDK_ANCHOR_SLIDE_X = 4,
GDK_ANCHOR_SLIDE_Y = 8,
GDK_ANCHOR_SLIDE = 12,
GDK_ANCHOR_RESIZE_X = 16,
GDK_ANCHOR_RESIZE_Y = 32,
GDK_ANCHOR_RESIZE = 48,
TGdkAnchorHintsMaxValue = $7FFFFFFF
TGdkAnchorHintsIdx = (
TGdkAnchorHintsIdxMinValue = 0,
GDK_ANCHOR_FLIP_X = 0,
GDK_ANCHOR_FLIP_Y = 1,
GDK_ANCHOR_SLIDE_X = 2,
GDK_ANCHOR_SLIDE_Y = 3,
GDK_ANCHOR_RESIZE_X = 4,
GDK_ANCHOR_RESIZE_Y = 5,
TGdkAnchorHintsIdxMaxValue = 31
);
TGdkAxisFlags = (
TGdkAxisFlagsMinValue = -$7FFFFFFF,
GDK_AXIS_FLAG_X = 2,
GDK_AXIS_FLAG_Y = 4,
GDK_AXIS_FLAG_PRESSURE = 8,
GDK_AXIS_FLAG_XTILT = 16,
GDK_AXIS_FLAG_YTILT = 32,
GDK_AXIS_FLAG_WHEEL = 64,
GDK_AXIS_FLAG_DISTANCE = 128,
GDK_AXIS_FLAG_ROTATION = 256,
GDK_AXIS_FLAG_SLIDER = 512,
TGdkAxisFlagsMaxValue = $7FFFFFFF
TGdkAnchorHints = Set of TGdkAnchorHintsIdx;
const
GDK_ANCHOR_FLIP = [
GDK_ANCHOR_FLIP_X,
GDK_ANCHOR_FLIP_Y
]; {3 = $00000003}
GDK_ANCHOR_SLIDE = [
GDK_ANCHOR_SLIDE_X,
GDK_ANCHOR_SLIDE_Y
]; {12 = $0000000C}
GDK_ANCHOR_RESIZE = [
GDK_ANCHOR_RESIZE_X,
GDK_ANCHOR_RESIZE_Y
]; {48 = $00000030}
type
TGdkAxisFlagsIdx = (
TGdkAxisFlagsIdxMinValue = 0,
GDK_AXIS_FLAG_X = 1,
GDK_AXIS_FLAG_Y = 2,
GDK_AXIS_FLAG_PRESSURE = 3,
GDK_AXIS_FLAG_XTILT = 4,
GDK_AXIS_FLAG_YTILT = 5,
GDK_AXIS_FLAG_WHEEL = 6,
GDK_AXIS_FLAG_DISTANCE = 7,
GDK_AXIS_FLAG_ROTATION = 8,
GDK_AXIS_FLAG_SLIDER = 9,
TGdkAxisFlagsIdxMaxValue = 31
);
TGdkAxisFlags = Set of TGdkAxisFlagsIdx;
TGdkAxisUse = (
TGdkAxisUseMinValue = -$7FFFFFFF,
GDK_AXIS_IGNORE = 0,
@ -2455,9 +2471,6 @@ type
GDK_LAST_CURSOR = 153,
TGdkCursorTypeMaxValue = $7FFFFFFF
);
//TODO: This is hand written just to give the direction we need to go.
//TODO: We need to make git2pas generate similar code for bitfields.
TGdkModifierTypeIdx = (
TGdkModifierTypeIdxMinValue = 0,
GDK_SHIFT_MASK = 0,
@ -2495,8 +2508,25 @@ type
);
TGdkModifierType = Set of TGdkModifierTypeIdx;
const
GDK_MODIFIER_MASK = 1543512063;
GDK_ALL_MODIFIERS_MASK = [TGdkModifierTypeIdxMinValue..TGdkModifierTypeIdxMaxValue];
GDK_MODIFIER_MASK = [
GDK_SHIFT_MASK,
GDK_LOCK_MASK,
GDK_CONTROL_MASK,
GDK_MOD1_MASK,
GDK_MOD2_MASK,
GDK_MOD3_MASK,
GDK_MOD4_MASK,
GDK_MOD5_MASK,
GDK_BUTTON1_MASK,
GDK_BUTTON2_MASK,
GDK_BUTTON3_MASK,
GDK_BUTTON4_MASK,
GDK_BUTTON5_MASK,
GDK_SUPER_MASK,
GDK_HYPER_MASK,
GDK_META_MASK,
GDK_RELEASE_MASK
]; {1543512063 = $5C001FFF}
type
TGdkInputMode = (
@ -2506,31 +2536,33 @@ type
GDK_MODE_WINDOW = 2,
TGdkInputModeMaxValue = $7FFFFFFF
);
TGdkWindowAttributesType = (
TGdkWindowAttributesTypeMinValue = -$7FFFFFFF,
GDK_WA_TITLE = 2,
GDK_WA_X = 4,
GDK_WA_Y = 8,
GDK_WA_CURSOR = 16,
GDK_WA_VISUAL = 32,
GDK_WA_WMCLASS = 64,
GDK_WA_NOREDIR = 128,
GDK_WA_TYPE_HINT = 256,
TGdkWindowAttributesTypeMaxValue = $7FFFFFFF
TGdkWindowAttributesTypeIdx = (
TGdkWindowAttributesTypeIdxMinValue = 0,
GDK_WA_TITLE = 1,
GDK_WA_X = 2,
GDK_WA_Y = 3,
GDK_WA_CURSOR = 4,
GDK_WA_VISUAL = 5,
GDK_WA_WMCLASS = 6,
GDK_WA_NOREDIR = 7,
GDK_WA_TYPE_HINT = 8,
TGdkWindowAttributesTypeIdxMaxValue = 31
);
TGdkWindowHints = type Integer;
const
GDK_HINT_POS = TGdkWindowHints(1);
GDK_HINT_MIN_SIZE = TGdkWindowHints(2);
GDK_HINT_MAX_SIZE = TGdkWindowHints(4);
GDK_HINT_BASE_SIZE = TGdkWindowHints(8);
GDK_HINT_ASPECT = TGdkWindowHints(16);
GDK_HINT_RESIZE_INC = TGdkWindowHints(32);
GDK_HINT_WIN_GRAVITY = TGdkWindowHints(64);
GDK_HINT_USER_POS = TGdkWindowHints(128);
GDK_HINT_USER_SIZE = TGdkWindowHints(256);
type
TGdkWindowAttributesType = Set of TGdkWindowAttributesTypeIdx;
TGdkWindowHintsIdx = (
TGdkWindowHintsIdxMinValue = 0,
GDK_HINT_POS = 0,
GDK_HINT_MIN_SIZE = 1,
GDK_HINT_MAX_SIZE = 2,
GDK_HINT_BASE_SIZE = 3,
GDK_HINT_ASPECT = 4,
GDK_HINT_RESIZE_INC = 5,
GDK_HINT_WIN_GRAVITY = 6,
GDK_HINT_USER_POS = 7,
GDK_HINT_USER_SIZE = 8,
TGdkWindowHintsIdxMaxValue = 31
);
TGdkWindowHints = Set of TGdkWindowHintsIdx;
TGdkWindowEdge = (
TGdkWindowEdgeMinValue = -$7FFFFFFF,
GDK_WINDOW_EDGE_NORTH_WEST = 0,
@ -2543,18 +2575,18 @@ type
GDK_WINDOW_EDGE_SOUTH_EAST = 7,
TGdkWindowEdgeMaxValue = $7FFFFFFF
);
TGdkWMDecoration = type Integer;
const
GDK_DECOR_ALL = TGdkWMDecoration(1);
GDK_DECOR_BORDER = TGdkWMDecoration(2);
GDK_DECOR_RESIZEH = TGdkWMDecoration(4);
GDK_DECOR_TITLE = TGdkWMDecoration(8);
GDK_DECOR_MENU = TGdkWMDecoration(16);
GDK_DECOR_MINIMIZE = TGdkWMDecoration(32);
GDK_DECOR_MAXIMIZE = TGdkWMDecoration(64);
type
TGdkWMDecorationIdx = (
TGdkWMDecorationIdxMinValue = 0,
GDK_DECOR_ALL = 0,
GDK_DECOR_BORDER = 1,
GDK_DECOR_RESIZEH = 2,
GDK_DECOR_TITLE = 3,
GDK_DECOR_MENU = 4,
GDK_DECOR_MINIMIZE = 5,
GDK_DECOR_MAXIMIZE = 6,
TGdkWMDecorationIdxMaxValue = 31
);
TGdkWMDecoration = Set of TGdkWMDecorationIdx;
TGdkEventMaskIdx = (
TGdkEventMaskIdxMinValue = 0,
GDK_EXPOSURE_MASK = 1,
@ -2586,7 +2618,33 @@ type
);
TGdkEventMask = Set of TGdkEventMaskIdx;
const
GDK_ALL_EVENTS_MASK = [TGdkEventMaskIdxMinValue..TGdkEventMaskIdxMaxValue];
GDK_ALL_EVENTS_MASK = [
GDK_EXPOSURE_MASK,
GDK_POINTER_MOTION_MASK,
GDK_POINTER_MOTION_HINT_MASK,
GDK_BUTTON_MOTION_MASK,
GDK_BUTTON1_MOTION_MASK,
GDK_BUTTON2_MOTION_MASK,
GDK_BUTTON3_MOTION_MASK,
GDK_BUTTON_PRESS_MASK,
GDK_BUTTON_RELEASE_MASK,
GDK_KEY_PRESS_MASK,
GDK_KEY_RELEASE_MASK,
GDK_ENTER_NOTIFY_MASK,
GDK_LEAVE_NOTIFY_MASK,
GDK_FOCUS_CHANGE_MASK,
GDK_STRUCTURE_MASK,
GDK_PROPERTY_CHANGE_MASK,
GDK_VISIBILITY_NOTIFY_MASK,
GDK_PROXIMITY_IN_MASK,
GDK_PROXIMITY_OUT_MASK,
GDK_SUBSTRUCTURE_MASK,
GDK_SCROLL_MASK,
GDK_TOUCH_MASK,
GDK_SMOOTH_SCROLL_MASK,
GDK_TOUCHPAD_GESTURE_MASK,
GDK_TABLET_PAD_MASK
]; {67108862 = $03FFFFFE}
type
TGdkInputSource = (
@ -2602,27 +2660,28 @@ type
GDK_SOURCE_TABLET_PAD = 8,
TGdkInputSourceMaxValue = $7FFFFFFF
);
TGdkWindowState = type Integer;
const
GDK_WINDOW_STATE_WITHDRAWN = TGdkWindowState(1);
GDK_WINDOW_STATE_ICONIFIED = TGdkWindowState(2);
GDK_WINDOW_STATE_MAXIMIZED = TGdkWindowState(4);
GDK_WINDOW_STATE_STICKY = TGdkWindowState(8);
GDK_WINDOW_STATE_FULLSCREEN = TGdkWindowState(16);
GDK_WINDOW_STATE_ABOVE = TGdkWindowState(32);
GDK_WINDOW_STATE_BELOW = TGdkWindowState(64);
GDK_WINDOW_STATE_FOCUSED = TGdkWindowState(128);
GDK_WINDOW_STATE_TILED = TGdkWindowState(256);
GDK_WINDOW_STATE_TOP_TILED = TGdkWindowState(512);
GDK_WINDOW_STATE_TOP_RESIZABLE = TGdkWindowState(1024);
GDK_WINDOW_STATE_RIGHT_TILED = TGdkWindowState(2048);
GDK_WINDOW_STATE_RIGHT_RESIZABLE = TGdkWindowState(4096);
GDK_WINDOW_STATE_BOTTOM_TILED = TGdkWindowState(8192);
GDK_WINDOW_STATE_BOTTOM_RESIZABLE = TGdkWindowState(16384);
GDK_WINDOW_STATE_LEFT_TILED = TGdkWindowState(32768);
GDK_WINDOW_STATE_LEFT_RESIZABLE = TGdkWindowState(65536);
type
TGdkWindowStateIdx = (
TGdkWindowStateIdxMinValue = 0,
GDK_WINDOW_STATE_WITHDRAWN = 0,
GDK_WINDOW_STATE_ICONIFIED = 1,
GDK_WINDOW_STATE_MAXIMIZED = 2,
GDK_WINDOW_STATE_STICKY = 3,
GDK_WINDOW_STATE_FULLSCREEN = 4,
GDK_WINDOW_STATE_ABOVE = 5,
GDK_WINDOW_STATE_BELOW = 6,
GDK_WINDOW_STATE_FOCUSED = 7,
GDK_WINDOW_STATE_TILED = 8,
GDK_WINDOW_STATE_TOP_TILED = 9,
GDK_WINDOW_STATE_TOP_RESIZABLE = 10,
GDK_WINDOW_STATE_RIGHT_TILED = 11,
GDK_WINDOW_STATE_RIGHT_RESIZABLE = 12,
GDK_WINDOW_STATE_BOTTOM_TILED = 13,
GDK_WINDOW_STATE_BOTTOM_RESIZABLE = 14,
GDK_WINDOW_STATE_LEFT_TILED = 15,
GDK_WINDOW_STATE_LEFT_RESIZABLE = 16,
TGdkWindowStateIdxMaxValue = 31
);
TGdkWindowState = Set of TGdkWindowStateIdx;
TGdkGravity = (
TGdkGravityMinValue = -$7FFFFFFF,
GDK_GRAVITY_NORTH_WEST = 1,
@ -2643,16 +2702,17 @@ type
GDK_FULLSCREEN_ON_ALL_MONITORS = 1,
TGdkFullscreenModeMaxValue = $7FFFFFFF
);
TGdkWMFunction = (
TGdkWMFunctionMinValue = -$7FFFFFFF,
GDK_FUNC_ALL = 1,
GDK_FUNC_RESIZE = 2,
GDK_FUNC_MOVE = 4,
GDK_FUNC_MINIMIZE = 8,
GDK_FUNC_MAXIMIZE = 16,
GDK_FUNC_CLOSE = 32,
TGdkWMFunctionMaxValue = $7FFFFFFF
TGdkWMFunctionIdx = (
TGdkWMFunctionIdxMinValue = 0,
GDK_FUNC_ALL = 0,
GDK_FUNC_RESIZE = 1,
GDK_FUNC_MOVE = 2,
GDK_FUNC_MINIMIZE = 3,
GDK_FUNC_MAXIMIZE = 4,
GDK_FUNC_CLOSE = 5,
TGdkWMFunctionIdxMaxValue = 31
);
TGdkWMFunction = Set of TGdkWMFunctionIdx;
TGdkWindowTypeHint = (
TGdkWindowTypeHintMinValue = -$7FFFFFFF,
GDK_WINDOW_TYPE_HINT_NORMAL = 0,
@ -2678,17 +2738,32 @@ type
GDK_DEVICE_TYPE_FLOATING = 2,
TGdkDeviceTypeMaxValue = $7FFFFFFF
);
TGdkSeatCapabilities = (
TGdkSeatCapabilitiesMinValue = -$7FFFFFFF,
GDK_SEAT_CAPABILITY_NONE = 0,
GDK_SEAT_CAPABILITY_POINTER = 1,
GDK_SEAT_CAPABILITY_TOUCH = 2,
GDK_SEAT_CAPABILITY_TABLET_STYLUS = 4,
GDK_SEAT_CAPABILITY_ALL_POINTING = 7,
GDK_SEAT_CAPABILITY_KEYBOARD = 8,
GDK_SEAT_CAPABILITY_ALL = 15,
TGdkSeatCapabilitiesMaxValue = $7FFFFFFF
TGdkSeatCapabilitiesIdx = (
TGdkSeatCapabilitiesIdxMinValue = 0,
GDK_SEAT_CAPABILITY_POINTER = 0,
GDK_SEAT_CAPABILITY_TOUCH = 1,
GDK_SEAT_CAPABILITY_TABLET_STYLUS = 2,
GDK_SEAT_CAPABILITY_KEYBOARD = 3,
TGdkSeatCapabilitiesIdxMaxValue = 31
);
TGdkSeatCapabilities = Set of TGdkSeatCapabilitiesIdx;
const
GDK_SEAT_CAPABILITY_NONE = []; {0 = $00000000}
GDK_SEAT_CAPABILITY_ALL_POINTING = [
GDK_SEAT_CAPABILITY_POINTER,
GDK_SEAT_CAPABILITY_TOUCH,
GDK_SEAT_CAPABILITY_TABLET_STYLUS
]; {7 = $00000007}
GDK_SEAT_CAPABILITY_ALL = [
GDK_SEAT_CAPABILITY_POINTER,
GDK_SEAT_CAPABILITY_TOUCH,
GDK_SEAT_CAPABILITY_TABLET_STYLUS,
GDK_SEAT_CAPABILITY_KEYBOARD
]; {15 = $0000000F}
type
TGdkGrabStatus = (
TGdkGrabStatusMinValue = -$7FFFFFFF,
GDK_GRAB_SUCCESS = 0,
@ -2826,16 +2901,17 @@ type
GDK_SETTING_ACTION_DELETED = 2,
TGdkSettingActionMaxValue = $7FFFFFFF
);
TGdkDragAction = (
TGdkDragActionMinValue = -$7FFFFFFF,
GDK_ACTION_DEFAULT = 1,
GDK_ACTION_COPY = 2,
GDK_ACTION_MOVE = 4,
GDK_ACTION_LINK = 8,
GDK_ACTION_PRIVATE = 16,
GDK_ACTION_ASK = 32,
TGdkDragActionMaxValue = $7FFFFFFF
TGdkDragActionIdx = (
TGdkDragActionIdxMinValue = 0,
GDK_ACTION_DEFAULT = 0,
GDK_ACTION_COPY = 1,
GDK_ACTION_MOVE = 2,
GDK_ACTION_LINK = 3,
GDK_ACTION_PRIVATE = 4,
GDK_ACTION_ASK = 5,
TGdkDragActionIdxMaxValue = 31
);
TGdkDragAction = Set of TGdkDragActionIdx;
TGdkDragCancelReason = (
TGdkDragCancelReasonMinValue = -$7FFFFFFF,
GDK_DRAG_CANCEL_NO_TARGET = 0,
@ -2862,18 +2938,22 @@ type
GDK_FILTER_REMOVE = 2,
TGdkFilterReturnMaxValue = $7FFFFFFF
);
TGdkFrameClockPhase = (
TGdkFrameClockPhaseMinValue = -$7FFFFFFF,
GDK_FRAME_CLOCK_PHASE_NONE = 0,
GDK_FRAME_CLOCK_PHASE_FLUSH_EVENTS = 1,
GDK_FRAME_CLOCK_PHASE_BEFORE_PAINT = 2,
GDK_FRAME_CLOCK_PHASE_UPDATE = 4,
GDK_FRAME_CLOCK_PHASE_LAYOUT = 8,
GDK_FRAME_CLOCK_PHASE_PAINT = 16,
GDK_FRAME_CLOCK_PHASE_RESUME_EVENTS = 32,
GDK_FRAME_CLOCK_PHASE_AFTER_PAINT = 64,
TGdkFrameClockPhaseMaxValue = $7FFFFFFF
TGdkFrameClockPhaseIdx = (
TGdkFrameClockPhaseIdxMinValue = 0,
GDK_FRAME_CLOCK_PHASE_FLUSH_EVENTS = 0,
GDK_FRAME_CLOCK_PHASE_BEFORE_PAINT = 1,
GDK_FRAME_CLOCK_PHASE_UPDATE = 2,
GDK_FRAME_CLOCK_PHASE_LAYOUT = 3,
GDK_FRAME_CLOCK_PHASE_PAINT = 4,
GDK_FRAME_CLOCK_PHASE_RESUME_EVENTS = 5,
GDK_FRAME_CLOCK_PHASE_AFTER_PAINT = 6,
TGdkFrameClockPhaseIdxMaxValue = 31
);
TGdkFrameClockPhase = Set of TGdkFrameClockPhaseIdx;
const
GDK_FRAME_CLOCK_PHASE_NONE = []; {0 = $00000000}
type
TGdkGLError = (
TGdkGLErrorMinValue = -$7FFFFFFF,
GDK_GL_ERROR_NOT_AVAILABLE = 0,

View File

@ -32,8 +32,8 @@ begin
gtk_widget_realize(Widget);
gdk_window_set_decorations(Widget^.window, TGdkWMDecoration(0));
gdk_window_set_functions(Widget^.window, TGdkWMFunction(Integer(GDK_FUNC_RESIZE) or Integer(GDK_FUNC_CLOSE)));
gdk_window_set_decorations(Widget^.window, []);
gdk_window_set_functions(Widget^.window, [GDK_FUNC_RESIZE, GDK_FUNC_CLOSE]);
gtk_widget_set_opacity(Widget, 0.25);
gtk_widget_show(Widget);

View File

@ -794,7 +794,7 @@ type
function GetScrolledWindow: PGtkScrolledWindow; override;
function ShowState(nstate:integer):boolean; // winapi ShowWindow
procedure UpdateWindowState; // LCL WindowState
class function decoration_flags(Aform: TCustomForm): longint;
class function decoration_flags(Aform: TCustomForm): TGdkWMDecoration;
public
procedure SetBounds(ALeft,ATop,AWidth,AHeight:integer);override;
destructor Destroy; override;
@ -1435,7 +1435,7 @@ var
Msg: TLMSize;
NewSize: TSize;
ACtl: TGtk3Widget;
AState:integer;
AState: TGdkWindowState;
begin
if AWidget=nil then ;
//TODO: Move to TGtk3Widget.GtkResizeEvent
@ -1478,13 +1478,13 @@ begin
if ACtl is TGtk3Window then
begin
AState := TGtk3Window(ACtl).getWindowState;
if AState and GDK_WINDOW_STATE_ICONIFIED<>0 then
if GDK_WINDOW_STATE_ICONIFIED in AState then
Msg.SizeType := SIZE_MINIMIZED
else
if AState and GDK_WINDOW_STATE_MAXIMIZED<>0 then
if GDK_WINDOW_STATE_MAXIMIZED in AState then
Msg.SizeType := SIZE_MAXIMIZED
else
if AState and GDK_WINDOW_STATE_FULLSCREEN<>0 then
if GDK_WINDOW_STATE_FULLSCREEN in AState then
Msg.SizeType := SIZE_FULLSCREEN;
end;
@ -1963,7 +1963,7 @@ begin
if IsWidgetOk then
begin
if FWidget^.get_window <> nil then
Result := gdk_window_get_state(FWidget^.get_window) and GDK_WINDOW_STATE_ICONIFIED <> 0;
Result := GDK_WINDOW_STATE_ICONIFIED in gdk_window_get_state(FWidget^.get_window);
end;
end;
@ -7412,7 +7412,7 @@ var
Msg: TLMSize;
AState: TGdkWindowState;
//AScreen: PGdkScreen;
msk:integer;
msk: TGdkWindowState;
begin
Result := False;
FillChar(Msg{%H-}, SizeOf(Msg), #0);
@ -7436,39 +7436,39 @@ begin
msk:=AEvent^.window_state.changed_mask;
AState:=AEvent^.window_state.new_window_state;
if msk and GDK_WINDOW_STATE_ICONIFIED<>0 then
if GDK_WINDOW_STATE_ICONIFIED in msk then
begin
if AState and GDK_WINDOW_STATE_ICONIFIED<>0 then
if GDK_WINDOW_STATE_ICONIFIED in AState then
Msg.SizeType := SIZE_MINIMIZED
end else
if msk and GDK_WINDOW_STATE_MAXIMIZED<>0 then
if GDK_WINDOW_STATE_MAXIMIZED in msk then
begin
if AState and GDK_WINDOW_STATE_MAXIMIZED<>0 then
if GDK_WINDOW_STATE_MAXIMIZED in AState then
Msg.SizeType := SIZE_MAXIMIZED
end else
if msk and GDK_WINDOW_STATE_FULLSCREEN<>0 then
if GDK_WINDOW_STATE_FULLSCREEN in msk then
begin
if AState and GDK_WINDOW_STATE_FULLSCREEN<>0 then
if GDK_WINDOW_STATE_FULLSCREEN in AState then
Msg.SizeType := SIZE_FULLSCREEN
end else
if msk and GDK_WINDOW_STATE_FOCUSED<>0 then
if GDK_WINDOW_STATE_FOCUSED in msk then
begin
if AState and GDK_WINDOW_STATE_FOCUSED<>0 then
if GDK_WINDOW_STATE_FOCUSED in AState then
DebugLn('Focused')
else
DebugLn('Defocused');
exit;
end else
if msk and GDK_WINDOW_STATE_WITHDRAWN<>0 then
if GDK_WINDOW_STATE_WITHDRAWN in msk then
begin
if AState and GDK_WINDOW_STATE_WITHDRAWN<>0 then
if GDK_WINDOW_STATE_WITHDRAWN in AState then
DebugLn('Shown')
else
DebugLn('Hidden');
exit;
end else
begin
DebugLn(format('other changes state=%.08x mask=%.08x',[AState,msk]));
//DebugLn(format('other changes state=%.08x mask=%.08x',[AState,msk]));
exit;
end;
@ -7481,52 +7481,52 @@ begin
// DeliverMessage(Msg);
end;
class function TGtk3Window.decoration_flags(Aform:TCustomForm):longint;
class function TGtk3Window.decoration_flags(Aform: TCustomForm): TGdkWMDecoration;
var
icns:TBorderIcons;
bs:TFormBorderStyle;
begin
result:=0;
Result := [];
icns:=AForm.BorderIcons;
bs:=AForm.BorderStyle;
case bs of
bsSingle: result:=result or GDK_DECOR_TITLE{GDK_DECOR_BORDER};
bsSingle: Include(Result, GDK_DECOR_TITLE{GDK_DECOR_BORDER});
bsDialog:
result:=result or GDK_DECOR_BORDER or GDK_DECOR_TITLE;
Result += [GDK_DECOR_BORDER, GDK_DECOR_TITLE];
bsSizeable:
begin
if biMaximize in icns then
result:=result or GDK_DECOR_MAXIMIZE;
Include(Result, GDK_DECOR_MAXIMIZE);
if biMinimize in icns then
result:=result or GDK_DECOR_MINIMIZE;
Result:=result or GDK_DECOR_BORDER or GDK_DECOR_RESIZEH or GDK_DECOR_TITLE;
Include(Result, GDK_DECOR_MINIMIZE);
Result += [GDK_DECOR_BORDER, GDK_DECOR_RESIZEH, GDK_DECOR_TITLE];
end;
bsSizeToolWin:
Result:=result or GDK_DECOR_BORDER or GDK_DECOR_RESIZEH or GDK_DECOR_TITLE;
Result += [GDK_DECOR_BORDER, GDK_DECOR_RESIZEH, GDK_DECOR_TITLE];
bsToolWindow:
Result:=result or GDK_DECOR_BORDER;
bsNone: result:=0;
Include(Result, GDK_DECOR_BORDER);
bsNone: Result := [];
end;
if result and GDK_DECOR_TITLE <> 0 then
if GDK_DECOR_TITLE in Result then
if biSystemMenu in icns then
result:=result or GDK_DECOR_MENU;
Include(Result, GDK_DECOR_MENU);
end;
function TGtk3Window.ShowState(nstate:integer):boolean; // winapi ShowWindow
var
AState:integer;
AState: TGdkWindowState;
begin
case nstate of
SW_SHOWNORMAL:
begin
AState:=fWidget^.window^.get_state;
if AState and GDK_WINDOW_STATE_ICONIFIED<>0 then
if GDK_WINDOW_STATE_ICONIFIED in AState then
PgtkWindow(fWidget)^.deiconify
else if AState and GDK_WINDOW_STATE_MAXIMIZED<>0 then
else if GDK_WINDOW_STATE_MAXIMIZED in AState then
PgtkWindow(fWidget)^.unmaximize
else if AState and GDK_WINDOW_STATE_FULLSCREEN<>0 then
else if GDK_WINDOW_STATE_FULLSCREEN in AState then
PgtkWindow(fWidget)^.unfullscreen
else
PgtkWindow(fWidget)^.show;
@ -7551,7 +7551,7 @@ end;
function TGtk3Window.CreateWidget(const Params: TCreateParams): PGtkWidget;
var
AForm: TCustomForm;
decor:longint;
decor: TGdkWMDecoration;
begin
FIcon := nil;
FScrollX := 0;
@ -7568,7 +7568,7 @@ begin
gtk_widget_realize(Result);
decor:=decoration_flags(AForm);
gdk_window_set_decorations(Result^.window, decor);
gtk_window_set_decorated(PGtkWindow(Result),(decor<>0));
gtk_window_set_decorated(PGtkWindow(Result),(decor <> []));
if AForm.AlphaBlend then
gtk_widget_set_opacity(Result, TForm(LCLObject).AlphaBlendValue/255);
@ -7728,16 +7728,16 @@ begin
if AFixedWidthHeight then
PGtkWindow(Widget)^.set_geometry_hints(nil, @Geometry,
GDK_HINT_POS or GDK_HINT_MIN_SIZE or GDK_HINT_MAX_SIZE)
[GDK_HINT_POS, GDK_HINT_MIN_SIZE, GDK_HINT_MAX_SIZE])
else
begin
if AForm.BorderStyle <> bsNone then
begin
AHints := GDK_HINT_POS or GDK_HINT_BASE_SIZE;
AHints := [GDK_HINT_POS, GDK_HINT_BASE_SIZE];
if (AForm.Constraints.MinHeight > 0) or (AForm.Constraints.MinWidth > 0) then
AHints := AHints or GDK_HINT_MIN_SIZE;
Include(AHints, GDK_HINT_MIN_SIZE);
if (AForm.Constraints.MaxHeight > 0) or (AForm.Constraints.MaxWidth > 0) then
AHints := AHints or GDK_HINT_MAX_SIZE;
Include(AHints, GDK_HINT_MAX_SIZE);
PGtkWindow(Widget)^.set_geometry_hints(nil, @Geometry, AHints);
end;
@ -7864,7 +7864,7 @@ end;
function TGtk3Window.GetWindowState: TGdkWindowState;
begin
Result := 0;
Result := [];
if IsWidgetOK and (FWidget^.get_realized) then
Result := FWidget^.window^.get_state;
end;