#define N_MIMEVIEW_COLS 3
+#if !GTK_CHECK_VERSION(3, 0, 0)
static void mimeview_set_multipart_tree (MimeView *mimeview,
MimeInfo *mimeinfo,
GtkCMCTreeNode *parent);
static GtkCMCTreeNode *mimeview_append_part (MimeView *mimeview,
MimeInfo *partinfo,
GtkCMCTreeNode *parent);
+#endif
static void mimeview_show_message_part (MimeView *mimeview,
MimeInfo *partinfo);
static void mimeview_change_view_type (MimeView *mimeview,
static gboolean mimeview_write_part (const gchar *filename,
MimeInfo *partinfo);
+#if !GTK_CHECK_VERSION(3, 0, 0)
static void mimeview_selected (GtkCMCTree *ctree,
GtkCMCTreeNode *node,
gint column,
MimeView *mimeview);
+#endif
static void mimeview_start_drag (GtkWidget *widget,
gint button,
GdkEvent *event,
mimeview_select_next_part((MimeView *)data);
}
+static void mimeview_select_prev_part_cb(GtkAction *action, gpointer data)
+{
+ mimeview_select_prev_part((MimeView *)data);
+}
+
static GtkActionEntry mimeview_menu_actions[] = {
{ "MimeView", NULL, "MimeView" },
{ "MimeView/Open", NULL, N_("_Open (l)"), NULL, "Open MIME part", G_CALLBACK(mimeview_launch_cb) },
{ "MimeView/DisplayAsText", NULL, N_("_Display as text (t)"), NULL, "Display as text", G_CALLBACK(mimeview_display_as_text_cb) },
{ "MimeView/SaveAs", NULL, N_("_Save as (y)..."), NULL, "Save as", G_CALLBACK(mimeview_save_as_cb) },
{ "MimeView/SaveAll", NULL, N_("Save _all..."), NULL, "Save all parts", G_CALLBACK(mimeview_save_all_cb) },
- { "MimeView/NextPart", NULL, N_("Next part (a)"), NULL, "Next part", G_CALLBACK(mimeview_select_next_part_cb) }
+ { "MimeView/NextPart", NULL, N_("Next part (a)"), NULL, "Next part", G_CALLBACK(mimeview_select_next_part_cb) },
+ { "MimeView/PrevPart", NULL, N_("Previous part (z)"), NULL, "Previous part", G_CALLBACK(mimeview_select_prev_part_cb) }
};
static GtkTargetEntry mimeview_mime_types[] =
gchar *titles[N_MIMEVIEW_COLS];
gint i;
- CLAWS_TIP_DECL();
if (!hand_cursor)
hand_cursor = gdk_cursor_new(GDK_HAND2);
MENUITEM_ADDUI_MANAGER(mimeview->ui_manager,
"/Menus/MimeView/", "NextPart", "MimeView/NextPart",
GTK_UI_MANAGER_MENUITEM);
+ MENUITEM_ADDUI_MANAGER(mimeview->ui_manager,
+ "/Menus/MimeView/", "PrevPart", "MimeView/PrevPart",
+ GTK_UI_MANAGER_MENUITEM);
popupmenu = gtk_menu_item_get_submenu(GTK_MENU_ITEM(
gtk_ui_manager_get_widget(mimeview->ui_manager, "/Menus/MimeView")) );
if (!partinfo) return;
/* ungrab the mouse event */
- if (gtkut_widget_has_grab(GTK_WIDGET(ctree))) {
+ if (gtk_widget_has_grab(GTK_WIDGET(ctree))) {
gtk_grab_remove(GTK_WIDGET(ctree));
if (gdk_pointer_is_grabbed())
gdk_pointer_ungrab(GDK_CURRENT_TIME);
cm_return_if_fail(mimeview != NULL);
partinfo = mimeview_get_selected_part(mimeview);
- if (partinfo->disposition == DISPOSITIONTYPE_INLINE) return;
+ if (partinfo == NULL ||
+ partinfo->disposition == DISPOSITIONTYPE_INLINE)
+ return;
context = gtk_drag_begin(widget, mimeview->target_list,
GDK_ACTION_COPY, button, event);
}
-void mimeview_pass_key_press_event(MimeView *mimeview, GdkEventKey *event)
+gboolean mimeview_pass_key_press_event(MimeView *mimeview, GdkEventKey *event)
{
- mimeview_key_pressed(mimeview->ctree, event, mimeview);
+ return mimeview_key_pressed(mimeview->ctree, event, mimeview);
}
static void mimeview_select_next_part(MimeView *mimeview)
#define BREAK_ON_MODIFIER_KEY() \
if ((event->state & (GDK_MOD1_MASK|GDK_CONTROL_MASK)) != 0) break
-#define KEY_PRESS_EVENT_STOP() \
- g_signal_stop_emission_by_name(G_OBJECT(ctree), \
- "key_press_event");
-
static gint mimeview_key_pressed(GtkWidget *widget, GdkEventKey *event,
MimeView *mimeview)
{
SummaryView *summaryview;
- GtkCMCTree *ctree = GTK_CMCTREE(widget);
if (!event) return FALSE;
if (!mimeview->opened) return FALSE;
case GDK_KEY_Down:
mimeview_scroll_one_line(mimeview, (event->keyval == GDK_KEY_Up));
return TRUE;
- case GDK_KEY_n:
- case GDK_KEY_N:
- BREAK_ON_MODIFIER_KEY();
- mimeview_select_next_part(mimeview);
- return TRUE;
-
- case GDK_KEY_p:
- case GDK_KEY_P:
- BREAK_ON_MODIFIER_KEY();
- mimeview_select_prev_part(mimeview);
- return TRUE;
-
case GDK_KEY_y:
BREAK_ON_MODIFIER_KEY();
- KEY_PRESS_EVENT_STOP();
mimeview_save_as(mimeview);
return TRUE;
case GDK_KEY_t:
BREAK_ON_MODIFIER_KEY();
- KEY_PRESS_EVENT_STOP();
mimeview_display_as_text(mimeview);
return TRUE;
case GDK_KEY_l:
BREAK_ON_MODIFIER_KEY();
- KEY_PRESS_EVENT_STOP();
mimeview_launch(mimeview, NULL);
return TRUE;
case GDK_KEY_o:
BREAK_ON_MODIFIER_KEY();
- KEY_PRESS_EVENT_STOP();
#ifndef G_OS_WIN32
mimeview_open_with(mimeview);
#endif
return TRUE;
case GDK_KEY_c:
BREAK_ON_MODIFIER_KEY();
- KEY_PRESS_EVENT_STOP();
mimeview_check_signature(mimeview);
return TRUE;
case GDK_KEY_a:
BREAK_ON_MODIFIER_KEY();
- KEY_PRESS_EVENT_STOP();
mimeview_select_next_part(mimeview);
return TRUE;
+ case GDK_KEY_z:
+ BREAK_ON_MODIFIER_KEY();
+ mimeview_select_prev_part(mimeview);
+ return TRUE;
default:
break;
}
- if (!mimeview->messageview->mainwin) return FALSE;
+ if (mimeview->messageview->new_window) return FALSE;
- summary_pass_key_press_event(summaryview, event);
- return TRUE;
+ return summary_pass_key_press_event(summaryview, event);
}
static void mimeview_drag_data_get(GtkWidget *widget,
mimeview_scroll_one_line(mimeview,
(event->state & GDK_MOD1_MASK) != 0);
return TRUE;
-
- case GDK_KEY_n:
- case GDK_KEY_N:
- BREAK_ON_MODIFIER_KEY();
- mimeview_select_next_part(mimeview);
- return TRUE;
-
- case GDK_KEY_p:
- case GDK_KEY_P:
- BREAK_ON_MODIFIER_KEY();
- mimeview_select_prev_part(mimeview);
- break;
-
case GDK_KEY_y:
BREAK_ON_MODIFIER_KEY();
mimeview_save_as(mimeview);
content_type = procmime_get_content_type_str(mimeinfo->type,
mimeinfo->subtype);
-#if GTK_CHECK_VERSION(2,12,0)
tip = g_strconcat("<b>", _("Type:"), " </b>", content_type,
"\n<b>", _("Size:"), " </b>",
to_human_readable((goffset)mimeinfo->length), NULL);
-#else
- tip = g_strconcat(_("Type:"), " ", content_type,
- "\n", _("Size:"), " ",
- to_human_readable((goffset)mimeinfo->length), NULL);
-#endif
g_free(content_type);
if (desc && *desc) {
gchar *tmp = NULL;
} else {
tmp = g_strdup(desc);
}
-#if GTK_CHECK_VERSION(2,12,0)
tiptmp = g_strconcat(tip, "\n<b>",
prefs_common.attach_desc && mimeinfo->description ?
_("Description:") : _("Filename:"),
" </b>", tmp, NULL);
-#else
- tiptmp = g_strconcat(tip, "\n",
- prefs_common.attach_desc && mimeinfo->description ?
- _("Description:") : _("Filename:"),
- " ", tmp, NULL);
-#endif
g_free(tip);
tip = tiptmp;
g_free(tmp);
}
g_free(sigshort);
-#if GTK_CHECK_VERSION(2,12,0)
gtk_widget_set_tooltip_markup(button, tip);
-#else
- CLAWS_SET_TIP(button, tip);
-#endif
g_free(tip);
gtk_widget_show_all(button);
gtk_drag_source_set(button, GDK_BUTTON1_MASK|GDK_BUTTON3_MASK,