gecko-dev/widget/gtk/nsClipboardWayland.h
stransky 7d218e435f Bug 1743365 [Linux] Cache clipboard targets r=emilio
nsClipboard::HasDataMatchingFlavors() calls nsRetrievalContext::GetTargets() which obtains clipboard targets. We need to call Gtk code for that and spin evetn loop to get the targets.
In this patch we store clipboard tragets internally to speed up nsClipboard::HasDataMatchingFlavors() calls. We also listen at owner-change signal to clear target cache when clipboard content changes.

Differential Revision: https://phabricator.services.mozilla.com/D137899
2022-02-11 07:43:11 +00:00

29 lines
1.0 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4:
*/
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef __nsClipboardWayland_h_
#define __nsClipboardWayland_h_
#include "mozilla/Mutex.h"
#include "nsClipboard.h"
class nsRetrievalContextWayland final : public nsRetrievalContext {
public:
nsRetrievalContextWayland();
ClipboardData GetClipboardData(const char* aMimeType,
int32_t aWhichClipboard) override;
mozilla::GUniquePtr<char> GetClipboardText(int32_t aWhichClipboard) override;
ClipboardTargets GetTargetsImpl(int32_t aWhichClipboard) override;
private:
ClipboardData WaitForClipboardData(ClipboardDataType, int32_t aWhichClipboard,
const char* aMimeType = nullptr);
};
#endif /* __nsClipboardWayland_h_ */