mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-29 04:29:32 +02:00
LCL-GTK3: Improve handling of ascii chars, improve code readability. Issue #37826, patch from Anton Kavalenka.
git-svn-id: trunk@63948 -
This commit is contained in:
parent
f44d7e5d74
commit
5d144b780e
@ -2625,53 +2625,53 @@ const
|
||||
GDK_GRAB_FROZEN: TGdkGrabStatus = 4;
|
||||
|
||||
type
|
||||
TGdkEventType = Integer;
|
||||
const
|
||||
TGdkEventType = (
|
||||
{ GdkEventType }
|
||||
GDK_NOTHING: TGdkEventType = -1;
|
||||
GDK_DELETE: TGdkEventType = 0;
|
||||
GDK_DESTROY: TGdkEventType = 1;
|
||||
GDK_EXPOSE: TGdkEventType = 2;
|
||||
GDK_MOTION_NOTIFY: TGdkEventType = 3;
|
||||
GDK_BUTTON_PRESS: TGdkEventType = 4;
|
||||
GDK_2BUTTON_PRESS: TGdkEventType = 5;
|
||||
GDK_DOUBLE_BUTTON_PRESS: TGdkEventType = 5;
|
||||
GDK_3BUTTON_PRESS: TGdkEventType = 6;
|
||||
GDK_TRIPLE_BUTTON_PRESS: TGdkEventType = 6;
|
||||
GDK_BUTTON_RELEASE: TGdkEventType = 7;
|
||||
GDK_KEY_PRESS: TGdkEventType = 8;
|
||||
GDK_KEY_RELEASE: TGdkEventType = 9;
|
||||
GDK_ENTER_NOTIFY: TGdkEventType = 10;
|
||||
GDK_LEAVE_NOTIFY: TGdkEventType = 11;
|
||||
GDK_FOCUS_CHANGE: TGdkEventType = 12;
|
||||
GDK_CONFIGURE: TGdkEventType = 13;
|
||||
GDK_MAP: TGdkEventType = 14;
|
||||
GDK_UNMAP: TGdkEventType = 15;
|
||||
GDK_PROPERTY_NOTIFY: TGdkEventType = 16;
|
||||
GDK_SELECTION_CLEAR: TGdkEventType = 17;
|
||||
GDK_SELECTION_REQUEST: TGdkEventType = 18;
|
||||
GDK_SELECTION_NOTIFY: TGdkEventType = 19;
|
||||
GDK_PROXIMITY_IN: TGdkEventType = 20;
|
||||
GDK_PROXIMITY_OUT: TGdkEventType = 21;
|
||||
GDK_DRAG_ENTER: TGdkEventType = 22;
|
||||
GDK_DRAG_LEAVE: TGdkEventType = 23;
|
||||
GDK_DRAG_MOTION_: TGdkEventType = 24;
|
||||
GDK_DRAG_STATUS_: TGdkEventType = 25;
|
||||
GDK_DROP_START: TGdkEventType = 26;
|
||||
GDK_DROP_FINISHED: TGdkEventType = 27;
|
||||
GDK_CLIENT_EVENT: TGdkEventType = 28;
|
||||
GDK_VISIBILITY_NOTIFY: TGdkEventType = 29;
|
||||
GDK_SCROLL: TGdkEventType = 31;
|
||||
GDK_WINDOW_STATE: TGdkEventType = 32;
|
||||
GDK_SETTING: TGdkEventType = 33;
|
||||
GDK_OWNER_CHANGE: TGdkEventType = 34;
|
||||
GDK_GRAB_BROKEN: TGdkEventType = 35;
|
||||
GDK_DAMAGE: TGdkEventType = 36;
|
||||
GDK_TOUCH_BEGIN: TGdkEventType = 37;
|
||||
GDK_TOUCH_UPDATE: TGdkEventType = 38;
|
||||
GDK_TOUCH_END: TGdkEventType = 39;
|
||||
GDK_TOUCH_CANCEL: TGdkEventType = 40;
|
||||
GDK_EVENT_LAST: TGdkEventType = 41;
|
||||
GDK_NOTHING = -1,
|
||||
GDK_DELETE = 0,
|
||||
GDK_DESTROY = 1,
|
||||
GDK_EXPOSE = 2,
|
||||
GDK_MOTION_NOTIFY = 3,
|
||||
GDK_BUTTON_PRESS = 4,
|
||||
GDK_2BUTTON_PRESS = 5,
|
||||
GDK_DOUBLE_BUTTON_PRESS = 5,
|
||||
GDK_3BUTTON_PRESS = 6,
|
||||
GDK_TRIPLE_BUTTON_PRESS = 6,
|
||||
GDK_BUTTON_RELEASE = 7,
|
||||
GDK_KEY_PRESS = 8,
|
||||
GDK_KEY_RELEASE = 9,
|
||||
GDK_ENTER_NOTIFY = 10,
|
||||
GDK_LEAVE_NOTIFY = 11,
|
||||
GDK_FOCUS_CHANGE = 12,
|
||||
GDK_CONFIGURE = 13,
|
||||
GDK_MAP = 14,
|
||||
GDK_UNMAP = 15,
|
||||
GDK_PROPERTY_NOTIFY = 16,
|
||||
GDK_SELECTION_CLEAR = 17,
|
||||
GDK_SELECTION_REQUEST = 18,
|
||||
GDK_SELECTION_NOTIFY = 19,
|
||||
GDK_PROXIMITY_IN = 20,
|
||||
GDK_PROXIMITY_OUT = 21,
|
||||
GDK_DRAG_ENTER = 22,
|
||||
GDK_DRAG_LEAVE = 23,
|
||||
GDK_DRAG_MOTION_ = 24,
|
||||
GDK_DRAG_STATUS_ = 25,
|
||||
GDK_DROP_START = 26,
|
||||
GDK_DROP_FINISHED = 27,
|
||||
GDK_CLIENT_EVENT = 28,
|
||||
GDK_VISIBILITY_NOTIFY = 29,
|
||||
GDK_SCROLL = 31,
|
||||
GDK_WINDOW_STATE = 32,
|
||||
GDK_SETTING = 33,
|
||||
GDK_OWNER_CHANGE = 34,
|
||||
GDK_GRAB_BROKEN = 35,
|
||||
GDK_DAMAGE = 36,
|
||||
GDK_TOUCH_BEGIN = 37,
|
||||
GDK_TOUCH_UPDATE = 38,
|
||||
GDK_TOUCH_END = 39,
|
||||
GDK_TOUCH_CANCEL = 40,
|
||||
GDK_EVENT_LAST = 41
|
||||
);
|
||||
|
||||
type
|
||||
TGdkVisibilityState = Integer;
|
||||
|
@ -647,10 +647,10 @@ begin
|
||||
GDK_KEY_End: Result := VK_END;
|
||||
GDK_KEY_Page_Up: Result := VK_PRIOR;
|
||||
GDK_KEY_Page_Down: Result := VK_NEXT;
|
||||
GDK_KEY_Left: Result := VK_LEFT;
|
||||
GDK_KEY_Up: Result := VK_UP;
|
||||
GDK_KEY_Right: Result := VK_RIGHT;
|
||||
GDK_KEY_Down: Result := VK_DOWN;
|
||||
GDK_KEY_Left, GDK_KEY_KP_LEFT: Result := VK_LEFT;
|
||||
GDK_KEY_Up, GDK_KEY_KP_UP: Result := VK_UP;
|
||||
GDK_KEY_Right, GDK_KEY_KP_Right: Result := VK_RIGHT;
|
||||
GDK_KEY_Down, GDK_KEY_KP_Down: Result := VK_DOWN;
|
||||
GDK_KEY_Menu: Result := VK_APPS;
|
||||
GDK_KEY_Tab, GDK_KEY_3270_BackTab, GDK_KEY_ISO_Left_Tab: Result := VK_TAB;
|
||||
GDK_KEY_Shift_L, GDK_KEY_Shift_R: Result := VK_SHIFT;
|
||||
|
@ -909,88 +909,47 @@ function Gtk3EventToStr(AEvent: TGdkEventType): String;
|
||||
begin
|
||||
Result := 'GDK_NOTHING';
|
||||
case AEvent of
|
||||
// GDK_DELETE:
|
||||
0: Result := 'GDK_DELETE';
|
||||
// GDK_DESTROY:
|
||||
1: Result := 'GDK_DESTROY';
|
||||
// GDK_EXPOSE:
|
||||
2: Result := 'GDK_EXPOSE';
|
||||
// GDK_MOTION_NOTIFY:
|
||||
3: Result := 'GDK_MOTION_NOTIFY';
|
||||
// GDK_BUTTON_PRESS:
|
||||
4: Result := 'GDK_BUTTON_PRESS';
|
||||
// GDK_2BUTTON_PRESS:
|
||||
5: Result := 'GDK_2BUTTON_PRESS';
|
||||
// GDK_3BUTTON_PRESS:
|
||||
6: Result := 'GDK_3BUTTON_PRESS';
|
||||
// GDK_BUTTON_RELEASE:
|
||||
7: Result := 'GDK_BUTTON_RELEASE';
|
||||
// GDK_KEY_PRESS:
|
||||
8: Result := 'GDK_KEY_PRESS';
|
||||
// GDK_KEY_RELEASE:
|
||||
9: Result := 'GDK_KEY_RELEASE';
|
||||
// GDK_ENTER_NOTIFY:
|
||||
10: Result := 'GDK_ENTER_NOTIFY';
|
||||
// GDK_LEAVE_NOTIFY:
|
||||
11: Result := 'GDK_LEAVE_NOTIFY';
|
||||
// GDK_FOCUS_CHANGE:
|
||||
12: Result := 'GDK_FOCUS_CHANGE';
|
||||
// GDK_CONFIGURE:
|
||||
13: Result := 'GDK_CONFIGURE';
|
||||
// GDK_MAP:
|
||||
14: Result := 'GDK_MAP';
|
||||
// GDK_UNMAP:
|
||||
15: Result := 'GDK_UNMAP';
|
||||
// GDK_PROPERTY_NOTIFY:
|
||||
16: Result := 'GDK_PROPERTY_NOTIFY';
|
||||
// GDK_SELECTION_CLEAR:
|
||||
17: Result := 'GDK_SELECTION_CLEAR';
|
||||
// GDK_SELECTION_REQUEST:
|
||||
18: Result := 'GDK_SELECTION_REQUEST';
|
||||
// GDK_SELECTION_NOTIFY:
|
||||
19: Result := 'GDK_SELECTION_NOTIFY';
|
||||
// GDK_PROXIMITY_IN:
|
||||
20: Result := 'GDK_PROXIMITY_IN';
|
||||
// GDK_PROXIMITY_OUT:
|
||||
21: Result := 'GDK_PROXIMITY_OUT';
|
||||
// GDK_DRAG_ENTER:
|
||||
22: Result := 'GDK_DRAG_ENTER';
|
||||
// GDK_DRAG_LEAVE:
|
||||
23: Result := 'GDK_DRAG_LEAVE';
|
||||
// GDK_DRAG_MOTION_:
|
||||
24: Result := 'GDK_DRAG_MOTION_';
|
||||
// GDK_DRAG_STATUS_:
|
||||
25: Result := 'GDK_DRAG_STATUS_';
|
||||
// GDK_DROP_START:
|
||||
26: Result := 'GDK_DROP_START';
|
||||
// GDK_DROP_FINISHED:
|
||||
27: Result := 'GDK_DROP_FINISHED';
|
||||
// GDK_CLIENT_EVENT:
|
||||
28: Result := 'GDK_CLIENT_EVENT';
|
||||
// GDK_VISIBILITY_NOTIFY:
|
||||
29: Result := 'GDK_VISIBILITY_NOTIFY';
|
||||
// GDK_SCROLL:
|
||||
31: Result := 'GDK_SCROLL';
|
||||
// GDK_WINDOW_STATE:
|
||||
32: Result := 'GDK_WINDOW_STATE';
|
||||
// GDK_SETTING:
|
||||
33: Result := 'GDK_SETTING';
|
||||
// GDK_OWNER_CHANGE:
|
||||
34: Result := 'GDK_OWNER_CHANGE';
|
||||
// GDK_GRAB_BROKEN:
|
||||
35: Result := 'GDK_GRAB_BROKEN';
|
||||
// GDK_DAMAGE:
|
||||
36: Result := 'GDK_DAMAGE';
|
||||
// GDK_TOUCH_BEGIN:
|
||||
37: Result := 'GDK_TOUCH_BEGIN';
|
||||
// GDK_TOUCH_UPDATE:
|
||||
38: Result := 'GDK_TOUCH_UPDATE';
|
||||
// GDK_TOUCH_END:
|
||||
39: Result := 'GDK_TOUCH_END';
|
||||
// GDK_TOUCH_CANCEL:
|
||||
40: Result := 'GDK_TOUCH_CANCEL';
|
||||
// GDK_EVENT_LAST:
|
||||
41: Result := 'GDK_EVENT_LAST';
|
||||
GDK_DELETE: Result := 'GDK_DELETE';
|
||||
GDK_DESTROY: Result := 'GDK_DESTROY';
|
||||
GDK_EXPOSE: Result := 'GDK_EXPOSE';
|
||||
GDK_MOTION_NOTIFY: Result := 'GDK_MOTION_NOTIFY';
|
||||
GDK_BUTTON_PRESS: Result := 'GDK_BUTTON_PRESS';
|
||||
GDK_2BUTTON_PRESS: Result := 'GDK_2BUTTON_PRESS';
|
||||
GDK_3BUTTON_PRESS: Result := 'GDK_3BUTTON_PRESS';
|
||||
GDK_BUTTON_RELEASE: Result := 'GDK_BUTTON_RELEASE';
|
||||
GDK_KEY_PRESS: Result := 'GDK_KEY_PRESS';
|
||||
GDK_KEY_RELEASE: Result := 'GDK_KEY_RELEASE';
|
||||
GDK_ENTER_NOTIFY: Result := 'GDK_ENTER_NOTIFY';
|
||||
GDK_LEAVE_NOTIFY: Result := 'GDK_LEAVE_NOTIFY';
|
||||
GDK_FOCUS_CHANGE: Result := 'GDK_FOCUS_CHANGE';
|
||||
GDK_CONFIGURE: Result := 'GDK_CONFIGURE';
|
||||
GDK_MAP: Result := 'GDK_MAP';
|
||||
GDK_UNMAP: Result := 'GDK_UNMAP';
|
||||
GDK_PROPERTY_NOTIFY: Result := 'GDK_PROPERTY_NOTIFY';
|
||||
GDK_SELECTION_CLEAR: Result := 'GDK_SELECTION_CLEAR';
|
||||
GDK_SELECTION_REQUEST: Result := 'GDK_SELECTION_REQUEST';
|
||||
GDK_SELECTION_NOTIFY: Result := 'GDK_SELECTION_NOTIFY';
|
||||
GDK_PROXIMITY_IN: Result := 'GDK_PROXIMITY_IN';
|
||||
GDK_PROXIMITY_OUT: Result := 'GDK_PROXIMITY_OUT';
|
||||
GDK_DRAG_ENTER: Result := 'GDK_DRAG_ENTER';
|
||||
GDK_DRAG_LEAVE: Result := 'GDK_DRAG_LEAVE';
|
||||
GDK_DRAG_MOTION_: Result := 'GDK_DRAG_MOTION_';
|
||||
GDK_DRAG_STATUS_: Result := 'GDK_DRAG_STATUS_';
|
||||
GDK_DROP_START: Result := 'GDK_DROP_START';
|
||||
GDK_DROP_FINISHED: Result := 'GDK_DROP_FINISHED';
|
||||
GDK_CLIENT_EVENT: Result := 'GDK_CLIENT_EVENT';
|
||||
GDK_VISIBILITY_NOTIFY: Result := 'GDK_VISIBILITY_NOTIFY';
|
||||
GDK_SCROLL: Result := 'GDK_SCROLL';
|
||||
GDK_WINDOW_STATE: Result := 'GDK_WINDOW_STATE';
|
||||
GDK_SETTING: Result := 'GDK_SETTING';
|
||||
GDK_OWNER_CHANGE: Result := 'GDK_OWNER_CHANGE';
|
||||
GDK_GRAB_BROKEN: Result := 'GDK_GRAB_BROKEN';
|
||||
GDK_DAMAGE: Result := 'GDK_DAMAGE';
|
||||
GDK_TOUCH_BEGIN: Result := 'GDK_TOUCH_BEGIN';
|
||||
GDK_TOUCH_UPDATE: Result := 'GDK_TOUCH_UPDATE';
|
||||
GDK_TOUCH_END: Result := 'GDK_TOUCH_END';
|
||||
GDK_TOUCH_CANCEL: Result := 'GDK_TOUCH_CANCEL';
|
||||
GDK_EVENT_LAST: Result := 'GDK_EVENT_LAST';
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -1005,18 +964,15 @@ begin
|
||||
// ' ',Gtk3EventToStr(event^.type_));
|
||||
|
||||
case event^.type_ of
|
||||
// GDK_DELETE
|
||||
0:
|
||||
GDK_DELETE:
|
||||
begin
|
||||
// DebugLn('****** GDK_DELETE FOR ',dbgsName(TGtk3Widget(Data).LCLObject),' main_level=',dbgs(gtk_main_level));
|
||||
end;
|
||||
// GDK_DESTROY
|
||||
1:
|
||||
GDK_DESTROY:
|
||||
begin
|
||||
// DebugLn('****** GDK_DESTROY FOR ' + dbgsName(TGtk3Widget(Data).LCLObject));
|
||||
end;
|
||||
// GDK_EXPOSE
|
||||
2:
|
||||
GDK_EXPOSE:
|
||||
begin
|
||||
// DebugLn('****** GDK_EXPOSE FOR ' + dbgsName(TGtk3Widget(Data).LCLObject));
|
||||
// Gtk3DrawWidget is attached to 'draw' signal, Expose event doesn't trigger
|
||||
@ -1024,86 +980,75 @@ begin
|
||||
// we use 'draw' signal Gtk3DrawEvent()
|
||||
// Result := TGtk3Widget(Data).GtkEventPaint(Widget, Event);
|
||||
end;
|
||||
// GDK_MOTION_NOTIFY
|
||||
3:
|
||||
GDK_MOTION_NOTIFY:
|
||||
begin
|
||||
// Result := TGtk3Widget(Data).GtkEventMouseMove(Widget, Event);
|
||||
end;
|
||||
// GDK_BUTTON_PRESS:
|
||||
4:
|
||||
GDK_BUTTON_PRESS:
|
||||
begin
|
||||
// Result := TGtk3Widget(Data).GtkEventMouse(Widget , Event);
|
||||
end;
|
||||
// GDK_2BUTTON_PRESS:
|
||||
5:
|
||||
GDK_2BUTTON_PRESS:
|
||||
begin
|
||||
// if not TGtk3Widget(Data).LCLObject.Focused and TGtk3Widget(Data).LCLObject.CanFocus then
|
||||
// LCLIntf.SetFocus(HWND(TGtk3Widget(Data)));
|
||||
// Result := TGtk3Widget(Data).GtkEventMouse(Widget , Event);
|
||||
end;
|
||||
// GDK_3BUTTON_PRESS:
|
||||
6:
|
||||
GDK_3BUTTON_PRESS:
|
||||
begin
|
||||
// if not TGtk3Widget(Data).LCLObject.Focused and TGtk3Widget(Data).LCLObject.CanFocus then
|
||||
// LCLIntf.SetFocus(HWND(TGtk3Widget(Data)));
|
||||
// Result := TGtk3Widget(Data).GtkEventMouse(Widget , Event);
|
||||
end;
|
||||
// GDK_BUTTON_RELEASE:
|
||||
7:
|
||||
GDK_BUTTON_RELEASE:
|
||||
begin
|
||||
// Result := TGtk3Widget(Data).GtkEventMouse(Widget , Event);
|
||||
end;
|
||||
|
||||
// GDK_KEY_PRESS
|
||||
8:
|
||||
GDK_KEY_PRESS:
|
||||
begin
|
||||
// if Widget^.has_focus then // or (Widget = TGtk3Widget(data).GetContainerWidget) then
|
||||
// Result := TGtk3Widget(Data).GtkEventKey(Widget, Event, True);
|
||||
end;
|
||||
// GDK_KEY_RELEASE
|
||||
9:
|
||||
GDK_KEY_RELEASE:
|
||||
begin
|
||||
// if Widget^.has_focus then // or (Widget = TGtk3Widget(data).GetContainerWidget) then
|
||||
// Result := TGtk3Widget(Data).GtkEventKey(Widget, Event, False);
|
||||
end;
|
||||
|
||||
// GDK_ENTER_NOTIFY
|
||||
10:
|
||||
GDK_ENTER_NOTIFY:
|
||||
begin
|
||||
// TGtk3Widget(Data).GtkEventMouseEnterLeave(Widget, Event);
|
||||
end;
|
||||
// GDK_LEAVE_NOTIFY
|
||||
11:
|
||||
GDK_LEAVE_NOTIFY:
|
||||
begin
|
||||
// TGtk3Widget(Data).GtkEventMouseEnterLeave(Widget, Event);
|
||||
end;
|
||||
12:
|
||||
GDK_FOCUS_CHANGE:
|
||||
begin
|
||||
// GDK_FOCUS_CHANGE
|
||||
//
|
||||
end;
|
||||
// GDK_CONFIGURE
|
||||
13:
|
||||
GDK_CONFIGURE:
|
||||
begin
|
||||
// GDK_CONFIGURE
|
||||
end;
|
||||
14: // GDK_MAP
|
||||
GDK_MAP:
|
||||
begin
|
||||
// DebugLn('****** GDK_MAP FOR ',dbgsName(TGtk3Widget(Data).LCLObject));
|
||||
end;
|
||||
16: // GDK_PROPERTY_NOTIFY
|
||||
GDK_PROPERTY_NOTIFY:
|
||||
begin
|
||||
// DebugLn('****** GDK_PROPERTY_NOTIFY FOR ',dbgsName(TGtk3Widget(Data).LCLObject));
|
||||
end;
|
||||
28: // GDK_CLIENT_EVENT
|
||||
GDK_CLIENT_EVENT:
|
||||
begin
|
||||
// DebugLn('****** GDK_CLIENT_EVENT FOR ',dbgsName(TGtk3Widget(Data).LCLObject));
|
||||
end;
|
||||
29: // GDK_VISIBILITY_NOTIFY
|
||||
GDK_VISIBILITY_NOTIFY:
|
||||
begin
|
||||
// Result := TGtk3Widget(Data).GtkEventShowHide(Widget, Event);
|
||||
// DebugLn('****** GDK_VISIBILITY_NOTIFY FOR ' + dbgsName(TGtk3Widget(Data).LCLObject));
|
||||
end;
|
||||
31: // GDK_SCROLL
|
||||
GDK_SCROLL:
|
||||
begin
|
||||
// DebugLn('****** GDK_SCROLL ' + dbgsName(TGtk3Widget(Data).LCLObject));
|
||||
end;
|
||||
@ -1143,8 +1088,7 @@ begin
|
||||
if Assigned(Application) and Application.Terminated then
|
||||
exit;
|
||||
case event^.type_ of
|
||||
// GDK_DELETE
|
||||
0:
|
||||
GDK_DELETE:
|
||||
begin
|
||||
// DebugLn('****** GDK_DELETE FOR ',dbgsName(TGtk3Widget(Data).LCLObject),' main_level=',dbgs(gtk_main_level));
|
||||
if wtWindow in TGtk3Widget(Data).WidgetType then
|
||||
@ -1154,13 +1098,11 @@ begin
|
||||
Result := True;
|
||||
end;
|
||||
end;
|
||||
// GDK_DESTROY
|
||||
1:
|
||||
GDK_DESTROY:
|
||||
begin
|
||||
// DebugLn('****** GDK_DESTROY FOR ' + dbgsName(TGtk3Widget(Data).LCLObject));
|
||||
end;
|
||||
// GDK_EXPOSE
|
||||
2:
|
||||
GDK_EXPOSE:
|
||||
begin
|
||||
DebugLn('****** GDK_EXPOSE FOR ' + dbgsName(TGtk3Widget(Data).LCLObject));
|
||||
// Gtk3DrawWidget is attached to 'draw' signal, Expose event doesn't trigger
|
||||
@ -1168,8 +1110,7 @@ begin
|
||||
// we use 'draw' signal Gtk3DrawEvent()
|
||||
// Result := TGtk3Widget(Data).GtkEventPaint(Widget, Event);
|
||||
end;
|
||||
// GDK_MOTION_NOTIFY
|
||||
3:
|
||||
GDK_MOTION_NOTIFY:
|
||||
begin
|
||||
if wtWindow in TGtk3Widget(Data).WidgetType then
|
||||
begin
|
||||
@ -1178,8 +1119,7 @@ begin
|
||||
end;
|
||||
Result := TGtk3Widget(Data).GtkEventMouseMove(Widget, Event);
|
||||
end;
|
||||
// GDK_BUTTON_PRESS:
|
||||
4:
|
||||
GDK_BUTTON_PRESS:
|
||||
begin
|
||||
// set focus before gtk does that, so we have same behaviour as other ws
|
||||
if TGtk3Widget(Data).GetFocusableByMouse and
|
||||
@ -1201,8 +1141,7 @@ begin
|
||||
|
||||
Result := TGtk3Widget(Data).GtkEventMouse(Widget , Event);
|
||||
end;
|
||||
// GDK_2BUTTON_PRESS:
|
||||
5:
|
||||
GDK_2BUTTON_PRESS:
|
||||
begin
|
||||
// set focus before gtk does that, so we have same behaviour as other ws
|
||||
if TGtk3Widget(Data).GetFocusableByMouse and
|
||||
@ -1211,8 +1150,7 @@ begin
|
||||
LCLIntf.SetFocus(HWND(TGtk3Widget(Data)));
|
||||
Result := TGtk3Widget(Data).GtkEventMouse(Widget , Event);
|
||||
end;
|
||||
// GDK_3BUTTON_PRESS:
|
||||
6:
|
||||
GDK_3BUTTON_PRESS:
|
||||
begin
|
||||
// set focus before gtk does that, so we have same behaviour as other ws
|
||||
if TGtk3Widget(Data).GetFocusableByMouse and
|
||||
@ -1221,28 +1159,22 @@ begin
|
||||
LCLIntf.SetFocus(HWND(TGtk3Widget(Data)));
|
||||
Result := TGtk3Widget(Data).GtkEventMouse(Widget , Event);
|
||||
end;
|
||||
// GDK_BUTTON_RELEASE:
|
||||
7:
|
||||
GDK_BUTTON_RELEASE:
|
||||
begin
|
||||
if not (csClickEvents in TGtk3Widget(Data).LCLObject.ControlStyle) then
|
||||
Result := TGtk3Widget(Data).GtkEventMouse(Widget , Event);
|
||||
end;
|
||||
|
||||
// GDK_KEY_PRESS
|
||||
8:
|
||||
GDK_KEY_PRESS:
|
||||
begin
|
||||
if Widget^.has_focus then
|
||||
Result := TGtk3Widget(Data).GtkEventKey(Widget, Event, True);
|
||||
end;
|
||||
// GDK_KEY_RELEASE
|
||||
9:
|
||||
GDK_KEY_RELEASE:
|
||||
begin
|
||||
if Widget^.has_focus then // or (Widget = TGtk3Widget(data).GetContainerWidget) then
|
||||
Result := TGtk3Widget(Data).GtkEventKey(Widget, Event, False);
|
||||
end;
|
||||
|
||||
// GDK_ENTER_NOTIFY
|
||||
10:
|
||||
GDK_ENTER_NOTIFY:
|
||||
begin
|
||||
if wtWindow in TGtk3Widget(Data).WidgetType then
|
||||
begin
|
||||
@ -1268,8 +1200,7 @@ begin
|
||||
*)
|
||||
TGtk3Widget(Data).GtkEventMouseEnterLeave(Widget, Event);
|
||||
end;
|
||||
// GDK_LEAVE_NOTIFY
|
||||
11:
|
||||
GDK_LEAVE_NOTIFY:
|
||||
begin
|
||||
if wtWindow in TGtk3Widget(Data).WidgetType then
|
||||
begin
|
||||
@ -1297,8 +1228,7 @@ begin
|
||||
*)
|
||||
TGtk3Widget(Data).GtkEventMouseEnterLeave(Widget, Event);
|
||||
end;
|
||||
// GDK_FOCUS_CHANGE
|
||||
12:
|
||||
GDK_FOCUS_CHANGE:
|
||||
begin
|
||||
if wtComboBox in TGtk3Widget(Data).WidgetType then
|
||||
begin
|
||||
@ -1310,8 +1240,7 @@ begin
|
||||
end;
|
||||
TGtk3Widget(Data).GtkEventFocus(Widget, Event);
|
||||
end;
|
||||
// GDK_CONFIGURE
|
||||
13:
|
||||
GDK_CONFIGURE:
|
||||
begin
|
||||
(* DOES NOT WORK AS DOCUMENTATION SAYS
|
||||
if Data <> nil then
|
||||
@ -1326,23 +1255,23 @@ begin
|
||||
*)
|
||||
Result := TGtk3Widget(Data).GtkEventResize(Widget, Event);
|
||||
end;
|
||||
14: // GDK_MAP
|
||||
GDK_MAP:
|
||||
begin
|
||||
// DebugLn('****** GDK_MAP FOR ',dbgsName(TGtk3Widget(Data).LCLObject));
|
||||
end;
|
||||
15: // GDK_UNMAP
|
||||
GDK_UNMAP:
|
||||
begin
|
||||
// DebugLn('****** GDK_UNMAP FOR ',dbgsName(TGtk3Widget(Data).LCLObject));
|
||||
end;
|
||||
16: // GDK_PROPERTY_NOTIFY
|
||||
GDK_PROPERTY_NOTIFY:
|
||||
begin
|
||||
// DebugLn('****** GDK_PROPERTY_NOTIFY FOR ',dbgsName(TGtk3Widget(Data).LCLObject));
|
||||
end;
|
||||
28: // GDK_CLIENT_EVENT
|
||||
GDK_CLIENT_EVENT:
|
||||
begin
|
||||
// DebugLn('****** GDK_CLIENT_EVENT FOR ',dbgsName(TGtk3Widget(Data).LCLObject));
|
||||
end;
|
||||
29: // GDK_VISIBILITY_NOTIFY
|
||||
GDK_VISIBILITY_NOTIFY:
|
||||
begin
|
||||
// ONLY HERE WE CAN CATCH Activate/Deactivate but problem is that
|
||||
// PGtkWindow does not update active property properly
|
||||
@ -1354,17 +1283,17 @@ begin
|
||||
// Result := TGtk3Widget(Data).GtkEventShowHide(Widget, Event);
|
||||
// DebugLn('****** GDK_VISIBILITY_NOTIFY FOR ' + dbgsName(TGtk3Widget(Data).LCLObject));
|
||||
end;
|
||||
31: // GDK_SCROLL
|
||||
GDK_SCROLL:
|
||||
begin
|
||||
// DebugLn('****** GDK_SCROLL ' + dbgsName(TGtk3Widget(Data).LCLObject));
|
||||
Result := TGtk3Widget(Data).GtkEventMouseWheel(Widget, Event);
|
||||
end;
|
||||
32: // GDK_WINDOW_STATE
|
||||
GDK_WINDOW_STATE:
|
||||
begin
|
||||
// DebugLn('****** GDK_WINDOW_STATE FOR ' + dbgsName(TGtk3Widget(Data).LCLObject));
|
||||
// this doesn't work as expected ... must use GDK_CONFIGURE to get active status ?!?
|
||||
end;
|
||||
35: // GDK_GRAB_BROKEN could be broken eg. because of popupmenu
|
||||
GDK_GRAB_BROKEN: //could be broken eg. because of popupmenu
|
||||
begin
|
||||
DebugLn('****** GDK_GRAB_BROKEN (no problem if popupmenu is activated) ' + dbgsName(TGtk3Widget(Data).LCLObject));
|
||||
end;
|
||||
@ -2084,7 +2013,7 @@ begin
|
||||
exit;
|
||||
end;
|
||||
|
||||
IsArrowKey := ((ACharCode = VK_UP) or (ACharCode = VK_DOWN) or (ACharCode = VK_LEFT) or (ACharCode = VK_RIGHT));
|
||||
IsArrowKey := (AEventString='') and ((ACharCode = VK_UP) or (ACharCode = VK_DOWN) or (ACharCode = VK_LEFT) or (ACharCode = VK_RIGHT));
|
||||
|
||||
{$IFDEF GTK3DEBUGKEYPRESS}
|
||||
if AKeyPress then
|
||||
@ -2110,11 +2039,14 @@ begin
|
||||
if not CanSendLCLMessage then
|
||||
exit;
|
||||
|
||||
if (DeliverMessage(Msg, True) <> 0) or (Msg.CharCode = VK_UNKNOWN) or EatArrowKeys(ACharCode) then
|
||||
if (DeliverMessage(Msg, True) <> 0) or (Msg.CharCode = VK_UNKNOWN) or (IsArrowKey{EatArrowKeys(ACharCode)}) then
|
||||
begin
|
||||
{$IFDEF GTK3DEBUGKEYPRESS}
|
||||
DebugLn('CN_KeyDownMsgs handled ... exiting');
|
||||
{$ENDIF}
|
||||
if ([wtEntry,wtMemo] * WidgetType <>[]) then
|
||||
exit(false)
|
||||
else
|
||||
exit(True);
|
||||
end;
|
||||
|
||||
@ -2135,7 +2067,7 @@ begin
|
||||
|
||||
{$warning workaround for GtkTreeView key bindings.Must find out what LCL does with
|
||||
this keys.}
|
||||
if IsArrowKey and ([wtListBox,wtListView] * WidgetType <> []) then
|
||||
if {IsArrowKey and} ([wtListBox,wtListView,wtEntry,wtMemo] * WidgetType <> []) then
|
||||
// let gtk3 select cell for now. Must check what LCL does with arrow keys
|
||||
// since gtk3 becomes crazy after delivery of this message
|
||||
else
|
||||
@ -2250,8 +2182,7 @@ begin
|
||||
MButton := Event^.button.button;
|
||||
|
||||
case Event^.type_ of
|
||||
// GDK_BUTTON_PRESS
|
||||
4:
|
||||
GDK_BUTTON_PRESS:
|
||||
begin
|
||||
if MButton = GTK3_LEFT_BUTTON then
|
||||
begin
|
||||
@ -2271,8 +2202,7 @@ begin
|
||||
Msg.Keys := Msg.Keys or MK_MBUTTON;
|
||||
end;
|
||||
end;
|
||||
// GDK_BUTTON2_PRESS -> double click
|
||||
5: // GDK_DOUBLE_BUTTON_PRESS
|
||||
GDK_2BUTTON_PRESS: //-> double click GDK_DOUBLE_BUTTON_PRESS
|
||||
begin
|
||||
if MButton = GTK3_LEFT_BUTTON then
|
||||
begin
|
||||
@ -2292,8 +2222,7 @@ begin
|
||||
Msg.Keys := Msg.Keys or MK_MBUTTON;
|
||||
end;
|
||||
end;
|
||||
// GDK_BUTTON_RELEASE: TGdkEventType = 7;
|
||||
7:
|
||||
GDK_BUTTON_RELEASE:
|
||||
begin
|
||||
if MButton = GTK3_LEFT_BUTTON then
|
||||
begin
|
||||
|
Loading…
Reference in New Issue
Block a user