static gint mimeview_key_pressed(GtkWidget *widget, GdkEventKey *event, MimeView *mimeview) { SummaryView *summaryview = NULL; GtkTreeView *treeview = GTK_TREE_VIEW(widget); GtkTreeModel *model = GTK_TREE_MODEL(mimeview->store); GtkTreeIter iter; gboolean mod_pressed; if (!event) return FALSE; if (!mimeview->opened) return FALSE; if (!gtk_tree_model_get_iter(model, &iter, mimeview->opened)) return FALSE; if (mimeview->messageview->mainwin) summaryview = mimeview->messageview->mainwin->summaryview; mod_pressed = ((event->state & (GDK_SHIFT_MASK|GDK_MOD1_MASK)) != 0); switch (event->keyval) { case GDK_space: case GDK_KP_Space: if (textview_scroll_page(mimeview->textview, mod_pressed)) return TRUE; if (gtkut_tree_model_next(model, &iter)) { GtkTreePath *path; path = gtk_tree_model_get_path(model, &iter); gtk_tree_view_set_cursor(treeview, path, NULL, FALSE); gtk_tree_path_free(path); return TRUE; } if (summaryview) summary_pass_key_press_event(summaryview, event); break; case GDK_BackSpace: textview_scroll_page(mimeview->textview, TRUE); return TRUE; case GDK_Return: case GDK_KP_Enter: textview_scroll_one_line(mimeview->textview, mod_pressed); return TRUE; case GDK_t: BREAK_ON_MODIFIER_KEY(); KEY_PRESS_EVENT_STOP(); mimeview_display_as_text(mimeview); return TRUE; case GDK_Escape: if (summaryview) gtk_widget_grab_focus(summaryview->treeview); break; case GDK_Left: case GDK_Delete: case GDK_KP_Left: case GDK_KP_Delete: if (summaryview) summary_pass_key_press_event(summaryview, event); break; default: break; } return FALSE; }
static gint mimeview_key_pressed(GtkWidget *widget, GdkEventKey *event, MimeView *mimeview) { SummaryView *summaryview; GtkCTree *ctree = GTK_CTREE(widget); GtkCTreeNode *node; if (!event) return FALSE; if (!mimeview->opened) return FALSE; switch (event->keyval) { case GDK_space: if (textview_scroll_page(mimeview->textview, FALSE)) return TRUE; node = GTK_CTREE_NODE_NEXT(mimeview->opened); if (node) { gtk_sctree_unselect_all(GTK_SCTREE(ctree)); gtk_sctree_select(GTK_SCTREE(ctree), node); return TRUE; } break; case GDK_BackSpace: textview_scroll_page(mimeview->textview, TRUE); return TRUE; case GDK_Return: textview_scroll_one_line(mimeview->textview, (event->state & GDK_MOD1_MASK) != 0); return TRUE; case GDK_n: case GDK_N: BREAK_ON_MODIFIER_KEY(); if (!GTK_CTREE_NODE_NEXT(mimeview->opened)) break; KEY_PRESS_EVENT_STOP(); gtk_signal_emit_by_name(GTK_OBJECT(ctree), "scroll_vertical", GTK_SCROLL_STEP_FORWARD, 0.0); return TRUE; case GDK_p: case GDK_P: BREAK_ON_MODIFIER_KEY(); if (!GTK_CTREE_NODE_PREV(mimeview->opened)) break; KEY_PRESS_EVENT_STOP(); gtk_signal_emit_by_name(GTK_OBJECT(ctree), "scroll_vertical", GTK_SCROLL_STEP_BACKWARD, 0.0); return TRUE; case GDK_y: BREAK_ON_MODIFIER_KEY(); KEY_PRESS_EVENT_STOP(); mimeview_save_as(mimeview); return TRUE; case GDK_t: BREAK_ON_MODIFIER_KEY(); KEY_PRESS_EVENT_STOP(); mimeview_display_as_text(mimeview); return TRUE; case GDK_l: BREAK_ON_MODIFIER_KEY(); KEY_PRESS_EVENT_STOP(); mimeview_launch(mimeview); return TRUE; case GDK_o: BREAK_ON_MODIFIER_KEY(); KEY_PRESS_EVENT_STOP(); mimeview_open_with(mimeview); return TRUE; default: break; } if (!mimeview->messageview->mainwin) return FALSE; summaryview = mimeview->messageview->mainwin->summaryview; summary_pass_key_press_event(summaryview, event); return TRUE; }
static void display_as_text_button_clicked(GtkWidget *widget, gpointer data) { MimeView *mimeview = (MimeView *)data; mimeview_display_as_text(mimeview); }
static gint icon_key_pressed(GtkWidget *button, GdkEventKey *event, MimeView *mimeview) { gint num; MimeInfo *partinfo; SummaryView *summaryview; TextView *textview; num = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(button), "icon_number")); partinfo = gtk_object_get_data(GTK_OBJECT(button), "partinfo"); if (!event) return FALSE; textview = mimeview->textview; switch (event->keyval) { case GDK_space: if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button))) { /* stop the button being untoggled */ KEY_PRESS_EVENT_STOP(); if (textview_scroll_page(textview, FALSE)) return TRUE; if (icon_list_select_by_number(mimeview, num + 1)) return TRUE; } else { icon_selected(mimeview, num, partinfo); toggle_icon(GTK_TOGGLE_BUTTON(button), mimeview); return TRUE; } break; case GDK_BackSpace: textview_scroll_page(textview, TRUE); return TRUE; case GDK_Return: if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button))) { KEY_PRESS_EVENT_STOP(); textview_scroll_one_line(textview, (event->state & GDK_MOD1_MASK) != 0); return TRUE; } else { icon_selected(mimeview, num, partinfo); toggle_icon(GTK_TOGGLE_BUTTON(button), mimeview); return TRUE; } case GDK_n: case GDK_N: BREAK_ON_MODIFIER_KEY(); if (icon_list_select_by_number(mimeview, num + 1)) { KEY_PRESS_EVENT_STOP(); return TRUE; } break; case GDK_p: case GDK_P: BREAK_ON_MODIFIER_KEY(); if (icon_list_select_by_number(mimeview, num - 1)) { KEY_PRESS_EVENT_STOP(); return TRUE; } break; case GDK_y: BREAK_ON_MODIFIER_KEY(); KEY_PRESS_EVENT_STOP(); mimeview_save_as(mimeview); return TRUE; case GDK_t: BREAK_ON_MODIFIER_KEY(); KEY_PRESS_EVENT_STOP(); mimeview_display_as_text(mimeview); return TRUE; case GDK_l: BREAK_ON_MODIFIER_KEY(); KEY_PRESS_EVENT_STOP(); mimeview_launch(mimeview); return TRUE; case GDK_o: BREAK_ON_MODIFIER_KEY(); KEY_PRESS_EVENT_STOP(); mimeview_open_with(mimeview); return TRUE; default: break; } if (!mimeview->messageview->mainwin) return FALSE; summaryview = mimeview->messageview->mainwin->summaryview; summary_pass_key_press_event(summaryview, event); return TRUE; }