mirror of
https://github.com/hyprwm/Hyprland
synced 2024-12-22 20:29:48 +01:00
data-device: send dndFinished when dnd offer is destroyed while unfinished
fixes #7496
see 711c5bb43f
see https://bugs.kde.org/show_bug.cgi\?id\=482142
This commit is contained in:
parent
7dd0f76e5a
commit
00ee1cf98e
4 changed files with 16 additions and 1 deletions
|
@ -67,6 +67,13 @@ CWLDataOfferResource::CWLDataOfferResource(SP<CWlDataOffer> resource_, SP<IDataS
|
|||
});
|
||||
}
|
||||
|
||||
CWLDataOfferResource::~CWLDataOfferResource() {
|
||||
if (!source || !source->hasDnd() || dead)
|
||||
return;
|
||||
|
||||
source->sendDndFinished();
|
||||
}
|
||||
|
||||
bool CWLDataOfferResource::good() {
|
||||
return resource->resource();
|
||||
}
|
||||
|
@ -173,6 +180,7 @@ void CWLDataSourceResource::sendDndDropPerformed() {
|
|||
if (resource->version() < 3)
|
||||
return;
|
||||
resource->sendDndDropPerformed();
|
||||
dropped = true;
|
||||
}
|
||||
|
||||
void CWLDataSourceResource::sendDndFinished() {
|
||||
|
|
|
@ -29,6 +29,7 @@ class CMonitor;
|
|||
class CWLDataOfferResource {
|
||||
public:
|
||||
CWLDataOfferResource(SP<CWlDataOffer> resource_, SP<IDataSource> source_);
|
||||
~CWLDataOfferResource();
|
||||
|
||||
bool good();
|
||||
void sendData();
|
||||
|
@ -63,14 +64,15 @@ class CWLDataSourceResource : public IDataSource {
|
|||
virtual bool hasDnd();
|
||||
virtual bool dndDone();
|
||||
virtual void error(uint32_t code, const std::string& msg);
|
||||
virtual void sendDndFinished();
|
||||
|
||||
void sendDndDropPerformed();
|
||||
void sendDndFinished();
|
||||
void sendDndAction(wl_data_device_manager_dnd_action a);
|
||||
|
||||
bool used = false;
|
||||
bool dnd = false;
|
||||
bool dndSuccess = false;
|
||||
bool dropped = false;
|
||||
|
||||
WP<CWLDataDeviceResource> device;
|
||||
WP<CWLDataSourceResource> self;
|
||||
|
|
|
@ -19,3 +19,7 @@ void IDataSource::markUsed() {
|
|||
eDataSourceType IDataSource::type() {
|
||||
return DATA_SOURCE_TYPE_WAYLAND;
|
||||
}
|
||||
|
||||
void IDataSource::sendDndFinished() {
|
||||
;
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ class IDataSource {
|
|||
virtual void cancelled() = 0;
|
||||
virtual bool hasDnd();
|
||||
virtual bool dndDone();
|
||||
virtual void sendDndFinished();
|
||||
virtual bool used();
|
||||
virtual void markUsed();
|
||||
virtual void error(uint32_t code, const std::string& msg) = 0;
|
||||
|
|
Loading…
Reference in a new issue