bool ClipboardHelperEfl::ConvertImgTagToBase64(const std::string& tag,
std::string* out_tag) {
std::string::size_type front_pos = tag.find(kHTMLImageFromClipboardAppFront);
- if (front_pos == std::string::npos) {
- LOG(ERROR) << "[CLIPBOARD] couldn't find "
- << kHTMLImageFromClipboardAppFront
- << " in html from clipboard app: " << tag;
+ if (front_pos == std::string::npos)
return false;
- }
std::string front_stripped =
tag.substr(front_pos + kHTMLImageFromClipboardAppFrontLength);
*data = clipboard_text();
return true;
} else if (elm_format == ELM_SEL_FORMAT_HTML) {
- LOG(INFO) << "[CLIPBOARD] RetrieveClipboardItem! ELM_SEL_FORMAT_HTML! - "
- << clipboard_html();
*data = clipboard_html();
// When text is copied from another app and the webview has focus,
// only the callback function for the text is received.
// it will fall back to html text.
if (data->empty())
*data = clipboard_text();
+
+ LOG(INFO) << "[CLIPBOARD] RetrieveClipboardItem! ELM_SEL_FORMAT_HTML! - "
+ << *data;
return true;
}
<< "[CLIPBOARD] clear clipboard_contents_ and clipboard_contents_html_!!";
clipboard_contents_.clear();
clipboard_contents_html_.clear();
- Elm_Sel_Format formats =
- static_cast<Elm_Sel_Format>(ELM_SEL_FORMAT_TEXT | ELM_SEL_FORMAT_HTML);
- elm_cnp_selection_get(source_widget_, ELM_SEL_TYPE_CLIPBOARD, formats,
- SelectionGetCb, this);
+ elm_cnp_selection_get(source_widget_, ELM_SEL_TYPE_CLIPBOARD,
+ ELM_SEL_FORMAT_HTML, SelectionGetCbHTML, this);
+ elm_cnp_selection_get(source_widget_, ELM_SEL_TYPE_CLIPBOARD,
+ ELM_SEL_FORMAT_TEXT, SelectionGetCbText, this);
#else
if (elm_cnp_selection_get(source_widget_, ELM_SEL_TYPE_CLIPBOARD,
ELM_SEL_FORMAT_HTML, SelectionGetCbHTML, this))
#endif
}
-Eina_Bool ClipboardHelperEfl::SelectionGetCb(void* data,
- Evas_Object* obj,
- Elm_Selection_Data* ev) {
- LOG(INFO) << "[CLIPBOARD] SelectionGetCb!";
-
- if (!ev->data) {
- LOG(ERROR) << "[CLIPBOARD] ClipboardHelperEfl::SelectionGetCb no data";
- return EINA_TRUE;
- }
-
- if (ev->format == ELM_SEL_FORMAT_TEXT) {
- std::string selection_data_text(static_cast<char*>(ev->data));
- LOG(INFO) << "[CLIPBOARD] SelectionGetCb for text - "
- << selection_data_text;
- SelectionGetCbText(data, obj, ev);
- } else if (ev->format == ELM_SEL_FORMAT_HTML) {
- std::string selection_data_html(static_cast<char*>(ev->data), ev->len);
- LOG(INFO) << "[CLIPBOARD] SelectionGetCb for html - "
- << selection_data_html;
- SelectionGetCbHTML(data, obj, ev);
- } else {
- LOG(INFO) << "[CLIPBOARD] It is a different format than"
- " ELM_SEL_FORMAT_TEXT and ELM_SEL_FORMAT_HTML";
- }
-
- return EINA_TRUE;
-}
-
Eina_Bool ClipboardHelperEfl::SelectionGetCbHTML(void* data,
Evas_Object* obj,
Elm_Selection_Data* ev) {
LOG(ERROR) << "[CLIPBOARD] ClipboardHelperEfl::SelectionGetCbHTML no data";
return EINA_TRUE;
}
+ LOG(INFO) << "[CLIPBOARD] SelectionGetCbHTML,data:"
+ << static_cast<char*>(ev->data);
// Convert ev->data to std::string, because it might not be
// a null terminated c-string.
std::string img_tag;
if (ConvertImgTagToBase64(selection_data, &img_tag)) {
self->clipboard_contents_html_ = img_tag;
- LOG(INFO) << "[CLIPBOARD] image type, set clipboard_contents_html_ : "
+ LOG(INFO) << "[CLIPBOARD] image type, set selection_data to html : "
<< self->clipboard_contents_html_;
} else {
+ LOG(INFO) << "[CLIPBOARD] set selection_data to html : " << selection_data;
self->clipboard_contents_html_ = selection_data;
-#if BUILDFLAG(IS_TIZEN_TV)
- LOG(INFO) << "[CLIPBOARD] set clipboard_contents_html_ : "
- << self->clipboard_contents_html_;
- char* markup_to_utf8 =
- evas_textblock_text_markup_to_utf8(NULL, static_cast<char*>(ev->data));
- if (!markup_to_utf8) {
- LOG(INFO) << "[CLIPBOARD] markup_to_utf8 is null, "
- "cannot set clipboard_contents_";
- } else {
- self->clipboard_contents_ = markup_to_utf8;
- LOG(INFO) << "[CLIPBOARD] set clipboard_contents_ : "
- << self->clipboard_contents_;
- free(markup_to_utf8);
- }
-#else
+
// We received html from clipboard app, but we also want plain text version
// of the selection. See comment in ::RefreshClipboard why we do it here.
// Also we have to post it on UI thread, because ::SelectionGetCbHTML is
// TODO(g.ludwikowsk): should we also get text for images?
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE, base::BindRepeating(GetClipboardTextPost, self));
-#endif
}
return EINA_TRUE;
}
LOG(ERROR) << "[CLIPBOARD] ClipboardHelperEfl::SelectionGetCbText no data";
return EINA_TRUE;
}
+ LOG(INFO) << "[CLIPBOARD] SelectionGetCbText,data:"
+ << static_cast<char*>(ev->data);
// Convert ev->data to std::string, because it might not be
// a null terminated c-string.