From 7baaa34490585740c4500efcc5cc033932f04d26 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 9 Jan 2021 11:35:42 +0100 Subject: [PATCH] LibGUI: Make SortingProxyModel proxy accepts_drag() --- Libraries/LibGUI/FileSystemModel.cpp | 2 +- Libraries/LibGUI/FileSystemModel.h | 2 +- Libraries/LibGUI/Model.cpp | 4 ++-- Libraries/LibGUI/Model.h | 2 +- Libraries/LibGUI/SortingProxyModel.cpp | 5 +++++ Libraries/LibGUI/SortingProxyModel.h | 1 + 6 files changed, 11 insertions(+), 5 deletions(-) diff --git a/Libraries/LibGUI/FileSystemModel.cpp b/Libraries/LibGUI/FileSystemModel.cpp index f5ed18c637..a7e2b85852 100644 --- a/Libraries/LibGUI/FileSystemModel.cpp +++ b/Libraries/LibGUI/FileSystemModel.cpp @@ -589,7 +589,7 @@ String FileSystemModel::column_name(int column) const ASSERT_NOT_REACHED(); } -bool FileSystemModel::accepts_drag(const ModelIndex& index, const Vector& mime_types) +bool FileSystemModel::accepts_drag(const ModelIndex& index, const Vector& mime_types) const { if (!index.is_valid()) return false; diff --git a/Libraries/LibGUI/FileSystemModel.h b/Libraries/LibGUI/FileSystemModel.h index f2c0ea4e7b..2ef60bd708 100644 --- a/Libraries/LibGUI/FileSystemModel.h +++ b/Libraries/LibGUI/FileSystemModel.h @@ -147,7 +147,7 @@ public: virtual ModelIndex parent_index(const ModelIndex&) const override; virtual ModelIndex index(int row, int column = 0, const ModelIndex& parent = ModelIndex()) const override; virtual StringView drag_data_type() const override { return "text/uri-list"; } - virtual bool accepts_drag(const ModelIndex&, const Vector& mime_types) override; + virtual bool accepts_drag(const ModelIndex&, const Vector& mime_types) const override; virtual bool is_column_sortable(int column_index) const override { return column_index != Column::Icon; } virtual bool is_editable(const ModelIndex&) const override; virtual bool is_searchable() const override { return true; } diff --git a/Libraries/LibGUI/Model.cpp b/Libraries/LibGUI/Model.cpp index a1e4180a9b..59685bf743 100644 --- a/Libraries/LibGUI/Model.cpp +++ b/Libraries/LibGUI/Model.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2020, Andreas Kling + * Copyright (c) 2018-2021, Andreas Kling * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -71,7 +71,7 @@ ModelIndex Model::index(int row, int column, const ModelIndex&) const return create_index(row, column); } -bool Model::accepts_drag(const ModelIndex&, const Vector&) +bool Model::accepts_drag(const ModelIndex&, const Vector&) const { return false; } diff --git a/Libraries/LibGUI/Model.h b/Libraries/LibGUI/Model.h index 5402edcb31..c3dad9572f 100644 --- a/Libraries/LibGUI/Model.h +++ b/Libraries/LibGUI/Model.h @@ -82,7 +82,7 @@ public: virtual bool is_searchable() const { return false; } virtual void set_data(const ModelIndex&, const Variant&) { } virtual int tree_column() const { return 0; } - virtual bool accepts_drag(const ModelIndex&, const Vector& mime_types); + virtual bool accepts_drag(const ModelIndex&, const Vector& mime_types) const; virtual Vector matches(const StringView&, unsigned = MatchesFlag::AllMatching, const ModelIndex& = ModelIndex()) { return {}; } virtual bool is_column_sortable([[maybe_unused]] int column_index) const { return true; } diff --git a/Libraries/LibGUI/SortingProxyModel.cpp b/Libraries/LibGUI/SortingProxyModel.cpp index 0ebe169374..a0618ae410 100644 --- a/Libraries/LibGUI/SortingProxyModel.cpp +++ b/Libraries/LibGUI/SortingProxyModel.cpp @@ -63,6 +63,11 @@ void SortingProxyModel::model_did_update(unsigned flags) invalidate(flags); } +bool SortingProxyModel::accepts_drag(const ModelIndex& proxy_index, const Vector& mime_types) const +{ + return source().accepts_drag(map_to_source(proxy_index), mime_types); +} + int SortingProxyModel::row_count(const ModelIndex& proxy_index) const { return source().row_count(map_to_source(proxy_index)); diff --git a/Libraries/LibGUI/SortingProxyModel.h b/Libraries/LibGUI/SortingProxyModel.h index c82e29dc50..3398c6a89f 100644 --- a/Libraries/LibGUI/SortingProxyModel.h +++ b/Libraries/LibGUI/SortingProxyModel.h @@ -49,6 +49,7 @@ public: virtual bool is_searchable() const override; virtual void set_data(const ModelIndex&, const Variant&) override; virtual Vector matches(const StringView&, unsigned = MatchesFlag::AllMatching, const ModelIndex& = ModelIndex()) override; + virtual bool accepts_drag(const ModelIndex&, const Vector& mime_types) const override; virtual bool is_column_sortable(int column_index) const override;