本文整理汇总了C++中DataObjectGtk类的典型用法代码示例。如果您正苦于以下问题:C++ DataObjectGtk类的具体用法?C++ DataObjectGtk怎么用?C++ DataObjectGtk使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了DataObjectGtk类的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ASSERT
PassRefPtr<DocumentFragment> Pasteboard::documentFragment(Frame* frame, PassRefPtr<Range> context, bool allowPlainText, bool& chosePlainText)
{
GtkClipboard* clipboard = PasteboardHelper::clipboardForFrame(frame);
ASSERT(clipboard);
DataObjectGtk* dataObject = DataObjectGtk::forClipboard(clipboard);
ASSERT(dataObject);
PasteboardHelper::helper()->getClipboardContents(clipboard);
if (dataObject->hasMarkup()) {
chosePlainText = false;
String markup(dataObject->markup());
if (!markup.isEmpty()) {
RefPtr<DocumentFragment> fragment = createFragmentFromMarkup(frame->document(), markup, "");
if (fragment)
return fragment.release();
}
}
if (!allowPlainText || !dataObject->hasText())
return 0;
chosePlainText = true;
String text(dataObject->text());
RefPtr<DocumentFragment> fragment = createFragmentFromText(context.get(), text);
if (fragment)
return fragment.release();
return 0;
}
示例2: createFragmentFromMarkup
PassRefPtr<DocumentFragment> Pasteboard::documentFragment(Frame* frame, PassRefPtr<Range> context,
bool allowPlainText, bool& chosePlainText)
{
PasteboardHelper* helper = PasteboardHelper::defaultPasteboardHelper();
GtkClipboard* clipboard = helper->getCurrentClipboard(frame);
DataObjectGtk* dataObject = DataObjectGtk::forClipboard(clipboard);
helper->getClipboardContents(clipboard);
chosePlainText = false;
if (dataObject->hasMarkup()) {
RefPtr<DocumentFragment> fragment = createFragmentFromMarkup(frame->document(), dataObject->markup(), "", FragmentScriptingNotAllowed);
if (fragment)
return fragment.release();
}
if (!allowPlainText)
return 0;
if (dataObject->hasText()) {
chosePlainText = true;
RefPtr<DocumentFragment> fragment = createFragmentFromText(context.get(), dataObject->text());
if (fragment)
return fragment.release();
}
return 0;
}
示例3: clearClipboardContentsCallback
static void clearClipboardContentsCallback(GtkClipboard* clipboard, gpointer data)
{
DataObjectGtk* dataObject = DataObjectGtk::forClipboard(clipboard);
ASSERT(dataObject);
// Only clear the DataObject for this clipboard if we are not currently setting it.
if (dataObject != settingClipboardDataObject)
dataObject->clear();
// Only collapse the selection if this is an X11 primary clipboard
// and we aren't currently setting the clipboard for this WebView.
if (!data || data == settingClipboardData)
return;
WebKitWebView* webView = reinterpret_cast<WebKitWebView*>(data);
WebCore::Page* corePage = core(webView);
if (!corePage || !corePage->focusController()) {
g_object_unref(webView);
return;
}
Frame* frame = corePage->focusController()->focusedOrMainFrame();
// Collapse the selection without clearing it
ASSERT(frame);
frame->selection()->setBase(frame->selection()->extent(), frame->selection()->affinity());
g_object_unref(webView);
}
示例4: gtk_clipboard_get_for_display
void Pasteboard::writePlainText(const String& text)
{
GtkClipboard* clipboard = gtk_clipboard_get_for_display(gdk_display_get_default(), GDK_SELECTION_CLIPBOARD);
DataObjectGtk* dataObject = DataObjectGtk::forClipboard(clipboard);
dataObject->setText(text);
PasteboardHelper::defaultPasteboardHelper()->writeClipboardContents(clipboard);
}
示例5: ASSERT
void Pasteboard::writeImage(Node* node, const KURL&, const String& title)
{
ASSERT(node);
if (!(node->renderer() && node->renderer()->isImage()))
return;
RenderImage* renderer = toRenderImage(node->renderer());
CachedImage* cachedImage = renderer->cachedImage();
if (!cachedImage || cachedImage->errorOccurred())
return;
Image* image = cachedImage->imageForRenderer(renderer);
ASSERT(image);
GtkClipboard* clipboard = gtk_clipboard_get_for_display(gdk_display_get_default(), GDK_SELECTION_CLIPBOARD);
DataObjectGtk* dataObject = DataObjectGtk::forClipboard(clipboard);
KURL url = getURLForImageNode(node);
if (!url.isEmpty()) {
dataObject->setURL(url, title);
dataObject->setMarkup(createMarkup(static_cast<Element*>(node), IncludeNode, 0, ResolveAllURLs));
}
GRefPtr<GdkPixbuf> pixbuf = adoptGRef(image->getGdkPixbuf());
dataObject->setImage(pixbuf.get());
PasteboardHelper::defaultPasteboardHelper()->writeClipboardContents(clipboard);
}
示例6: plainText
String Pasteboard::plainText(Frame* frame)
{
PasteboardHelper* helper = PasteboardHelper::defaultPasteboardHelper();
GtkClipboard* clipboard = helper->getCurrentClipboard(frame);
DataObjectGtk* dataObject = DataObjectGtk::forClipboard(clipboard);
helper->getClipboardContents(clipboard);
return dataObject->text();
}
示例7: writeSelection
void Pasteboard::writeSelection(Range* selectedRange, bool canSmartCopyOrDelete, Frame* frame)
{
PasteboardHelper* helper = PasteboardHelper::defaultPasteboardHelper();
GtkClipboard* clipboard = helper->getClipboard(frame);
DataObjectGtk* dataObject = DataObjectGtk::forClipboard(clipboard);
dataObject->setText(frame->editor()->selectedText());
dataObject->setMarkup(createMarkup(selectedRange, 0, AnnotateForInterchange, false, ResolveNonLocalURLs));
helper->writeClipboardContents(clipboard, canSmartCopyOrDelete ? PasteboardHelper::IncludeSmartPaste : PasteboardHelper::DoNotIncludeSmartPaste);
}
示例8: gtk_clipboard_get_for_display
void Pasteboard::writePlainText(const String& text, SmartReplaceOption smartReplaceOption)
{
GtkClipboard* clipboard = gtk_clipboard_get_for_display(gdk_display_get_default(), GDK_SELECTION_CLIPBOARD);
DataObjectGtk* dataObject = DataObjectGtk::forClipboard(clipboard);
dataObject->clearAll();
dataObject->setText(text);
PasteboardHelper::defaultPasteboardHelper()->writeClipboardContents(clipboard,
(smartReplaceOption == CanSmartReplace) ? PasteboardHelper::IncludeSmartPaste : PasteboardHelper::DoNotIncludeSmartPaste);
}
示例9: clear
void Pasteboard::clear()
{
// TODO: Is there a way to get the widget's clipboard here?
GtkClipboard* clipboard = PasteboardHelper::clipboard();
DataObjectGtk* dataObject = DataObjectGtk::forClipboard(clipboard);
ASSERT(dataObject);
dataObject->clear();
PasteboardHelper::helper()->writeClipboardContents(clipboard);
}
示例10: writeURL
void Pasteboard::writeURL(const KURL& url, const String& label, Frame* frame)
{
if (url.isEmpty())
return;
PasteboardHelper* helper = PasteboardHelper::defaultPasteboardHelper();
GtkClipboard* clipboard = helper->getCurrentClipboard(frame);
DataObjectGtk* dataObject = DataObjectGtk::forClipboard(clipboard);
dataObject->clearAll();
dataObject->setURL(url, label);
helper->writeClipboardContents(clipboard);
}
示例11: clearClipboardContentsCallback
static void clearClipboardContentsCallback(GtkClipboard* clipboard, gpointer data)
{
DataObjectGtk* dataObject = DataObjectGtk::forClipboard(clipboard);
ASSERT(dataObject);
// Only clear the DataObject for this clipboard if we are not currently setting it.
if (dataObject != settingClipboardDataObject)
dataObject->clearAll();
if (!data)
return;
GRefPtr<GClosure> callback = adoptGRef(static_cast<GClosure*>(data));
GValue firstArgument = {0, {{0}}};
g_value_init(&firstArgument, G_TYPE_POINTER);
g_value_set_pointer(&firstArgument, clipboard);
g_closure_invoke(callback.get(), nullptr, 1, &firstArgument, 0);
}
示例12: createFragmentFromPasteboardData
static RefPtr<DocumentFragment> createFragmentFromPasteboardData(Pasteboard& pasteboard, Frame& frame, Range& range, bool allowPlainText, bool& chosePlainText)
{
chosePlainText = false;
if (!pasteboard.hasData())
return nullptr;
DataObjectGtk* dataObject = pasteboard.dataObject();
if (dataObject->hasMarkup() && frame.document())
return createFragmentFromMarkup(*frame.document(), dataObject->markup(), emptyString(), DisallowScriptingAndPluginContent);
if (!allowPlainText)
return nullptr;
if (dataObject->hasText()) {
chosePlainText = true;
return createFragmentFromText(range, dataObject->text());
}
return nullptr;
}
示例13: setSelectionPrimaryClipboardIfNeeded
static void setSelectionPrimaryClipboardIfNeeded(WebKitWebView* webView)
{
if (!gtk_widget_has_screen(GTK_WIDGET(webView)))
return;
GtkClipboard* clipboard = gtk_widget_get_clipboard(GTK_WIDGET(webView), GDK_SELECTION_PRIMARY);
DataObjectGtk* dataObject = DataObjectGtk::forClipboard(clipboard);
WebCore::Page* corePage = core(webView);
Frame* targetFrame = corePage->focusController()->focusedOrMainFrame();
if (!targetFrame->selection()->isRange())
return;
dataObject->clear();
dataObject->setRange(targetFrame->selection()->toNormalizedRange());
viewSettingClipboard = webView;
GClosure* callback = g_cclosure_new_object(G_CALLBACK(collapseSelection), G_OBJECT(webView));
g_closure_set_marshal(callback, g_cclosure_marshal_VOID__VOID);
PasteboardHelper::defaultPasteboardHelper()->writeClipboardContents(clipboard, PasteboardHelper::DoNotIncludeSmartPaste, callback);
viewSettingClipboard = 0;
}
示例14: PLATFORM
void WebEditorClient::updateGlobalSelection(Frame* frame)
{
#if PLATFORM(X11)
GtkClipboard* clipboard = PasteboardHelper::defaultPasteboardHelper()->getPrimarySelectionClipboard(frame);
DataObjectGtk* dataObject = DataObjectGtk::forClipboard(clipboard);
if (!frame->selection()->isRange())
return;
dataObject->clearAll();
dataObject->setRange(frame->selection()->toNormalizedRange());
frameSettingClipboard = frame;
GClosure* callback = g_cclosure_new(G_CALLBACK(collapseSelection), frame, 0);
// This observer will be self-destroyed on closure finalization,
// that will happen either after closure execution or after
// closure invalidation.
new EditorClientFrameDestructionObserver(frame, callback);
g_closure_set_marshal(callback, g_cclosure_marshal_VOID__VOID);
PasteboardHelper::defaultPasteboardHelper()->writeClipboardContents(clipboard, PasteboardHelper::DoNotIncludeSmartPaste, callback);
frameSettingClipboard = 0;
#endif
}