gecko-dev/widget/gtk/nsClipboard.h
Brindusan Cristian 817b88aae9 Backed out 4 changesets (bug 1590965) as requested by karlt on irc. CLOSED TREE
Backed out changeset f68c212c8b2a (bug 1590965)
Backed out changeset 1ced33f66353 (bug 1590965)
Backed out changeset 22f28d146e38 (bug 1590965)
Backed out changeset 70331e97107e (bug 1590965)
2019-11-06 02:32:29 +02:00

92 lines
2.9 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 __nsClipboard_h_
#define __nsClipboard_h_
#include "nsIClipboard.h"
#include "nsIObserver.h"
#include "nsIBinaryOutputStream.h"
#include <gtk/gtk.h>
#ifdef MOZ_LOGGING
# include "mozilla/Logging.h"
# include "nsTArray.h"
# include "Units.h"
extern mozilla::LazyLogModule gClipboardLog;
# define LOGCLIP(args) MOZ_LOG(gClipboardLog, mozilla::LogLevel::Debug, args)
#else
# define LOGCLIP(args)
#endif /* MOZ_LOGGING */
class nsRetrievalContext {
public:
// Get actual clipboard content (GetClipboardData/GetClipboardText)
// which has to be released by ReleaseClipboardData().
virtual const char* GetClipboardData(const char* aMimeType,
int32_t aWhichClipboard,
uint32_t* aContentLength) = 0;
virtual const char* GetClipboardText(int32_t aWhichClipboard) = 0;
virtual void ReleaseClipboardData(const char* aClipboardData) = 0;
// Get data mime types which can be obtained from clipboard.
// The returned array has to be released by g_free().
virtual GdkAtom* GetTargets(int32_t aWhichClipboard, int* aTargetNum) = 0;
virtual bool HasSelectionSupport(void) = 0;
virtual ~nsRetrievalContext(){};
};
class nsClipboard : public nsIClipboard, public nsIObserver {
public:
nsClipboard();
NS_DECL_ISUPPORTS
NS_DECL_NSIOBSERVER
NS_DECL_NSICLIPBOARD
// Make sure we are initialized, called from the factory
// constructor
nsresult Init(void);
// Someone requested the selection
void SelectionGetEvent(GtkClipboard* aGtkClipboard,
GtkSelectionData* aSelectionData);
void SelectionClearEvent(GtkClipboard* aGtkClipboard);
private:
virtual ~nsClipboard();
// Save global clipboard content to gtk
nsresult Store(void);
// Get our hands on the correct transferable, given a specific
// clipboard
nsITransferable* GetTransferable(int32_t aWhichClipboard);
// Send clipboard data by nsITransferable
void SetTransferableData(nsITransferable* aTransferable, nsCString& aFlavor,
const char* aClipboardData,
uint32_t aClipboardDataLength);
// Hang on to our owners and transferables so we can transfer data
// when asked.
nsCOMPtr<nsIClipboardOwner> mSelectionOwner;
nsCOMPtr<nsIClipboardOwner> mGlobalOwner;
nsCOMPtr<nsITransferable> mSelectionTransferable;
nsCOMPtr<nsITransferable> mGlobalTransferable;
nsAutoPtr<nsRetrievalContext> mContext;
};
extern const int kClipboardTimeout;
GdkAtom GetSelectionAtom(int32_t aWhichClipboard);
int GetGeckoClipboardType(GtkClipboard* aGtkClipboard);
#endif /* __nsClipboard_h_ */