mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-03 08:41:44 +02:00
Qt: fixed double triggering of OnColumnClick from listView, do not send mouse events from header to listView. issues #18696,#18693
git-svn-id: trunk@29398 -
This commit is contained in:
parent
5492a17fbb
commit
0a9654594b
@ -1152,7 +1152,7 @@ type
|
|||||||
|
|
||||||
TQtHeaderView = class (TQtAbstractItemView)
|
TQtHeaderView = class (TQtAbstractItemView)
|
||||||
private
|
private
|
||||||
FSelectionClicked: QHeaderView_hookH;
|
FSectionClicked: QHeaderView_hookH;
|
||||||
function getClickable: Boolean;
|
function getClickable: Boolean;
|
||||||
function getMinSectionSize: Integer;
|
function getMinSectionSize: Integer;
|
||||||
procedure setClickable(const AValue: Boolean);
|
procedure setClickable(const AValue: Boolean);
|
||||||
@ -1163,7 +1163,8 @@ type
|
|||||||
procedure AttachEvents; override;
|
procedure AttachEvents; override;
|
||||||
procedure DetachEvents; override;
|
procedure DetachEvents; override;
|
||||||
function EventFilter(Sender: QObjectH; Event: QEventH): Boolean; cdecl; override;
|
function EventFilter(Sender: QObjectH; Event: QEventH): Boolean; cdecl; override;
|
||||||
procedure SignalSectionClicked(logicalIndex: Integer) cdecl;
|
function itemViewViewportEventFilter(Sender: QObjectH; Event: QEventH): Boolean; cdecl; override;
|
||||||
|
procedure SignalSectionClicked(logicalIndex: Integer); cdecl;
|
||||||
function getResizeMode(AIndex: Integer): QHeaderViewResizeMode;
|
function getResizeMode(AIndex: Integer): QHeaderViewResizeMode;
|
||||||
procedure setResizeMode(AResizeMode: QHeaderViewResizeMode); overload;
|
procedure setResizeMode(AResizeMode: QHeaderViewResizeMode); overload;
|
||||||
procedure setResizeMode(AIndex: Integer; AResizeMode: QHeaderViewResizeMode); overload;
|
procedure setResizeMode(AIndex: Integer; AResizeMode: QHeaderViewResizeMode); overload;
|
||||||
@ -1206,7 +1207,6 @@ type
|
|||||||
private
|
private
|
||||||
FSorting: Boolean;
|
FSorting: Boolean;
|
||||||
FHeader: TQtHeaderView;
|
FHeader: TQtHeaderView;
|
||||||
FSectionClicked: QHeaderView_hookH;
|
|
||||||
FSortChanged: QHeaderView_hookH;
|
FSortChanged: QHeaderView_hookH;
|
||||||
FCurrentItemChangedHook: QTreeWidget_hookH;
|
FCurrentItemChangedHook: QTreeWidget_hookH;
|
||||||
FItemDoubleClickedHook: QTreeWidget_hookH;
|
FItemDoubleClickedHook: QTreeWidget_hookH;
|
||||||
@ -9441,13 +9441,13 @@ end;
|
|||||||
procedure TQtHeaderView.AttachEvents;
|
procedure TQtHeaderView.AttachEvents;
|
||||||
begin
|
begin
|
||||||
inherited AttachEvents;
|
inherited AttachEvents;
|
||||||
FSelectionClicked := QHeaderView_hook_create(Widget);
|
FSectionClicked := QHeaderView_hook_create(Widget);
|
||||||
QHeaderView_hook_hook_sectionClicked(FSelectionClicked, @SignalSectionClicked);
|
QHeaderView_hook_hook_sectionClicked(FSectionClicked, @SignalSectionClicked);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TQtHeaderView.DetachEvents;
|
procedure TQtHeaderView.DetachEvents;
|
||||||
begin
|
begin
|
||||||
QHeaderView_hook_destroy(FSelectionClicked);
|
QHeaderView_hook_destroy(FSectionClicked);
|
||||||
inherited DetachEvents;
|
inherited DetachEvents;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -9468,6 +9468,20 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TQtHeaderView.itemViewViewportEventFilter(Sender: QObjectH;
|
||||||
|
Event: QEventH): Boolean; cdecl;
|
||||||
|
begin
|
||||||
|
Result := False;
|
||||||
|
QEvent_accept(Event);
|
||||||
|
case QEvent_type(Event) of
|
||||||
|
QEventMouseButtonPress,
|
||||||
|
QEventMouseButtonRelease,
|
||||||
|
QEventMouseButtonDblClick: ; {do nothing here - signal is fired}
|
||||||
|
else
|
||||||
|
Result := inherited itemViewViewportEventFilter(Sender, Event);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
{------------------------------------------------------------------------------
|
{------------------------------------------------------------------------------
|
||||||
Function: TQtHeaderView.SignalSectionClicked
|
Function: TQtHeaderView.SignalSectionClicked
|
||||||
Params: None
|
Params: None
|
||||||
@ -9834,9 +9848,6 @@ begin
|
|||||||
FHeader := TQtHeaderView.CreateFrom(LCLObject, QTreeView_header(QTreeViewH(Widget)));
|
FHeader := TQtHeaderView.CreateFrom(LCLObject, QTreeView_header(QTreeViewH(Widget)));
|
||||||
FHeader.FOwner := Self;
|
FHeader.FOwner := Self;
|
||||||
FHeader.FChildOfComplexWidget := ccwTreeWidget;
|
FHeader.FChildOfComplexWidget := ccwTreeWidget;
|
||||||
FSectionClicked := QHeaderView_hook_create(FHeader.Widget);
|
|
||||||
QHeaderView_hook_hook_sectionClicked(FSectionClicked,
|
|
||||||
@FHeader.SignalSectionClicked);
|
|
||||||
FSortChanged := QHeaderView_hook_create(FHeader.Widget);
|
FSortChanged := QHeaderView_hook_create(FHeader.Widget);
|
||||||
QHeaderView_hook_hook_sortIndicatorChanged(FSortChanged,
|
QHeaderView_hook_hook_sortIndicatorChanged(FSortChanged,
|
||||||
@SignalSortIndicatorChanged);
|
@SignalSortIndicatorChanged);
|
||||||
@ -10210,8 +10221,6 @@ begin
|
|||||||
QTreeWidget_hook_destroy(FItemEnteredHook);
|
QTreeWidget_hook_destroy(FItemEnteredHook);
|
||||||
QTreeWidget_hook_destroy(FSelectionChangedHook);
|
QTreeWidget_hook_destroy(FSelectionChangedHook);
|
||||||
|
|
||||||
if FSectionClicked <> nil then
|
|
||||||
QHeaderView_hook_destroy(FSectionClicked);
|
|
||||||
if FSortChanged <> nil then
|
if FSortChanged <> nil then
|
||||||
QHeaderView_hook_destroy(FSortChanged);
|
QHeaderView_hook_destroy(FSortChanged);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user