Link Here
|
18 |
* along with this program; if not, write to the Free Software |
18 |
* along with this program; if not, write to the Free Software |
19 |
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
19 |
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
20 |
* |
20 |
* |
21 |
* $Id: kz-bookmark-menu.c,v 1.33 2004/06/14 05:43:08 ikezoe Exp $ |
21 |
* $Id: kz-bookmark-menu.c,v 1.36 2004/06/30 02:24:35 ikezoe Exp $ |
22 |
*/ |
22 |
*/ |
23 |
|
23 |
|
24 |
#include "kz-bookmark-menu.h" |
24 |
#include "kz-bookmark-menu.h" |
Link Here
|
35 |
#define KZ_BOOKMARK_MENU_TOOLTIP_KEY "KzBookmarkMenu::ToolTips" |
35 |
#define KZ_BOOKMARK_MENU_TOOLTIP_KEY "KzBookmarkMenu::ToolTips" |
36 |
#define KZ_BOOKMARK_MENU_EMPTY_KEY "KzBookmarkMEnu::Empty" |
36 |
#define KZ_BOOKMARK_MENU_EMPTY_KEY "KzBookmarkMEnu::Empty" |
37 |
#define KZ_BOOKMARK_MENU_PROXY_KEY "KzBookmarkMenu::IsFolderProxy" |
37 |
#define KZ_BOOKMARK_MENU_PROXY_KEY "KzBookmarkMenu::IsFolderProxy" |
|
|
38 |
#define KZ_BOOKMARK_MENU_BUTTON_KEY "KzBookmarkMenu::MouseButton" |
38 |
|
39 |
|
39 |
|
40 |
|
40 |
static gboolean cb_menu_item_button_press (GtkWidget *widget, |
41 |
static gboolean cb_menu_item_button_press (GtkWidget *widget, |
Link Here
|
167 |
kz_bookmark_menu_create_submenu (KzBookmark *folder, KzWindow *kz) |
168 |
kz_bookmark_menu_create_submenu (KzBookmark *folder, KzWindow *kz) |
168 |
{ |
169 |
{ |
169 |
GtkWidget *submenu, *menu_item; |
170 |
GtkWidget *submenu, *menu_item; |
170 |
const gchar *link, *title; |
|
|
171 |
|
171 |
|
172 |
g_return_val_if_fail(KZ_IS_BOOKMARK(folder), NULL); |
172 |
g_return_val_if_fail(KZ_IS_BOOKMARK(folder), NULL); |
173 |
g_return_val_if_fail(kz_bookmark_is_folder(folder), NULL); |
173 |
g_return_val_if_fail(kz_bookmark_is_folder(folder), NULL); |
Link Here
|
176 |
/* create submenu */ |
176 |
/* create submenu */ |
177 |
submenu = gtk_menu_new(); |
177 |
submenu = gtk_menu_new(); |
178 |
|
178 |
|
179 |
/* channel link */ |
|
|
180 |
link = kz_bookmark_get_link(folder); |
181 |
title = kz_bookmark_get_document_title(folder); |
182 |
if (!title || !* title) title = kz_bookmark_get_title(folder); |
183 |
|
184 |
menu_item = kz_bookmark_menu_create_menuitem(folder, kz, TRUE); |
179 |
menu_item = kz_bookmark_menu_create_menuitem(folder, kz, TRUE); |
185 |
if (menu_item) |
180 |
if (menu_item) |
186 |
{ |
181 |
{ |
Link Here
|
423 |
{ |
418 |
{ |
424 |
KzBookmark *item; |
419 |
KzBookmark *item; |
425 |
const gchar *uri; |
420 |
const gchar *uri; |
|
|
421 |
gint button; |
422 |
gboolean is_folder_proxy; |
426 |
|
423 |
|
427 |
g_return_if_fail(KZ_IS_WINDOW(kz)); |
424 |
g_return_if_fail(KZ_IS_WINDOW(kz)); |
428 |
|
425 |
|
Link Here
|
430 |
KZ_BOOKMARK_MENU_BOOKMARK_KEY); |
427 |
KZ_BOOKMARK_MENU_BOOKMARK_KEY); |
431 |
g_return_if_fail(item); |
428 |
g_return_if_fail(item); |
432 |
|
429 |
|
433 |
if (kz_bookmark_is_folder(item)) return; |
430 |
button = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), |
|
|
431 |
KZ_BOOKMARK_MENU_BUTTON_KEY)); |
434 |
|
432 |
|
435 |
uri = kz_bookmark_get_link(item); |
433 |
is_folder_proxy = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), |
|
|
434 |
KZ_BOOKMARK_MENU_PROXY_KEY)); |
436 |
|
435 |
|
437 |
if (uri) |
436 |
if (kz_bookmark_is_folder(item) && !is_folder_proxy) |
|
|
437 |
return; |
438 |
|
439 |
uri = kz_bookmark_get_link(item); |
440 |
|
441 |
switch (button) |
438 |
{ |
442 |
{ |
439 |
kz_window_load_url(kz, uri); |
443 |
case 2: |
|
|
444 |
if (kz_bookmark_is_folder(item)) |
445 |
{ |
446 |
EggAction *action; |
447 |
kz_actions_set_bookmark_for_action(kz, item); |
448 |
action = egg_action_group_get_action(kz->actions, |
449 |
"OpenAllBookmarks"); |
450 |
if (action) |
451 |
egg_action_activate(action); |
452 |
kz_actions_set_bookmark_for_action(kz, NULL); |
453 |
} |
454 |
else if (uri) |
455 |
kz_window_open_new_tab(kz, uri); |
456 |
break; |
457 |
default: |
458 |
if (uri) |
459 |
{ |
460 |
kz_window_load_url(kz, uri); |
461 |
} |
462 |
else if (kz_bookmark_is_folder(item)) |
463 |
{ |
464 |
GtkWidget *editor; |
465 |
|
466 |
editor = kz_bookmark_editor_new(kz_bookmarks->menu); |
467 |
kz_bookmark_editor_folder_view_select |
468 |
(KZ_BOOKMARK_EDITOR(editor), item); |
469 |
gtk_widget_show(editor); |
470 |
} |
471 |
break; |
440 |
} |
472 |
} |
|
|
473 |
|
474 |
button = 0; |
475 |
g_object_set_data(G_OBJECT(widget), |
476 |
KZ_BOOKMARK_MENU_BUTTON_KEY, |
477 |
GINT_TO_POINTER(button)); |
441 |
} |
478 |
} |
442 |
|
479 |
|
443 |
|
480 |
|
Link Here
|
446 |
cb_menu_item_button_press (GtkWidget *widget, GdkEventButton *event, |
483 |
cb_menu_item_button_press (GtkWidget *widget, GdkEventButton *event, |
447 |
KzWindow *kz) |
484 |
KzWindow *kz) |
448 |
{ |
485 |
{ |
449 |
return FALSE; |
486 |
return FALSE; |
450 |
} |
487 |
} |
451 |
|
488 |
|
452 |
|
489 |
|
Link Here
|
457 |
KzBookmark *item; |
494 |
KzBookmark *item; |
458 |
const gchar *uri; |
495 |
const gchar *uri; |
459 |
gboolean keep = FALSE; |
496 |
gboolean keep = FALSE; |
|
|
497 |
gint button = event->button; |
460 |
|
498 |
|
461 |
g_return_val_if_fail(KZ_IS_WINDOW(kz), FALSE); |
499 |
g_return_val_if_fail(KZ_IS_WINDOW(kz), FALSE); |
462 |
|
500 |
|
Link Here
|
466 |
|
504 |
|
467 |
uri = kz_bookmark_get_link(item); |
505 |
uri = kz_bookmark_get_link(item); |
468 |
|
506 |
|
469 |
switch (event->button) |
507 |
g_object_set_data(G_OBJECT(widget), |
470 |
{ |
508 |
KZ_BOOKMARK_MENU_BUTTON_KEY, |
471 |
case 1: |
509 |
GINT_TO_POINTER(button)); |
472 |
if (uri) |
|
|
473 |
{ |
474 |
kz_window_load_url(kz, uri); |
475 |
} |
476 |
else if (kz_bookmark_is_folder(item)) |
477 |
{ |
478 |
GtkWidget *editor; |
479 |
|
510 |
|
480 |
editor = kz_bookmark_editor_new(kz_bookmarks->menu); |
511 |
switch (button) |
481 |
kz_bookmark_editor_folder_view_select |
512 |
{ |
482 |
(KZ_BOOKMARK_EDITOR(editor), item); |
|
|
483 |
gtk_widget_show(editor); |
484 |
} |
485 |
break; |
486 |
case 2: |
513 |
case 2: |
|
|
514 |
KZ_CONF_GET("Global", "keep_bookmark_menu", keep, BOOL); |
515 |
if (!keep) |
516 |
return FALSE; |
517 |
|
487 |
if (kz_bookmark_is_folder(item)) |
518 |
if (kz_bookmark_is_folder(item)) |
488 |
{ |
519 |
{ |
489 |
EggAction *action; |
520 |
EggAction *action; |
Link Here
|
496 |
} |
527 |
} |
497 |
else if (uri) |
528 |
else if (uri) |
498 |
kz_window_open_new_tab(kz, uri); |
529 |
kz_window_open_new_tab(kz, uri); |
499 |
KZ_CONF_GET("Global", "keep_bookmark_menu", keep, BOOL); |
530 |
/* reset release button state */ |
500 |
if (keep) |
531 |
button = 0; |
501 |
return TRUE; |
532 |
g_object_set_data(G_OBJECT(widget), |
502 |
return FALSE; |
533 |
KZ_BOOKMARK_MENU_BUTTON_KEY, |
|
|
534 |
GINT_TO_POINTER(button)); |
535 |
|
536 |
return TRUE; |
503 |
break; |
537 |
break; |
504 |
case 3: |
538 |
case 3: |
505 |
kz_actions_popup_bookmark_menu_modal(kz, item, |
539 |
kz_actions_popup_bookmark_menu_modal(kz, item, |