2 * Copyright 2012 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.tizenopensource.org/license
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 #include "browser-context-menu.h"
20 #include "browser-view.h"
22 Browser_Context_Menu::Browser_Context_Menu(Browser_View *browser_view)
23 : m_browser_view(browser_view)
26 BROWSER_LOGD("[%s]", __func__);
29 Browser_Context_Menu::~Browser_Context_Menu(void)
31 BROWSER_LOGD("[%s]", __func__);
34 void Browser_Context_Menu::init(Evas_Object *ewk_view)
36 BROWSER_LOGD("[%s]", __func__);
40 m_ewk_view = ewk_view;
42 evas_object_smart_callback_add(ewk_view, "contextmenu,customize", __get_context_menu_from_proposed_context_menu_cb, this);
43 evas_object_smart_callback_add(ewk_view, "contextmenu,selected", __custom_context_menu_item_selected_cb, this);
46 void Browser_Context_Menu::deinit(void)
48 BROWSER_LOGD("[%s]", __func__);
50 evas_object_smart_callback_del(m_ewk_view, "contextmenu,customize",
51 __get_context_menu_from_proposed_context_menu_cb);
52 evas_object_smart_callback_del(m_ewk_view, "contextmenu,selected",
53 __custom_context_menu_item_selected_cb);
57 Eina_Bool Browser_Context_Menu::launch_context_menu(Ewk_Context_Menu *menu)
59 BROWSER_LOGD("[%s]", __func__);
64 switch (_check_context_menu_mode(menu)) {
65 case CUSTOM_CONTEXT_MENU_TEXT_ONLY_MODE:
66 _append_text_only_mode_context_menu(menu);
69 case CUSTOM_CONTEXT_MENU_HYPERLINK_ONLY_MODE:
70 _append_hyperlink_only_mode_context_menu(menu);
73 case CUSTOM_CONTEXT_MENU_TEXT_WITH_HYPERLINK_MODE:
74 _append_text_with_hyperlink_mode_context_menu(menu);
77 case CUSTOM_CONTEXT_MENU_IMAGE_ONLY_MODE:
78 _append_image_only_mode_context_menu(menu);
81 case CUSTOM_CONTEXT_MENU_IMAGE_WITH_HYPERLINK_MODE:
82 _append_image_with_hyperlink_mode_context_menu(menu);
85 case CUSTOM_CONTEXT_MENU_TEXT_AND_IMAGE_SELECTION_MODE:
90 _append_normal_mode_context_menu(menu);
95 void Browser_Context_Menu::__get_context_menu_from_proposed_context_menu_cb(void *data, Evas_Object *obj, void *event_info)
97 BROWSER_LOGD("[%s]", __func__);
104 Ewk_Context_Menu *menu = static_cast<Ewk_Context_Menu*>(event_info);
105 Browser_Context_Menu *context_menu = static_cast<Browser_Context_Menu *>(data);
106 context_menu->launch_context_menu(menu);
109 void Browser_Context_Menu::__custom_context_menu_item_selected_cb(void *data, Evas_Object *obj, void *event_info)
111 BROWSER_LOGD("[%s]", __func__);
115 Ewk_Context_Menu_Item* item = static_cast<Ewk_Context_Menu_Item*>(event_info);
116 Browser_Context_Menu *context_menu = static_cast<Browser_Context_Menu *>(data);
118 std::string link_url_string = ewk_context_menu_item_link_url_get(item);
119 BROWSER_LOGD("link url=[%s]", link_url_string.c_str());
120 std::string image_url_string = ewk_context_menu_item_image_url_get(item);
121 BROWSER_LOGD("image url=[%s]", image_url_string.c_str());
123 const char *selected_text = ewk_view_text_selection_text_get(context_menu->m_ewk_view);
125 Ewk_Context_Menu_Item_Tag tag = ewk_context_menu_item_tag_get(item);
127 case CUSTOM_CONTEXT_MENU_ITEM_FIND_ON_TAG:
128 BROWSER_LOGD("Find selected text[%s] on the page", selected_text);
129 if (selected_text && strlen(selected_text) > 0)
130 context_menu->find_word_with_text(selected_text);
137 Eina_Bool Browser_Context_Menu::_check_context_menu_mode(Ewk_Context_Menu *menu)
139 BROWSER_LOGD("[%s]", __func__);
144 int count = ewk_context_menu_item_count(menu);
146 Eina_Bool has_text = EINA_FALSE;
147 Eina_Bool has_image = EINA_FALSE;
148 Eina_Bool has_hyperlink = EINA_FALSE;
150 Ewk_Context_Menu_Item *item;
151 Ewk_Context_Menu_Item_Tag tag;
153 for (int i = 0; i < count; i++) {
154 item = ewk_context_menu_nth_item_get(menu, i);
155 tag = ewk_context_menu_item_tag_get(item);
156 BROWSER_LOGD("tag[%d]", tag);
158 if ((tag == EWK_CONTEXT_MENU_ITEM_TAG_COPY)
159 || (tag == EWK_CONTEXT_MENU_ITEM_TAG_CUT)
160 || (tag == EWK_CONTEXT_MENU_ITEM_TAG_PASTE)
161 || (tag == EWK_CONTEXT_MENU_ITEM_TAG_SELECT_ALL)
162 || (tag == EWK_CONTEXT_MENU_ITEM_TAG_SEARCH_WEB)
163 || (tag == EWK_CONTEXT_MENU_ITEM_TAG_SELECT_WORD))
164 has_text = EINA_TRUE;
166 if ((tag == EWK_CONTEXT_MENU_ITEM_TAG_OPEN_LINK)
167 || (tag == EWK_CONTEXT_MENU_ITEM_TAG_OPEN_LINK_IN_NEW_WINDOW)
168 || (tag == EWK_CONTEXT_MENU_ITEM_TAG_DOWNLOAD_LINK_TO_DISK)
169 || (tag == EWK_CONTEXT_MENU_ITEM_TAG_COPY_LINK_TO_CLIPBOARD))
170 has_hyperlink = EINA_TRUE;
172 if ((tag == EWK_CONTEXT_MENU_ITEM_TAG_COPY_IMAGE_TO_CLIPBOARD)
173 || (tag == EWK_CONTEXT_MENU_ITEM_TAG_DOWNLOAD_IMAGE_TO_DISK)
174 || (tag == EWK_CONTEXT_MENU_ITEM_TAG_OPEN_FRAME_IN_NEW_WINDOW)
175 || (tag == EWK_CONTEXT_MENU_ITEM_TAG_OPEN_IMAGE_IN_NEW_WINDOW))
176 has_image = EINA_TRUE;
179 if (has_text == EINA_TRUE && has_hyperlink == EINA_FALSE && has_image == EINA_FALSE) {
180 BROWSER_LOGD("CUSTOM_CONTEXT_MENU_TEXT_ONLY_MODE");
181 return CUSTOM_CONTEXT_MENU_TEXT_ONLY_MODE;
182 } else if (has_text == EINA_TRUE && has_hyperlink == EINA_FALSE && has_image == EINA_TRUE) {
183 BROWSER_LOGD("CUSTOM_CONTEXT_MENU_TEXT_AND_IMAGE_SELECTION_MODE");
184 return CUSTOM_CONTEXT_MENU_TEXT_AND_IMAGE_SELECTION_MODE;
185 } else if (has_text == EINA_TRUE && has_hyperlink == EINA_TRUE && has_image == EINA_TRUE) {
186 BROWSER_LOGD("CUSTOM_CONTEXT_MENU_TEXT_WITH_HYPERLINK_MODE");
187 return CUSTOM_CONTEXT_MENU_TEXT_WITH_HYPERLINK_MODE;
188 } else if (has_text == EINA_FALSE && has_hyperlink == EINA_TRUE && has_image == EINA_FALSE) {
189 BROWSER_LOGD("CUSTOM_CONTEXT_MENU_HYPERLINK_ONLY_MODE");
190 return CUSTOM_CONTEXT_MENU_HYPERLINK_ONLY_MODE;
191 } else if (has_text == EINA_FALSE && has_hyperlink == EINA_FALSE && has_image == EINA_TRUE){
192 BROWSER_LOGD("CUSTOM_CONTEXT_MENU_IMAGE_ONLY_MODE");
193 return CUSTOM_CONTEXT_MENU_IMAGE_ONLY_MODE;
194 } else if (has_text == EINA_FALSE && has_hyperlink == EINA_TRUE && has_image == EINA_TRUE){
195 BROWSER_LOGD("CUSTOM_CONTEXT_MENU_IMAGE_WITH_HYPERLINK_MODE");
196 return CUSTOM_CONTEXT_MENU_IMAGE_WITH_HYPERLINK_MODE;
198 BROWSER_LOGD("CUSTOM_CONTEXT_MENU_MODE_INDEX_END");
199 return CUSTOM_CONTEXT_MENU_MODE_INDEX_END;
203 Eina_Bool Browser_Context_Menu::_append_text_only_mode_context_menu(Ewk_Context_Menu *menu)
205 BROWSER_LOGD("[%s]", __func__);
210 Ewk_Context_Menu_Item *item;
211 Ewk_Context_Menu_Item_Tag tag;
213 int count = ewk_context_menu_item_count(menu);
214 int *custom_context_menu_array = NULL;
218 custom_context_menu_array = (int *)malloc(sizeof(int) * count);
219 if (!custom_context_menu_array)
222 memset(custom_context_menu_array, 0x00, sizeof(int) * count);
224 /* To re-arrange menu order to follow UX guideline
225 : copy menu would be best if it's at the first in context menu */
226 for (int i = 0; i < count; i++) {
227 item = ewk_context_menu_nth_item_get(menu, i);
228 tag = ewk_context_menu_item_tag_get(item);
230 if (tag == EWK_CONTEXT_MENU_ITEM_TAG_COPY) {
231 custom_context_menu_array[index++] = EWK_CONTEXT_MENU_ITEM_TAG_COPY;
232 ewk_context_menu_item_remove(menu, item);
236 for (int i = 0; i < count; i++) {
237 item = ewk_context_menu_nth_item_get(menu, i);
238 tag = ewk_context_menu_item_tag_get(item);
240 if (tag == EWK_CONTEXT_MENU_ITEM_TAG_CUT) {
241 custom_context_menu_array[index++] = EWK_CONTEXT_MENU_ITEM_TAG_CUT;
242 ewk_context_menu_item_remove(menu, item);
247 for (int i = index; i < count; i++) {
248 item = ewk_context_menu_nth_item_get(menu, 0);
249 tag = ewk_context_menu_item_tag_get(item);
251 custom_context_menu_array[index++] = tag;
252 ewk_context_menu_item_remove(menu, item);
255 for (int i = 0; i < count; i++) {
256 tag = custom_context_menu_array[i];
259 case EWK_CONTEXT_MENU_ITEM_TAG_CUT:
260 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_CUT, true);
262 case EWK_CONTEXT_MENU_ITEM_TAG_PASTE:
263 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_PASTE, true);
265 case EWK_CONTEXT_MENU_ITEM_TAG_COPY:
266 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_COPY, true);
267 ewk_context_menu_item_append_as_action(menu, CUSTOM_CONTEXT_MENU_ITEM_FIND_ON_TAG, BR_STRING_CTXMENU_FIND_ON_PAGE, true);
269 case EWK_CONTEXT_MENU_ITEM_TAG_SELECT_ALL:
270 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_SELECT_ALL, true);
272 case EWK_CONTEXT_MENU_ITEM_TAG_SELECT_WORD:
273 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_SELECT_WORD, true);
280 if (custom_context_menu_array)
281 free(custom_context_menu_array);
282 custom_context_menu_array = NULL;
287 Eina_Bool Browser_Context_Menu::_append_text_with_hyperlink_mode_context_menu(Ewk_Context_Menu *menu)
289 BROWSER_LOGD("[%s]", __func__);
294 return _append_hyperlink_only_mode_context_menu(menu);
297 Eina_Bool Browser_Context_Menu::_append_hyperlink_only_mode_context_menu(Ewk_Context_Menu *menu)
299 BROWSER_LOGD("[%s]", __func__);
304 Ewk_Context_Menu_Item *item;
305 Ewk_Context_Menu_Item_Tag tag;
307 int count = ewk_context_menu_item_count(menu);
308 int *custom_context_menu_array = (int *)malloc(sizeof(int) * count);
313 if (!custom_context_menu_array)
316 memset(custom_context_menu_array, 0x00, sizeof(int) * count);
318 /* To re-arrange menu order to follow UX guideline
319 : "Open in new window" menu would be best if it's at the first in context menu */
320 for (int i = 0; i < count; i++) {
321 item = ewk_context_menu_nth_item_get(menu, i);
322 tag = ewk_context_menu_item_tag_get(item);
324 if (tag == EWK_CONTEXT_MENU_ITEM_TAG_OPEN_LINK) {
325 custom_context_menu_array[index++] = EWK_CONTEXT_MENU_ITEM_TAG_OPEN_LINK;
326 ewk_context_menu_item_remove(menu, item);
330 for (int i = 0; i < count; i++) {
331 item = ewk_context_menu_nth_item_get(menu, i);
332 tag = ewk_context_menu_item_tag_get(item);
334 if (tag == EWK_CONTEXT_MENU_ITEM_TAG_OPEN_LINK_IN_NEW_WINDOW) {
335 custom_context_menu_array[index++] = EWK_CONTEXT_MENU_ITEM_TAG_OPEN_LINK_IN_NEW_WINDOW;
336 ewk_context_menu_item_remove(menu, item);
340 for (int i = 0; i < count; i++) {
341 item = ewk_context_menu_nth_item_get(menu, i);
342 tag = ewk_context_menu_item_tag_get(item);
344 if (tag == EWK_CONTEXT_MENU_ITEM_TAG_COPY_LINK_TO_CLIPBOARD) {
345 custom_context_menu_array[index++] = EWK_CONTEXT_MENU_ITEM_TAG_COPY_LINK_TO_CLIPBOARD;
346 ewk_context_menu_item_remove(menu, item);
350 for (int i = index; i < count; i++) {
351 item = ewk_context_menu_nth_item_get(menu, 0);
352 tag = ewk_context_menu_item_tag_get(item);
354 custom_context_menu_array[index++] = tag;
355 ewk_context_menu_item_remove(menu, item);
358 for (int i = 0; i < count; i++) {
359 tag = custom_context_menu_array[i];
363 case EWK_CONTEXT_MENU_ITEM_TAG_OPEN_LINK:
364 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_OPEN, true);
367 case EWK_CONTEXT_MENU_ITEM_TAG_OPEN_LINK_IN_NEW_WINDOW:
368 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_OPEN_LINK_IN_NEW_WINDOW, true);
370 case EWK_CONTEXT_MENU_ITEM_TAG_COPY_LINK_TO_CLIPBOARD:
371 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_COPY_LINK_LOCATION, true);
374 case EWK_CONTEXT_MENU_ITEM_TAG_DOWNLOAD_LINK_TO_DISK:
375 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_SAVE_LINK, true);
383 if (custom_context_menu_array)
384 free(custom_context_menu_array);
385 custom_context_menu_array = NULL;
390 Eina_Bool Browser_Context_Menu::_append_image_only_mode_context_menu(Ewk_Context_Menu *menu)
392 BROWSER_LOGD("[%s]", __func__);
397 Ewk_Context_Menu_Item *item;
398 Ewk_Context_Menu_Item_Tag tag;
400 int count = ewk_context_menu_item_count(menu);
401 int *custom_context_menu_array = (int *)malloc(sizeof(int) * count);
406 if (!custom_context_menu_array)
409 memset(custom_context_menu_array, 0x00, sizeof(int) * count);
411 /* To re-arrange menu order to follow UX guideline
412 : "Copy image" menu would be best if it's at the first in context menu */
413 for (int i = 0; i < count; i++) {
414 item = ewk_context_menu_nth_item_get(menu, i);
415 tag = ewk_context_menu_item_tag_get(item);
417 if (tag == EWK_CONTEXT_MENU_ITEM_TAG_COPY_IMAGE_TO_CLIPBOARD) {
418 custom_context_menu_array[index++] = EWK_CONTEXT_MENU_ITEM_TAG_COPY_IMAGE_TO_CLIPBOARD;
419 ewk_context_menu_item_remove(menu, item);
423 for (int i = index; i < count; i++) {
424 item = ewk_context_menu_nth_item_get(menu, 0);
425 tag = ewk_context_menu_item_tag_get(item);
427 custom_context_menu_array[index++] = tag;
428 ewk_context_menu_item_remove(menu, item);
431 for (int i = 0; i < count; i++) {
432 tag = custom_context_menu_array[i];
435 case EWK_CONTEXT_MENU_ITEM_TAG_COPY_IMAGE_TO_CLIPBOARD:
436 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_COPY_IMAGE, true);
438 case EWK_CONTEXT_MENU_ITEM_TAG_OPEN_IMAGE_IN_NEW_WINDOW:
439 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_OPEN_IMAGE_IN_NEW_WINDOW, true);
441 case EWK_CONTEXT_MENU_ITEM_TAG_DOWNLOAD_IMAGE_TO_DISK:
442 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_SAVE_IMAGE, true);
443 ewk_context_menu_item_append_as_action(menu, CUSTOM_CONTEXT_MENU_ITEM_SELECTION_MODE_FROM_IMAGE_TAG, BR_STRING_CTXMENU_SELECTION_MODE, true);
450 if (custom_context_menu_array)
451 free(custom_context_menu_array);
452 custom_context_menu_array = NULL;
457 Eina_Bool Browser_Context_Menu::_append_image_with_hyperlink_mode_context_menu(Ewk_Context_Menu *menu)
459 BROWSER_LOGD("[%s]", __func__);
464 Ewk_Context_Menu_Item *item;
465 Ewk_Context_Menu_Item_Tag tag;
467 int count = ewk_context_menu_item_count(menu);
468 int *custom_context_menu_array = (int *)malloc(sizeof(int) * count);
473 if (!custom_context_menu_array)
476 memset(custom_context_menu_array, 0x00, sizeof(int) * count);
478 /* To re-arrange menu order to follow UX guideline
479 : "Open in new window" menu would be best if it's at the first in context menu */
480 for (int i = 0; i < count; i++) {
481 item = ewk_context_menu_nth_item_get(menu, i);
482 tag = ewk_context_menu_item_tag_get(item);
484 if (tag == EWK_CONTEXT_MENU_ITEM_TAG_OPEN_LINK_IN_NEW_WINDOW) {
485 custom_context_menu_array[index++] = EWK_CONTEXT_MENU_ITEM_TAG_OPEN_LINK_IN_NEW_WINDOW;
486 ewk_context_menu_item_remove(menu, item);
490 for (int i = 0; i < count; i++) {
491 item = ewk_context_menu_nth_item_get(menu, i);
492 tag = ewk_context_menu_item_tag_get(item);
494 if (tag == EWK_CONTEXT_MENU_ITEM_TAG_COPY_LINK_TO_CLIPBOARD) {
495 custom_context_menu_array[index++] = EWK_CONTEXT_MENU_ITEM_TAG_COPY_LINK_TO_CLIPBOARD;
496 ewk_context_menu_item_remove(menu, item);
500 for (int i = 0; i < count; i++) {
501 item = ewk_context_menu_nth_item_get(menu, i);
502 tag = ewk_context_menu_item_tag_get(item);
504 if (tag == EWK_CONTEXT_MENU_ITEM_TAG_COPY_IMAGE_TO_CLIPBOARD) {
505 custom_context_menu_array[index++] = EWK_CONTEXT_MENU_ITEM_TAG_COPY_IMAGE_TO_CLIPBOARD;
506 ewk_context_menu_item_remove(menu, item);
510 for (int i = index; i < count; i++) {
511 item = ewk_context_menu_nth_item_get(menu, 0);
512 tag = ewk_context_menu_item_tag_get(item);
514 custom_context_menu_array[index++] = tag;
515 ewk_context_menu_item_remove(menu, item);
518 for (int i = 0; i < count; i++) {
519 tag = custom_context_menu_array[i];
522 case EWK_CONTEXT_MENU_ITEM_TAG_OPEN_LINK_IN_NEW_WINDOW:
523 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_OPEN_LINK_IN_NEW_WINDOW, true);
525 case EWK_CONTEXT_MENU_ITEM_TAG_COPY_LINK_TO_CLIPBOARD:
526 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_COPY_LINK_LOCATION, true);
528 case EWK_CONTEXT_MENU_ITEM_TAG_COPY_IMAGE_TO_CLIPBOARD:
529 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_COPY_IMAGE, true);
531 case EWK_CONTEXT_MENU_ITEM_TAG_OPEN_IMAGE_IN_NEW_WINDOW:
532 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_OPEN_IMAGE_IN_NEW_WINDOW, true);
534 case EWK_CONTEXT_MENU_ITEM_TAG_DOWNLOAD_IMAGE_TO_DISK:
535 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_SAVE_IMAGE, true);
536 ewk_context_menu_item_append_as_action(menu, CUSTOM_CONTEXT_MENU_ITEM_SELECTION_MODE_FROM_IMAGE_TAG, BR_STRING_CTXMENU_SELECTION_MODE, true);
543 if (custom_context_menu_array)
544 free(custom_context_menu_array);
545 custom_context_menu_array = NULL;
550 Eina_Bool Browser_Context_Menu::_append_text_and_image_selection_mode_context_menu(Ewk_Context_Menu *menu)
552 BROWSER_LOGD("[%s]", __func__);
560 Eina_Bool Browser_Context_Menu::_append_normal_mode_context_menu(Ewk_Context_Menu *menu)
562 BROWSER_LOGD("[%s]", __func__);
567 Ewk_Context_Menu_Item *item;
568 Ewk_Context_Menu_Item_Tag tag;
569 bool show_hyperlink_item_flag = false;
570 bool show_imagemode_flag = false;
571 int count = ewk_context_menu_item_count(menu);
573 for (int i = 0; i < count; i++) {
574 item = ewk_context_menu_nth_item_get(menu, 0);
575 tag = ewk_context_menu_item_tag_get(item);
576 ewk_context_menu_item_remove(menu, item);
579 case EWK_CONTEXT_MENU_ITEM_TAG_OPEN_LINK:
580 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_OPEN, true);
582 case EWK_CONTEXT_MENU_ITEM_TAG_OPEN_LINK_IN_NEW_WINDOW:
583 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_OPEN_LINK_IN_NEW_WINDOW, true);
585 case EWK_CONTEXT_MENU_ITEM_TAG_DOWNLOAD_LINK_TO_DISK:
586 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_SAVE_LINK, true);
588 case EWK_CONTEXT_MENU_ITEM_TAG_OPEN_IMAGE_IN_NEW_WINDOW:
589 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_OPEN_IMAGE_IN_NEW_WINDOW, true);
591 case EWK_CONTEXT_MENU_ITEM_TAG_DOWNLOAD_IMAGE_TO_DISK:
592 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_SAVE_IMAGE, true);
594 case EWK_CONTEXT_MENU_ITEM_TAG_COPY_IMAGE_TO_CLIPBOARD:
595 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_COPY_IMAGE, true);
597 case EWK_CONTEXT_MENU_ITEM_TAG_COPY_LINK_TO_CLIPBOARD:
598 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_COPY_IMAGE_LOCATION, true);
600 case EWK_CONTEXT_MENU_ITEM_TAG_CUT:
601 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_CUT, true);
603 case EWK_CONTEXT_MENU_ITEM_TAG_PASTE:
604 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_PASTE, true);
606 case EWK_CONTEXT_MENU_ITEM_TAG_COPY:
607 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_COPY, true);
609 case EWK_CONTEXT_MENU_ITEM_TAG_SELECT_ALL:
610 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_SELECT_ALL, true);
612 case EWK_CONTEXT_MENU_ITEM_TAG_SELECT_WORD:
613 ewk_context_menu_item_append_as_action(menu, tag, BR_STRING_CTXMENU_SELECT_WORD, true);
620 /* if the tag is hyperlink text, show text selection mode menu */
621 if ((show_hyperlink_item_flag == true) && (show_imagemode_flag == false))
622 ewk_context_menu_item_append_as_action(menu, CUSTOM_CONTEXT_MENU_ITEM_SELECTION_MODE_FROM_TEXT_TAG, BR_STRING_CTXMENU_SELECTION_MODE, true);