[balsa/gtk3] Port BalsaMessage from GtkNotebook to GtkStack
- From: Peter Bloomfield <peterb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [balsa/gtk3] Port BalsaMessage from GtkNotebook to GtkStack
- Date: Wed, 11 Feb 2015 22:43:25 +0000 (UTC)
commit 4754f794c43f59a08c291bf5607ac763f371eb02
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date: Wed Feb 11 17:43:04 2015 -0500
Port BalsaMessage from GtkNotebook to GtkStack
* src/balsa-message.c (balsa_message_get_type): BalsaMessage now
subclasses GtkBox instead of GtkNotebook.
* src/balsa-message.h: ditto.
ChangeLog | 8 +++++
src/balsa-message.c | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++
src/balsa-message.h | 11 +++++++
3 files changed, 103 insertions(+), 0 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 942c342..d860490 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2015-02-11 Peter Bloomfield <pbloomfield bellsouth net>
+
+ Port BalsaMessage from GtkNotebook to GtkStack
+
+ * src/balsa-message.c (balsa_message_get_type): BalsaMessage now
+ subclasses GtkBox instead of GtkNotebook.
+ * src/balsa-message.h: ditto.
+
2015-02-10 Peter Bloomfield <pbloomfield bellsouth net>
Deprecation cleanup
diff --git a/src/balsa-message.c b/src/balsa-message.c
index c6487ec..892c516 100644
--- a/src/balsa-message.c
+++ b/src/balsa-message.c
@@ -218,7 +218,11 @@ balsa_message_get_type()
};
balsa_message_type =
+#ifndef BALSA_USE_GTK_STACK
g_type_register_static(GTK_TYPE_NOTEBOOK, "BalsaMessage",
+#else /* BALSA_USE_GTK_STACK */
+ g_type_register_static(GTK_TYPE_BOX, "BalsaMessage",
+#endif /* BALSA_USE_GTK_STACK */
&balsa_message_info, 0);
}
@@ -680,20 +684,41 @@ bm_disable_find_entry(BalsaMessage * bm)
static void
balsa_message_init(BalsaMessage * bm)
{
+#ifdef BALSA_USE_GTK_STACK
+ GtkStack *stack;
+#endif /* BALSA_USE_GTK_STACK */
GtkWidget *vbox;
GtkWidget *scroll;
+#ifndef BALSA_USE_GTK_STACK
GtkWidget *label;
+#endif /* ! BALSA_USE_GTK_STACK */
GtkWidget **buttons;
GtkTreeStore *model;
GtkCellRenderer *renderer;
GtkTreeSelection *selection;
+#ifndef BALSA_USE_GTK_STACK
gtk_notebook_set_show_border(GTK_NOTEBOOK(bm), FALSE);
+#else /* BALSA_USE_GTK_STACK */
+ bm->switcher = gtk_stack_switcher_new();
+ gtk_box_pack_start(GTK_BOX(bm), bm->switcher, FALSE, FALSE, 0);
+
+ bm->stack = gtk_stack_new();
+ stack = GTK_STACK(bm->stack);
+ gtk_stack_set_transition_type(stack,
+ GTK_STACK_TRANSITION_TYPE_SLIDE_UP_DOWN);
+ gtk_stack_switcher_set_stack(GTK_STACK_SWITCHER(bm->switcher), stack);
+ gtk_box_pack_start(GTK_BOX(bm), bm->stack, TRUE, TRUE, 0);
+#endif /* BALSA_USE_GTK_STACK */
/* Box to hold the scrolled window and the find bar */
vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
+#ifndef BALSA_USE_GTK_STACK
label = gtk_label_new(_("Content"));
gtk_notebook_append_page(GTK_NOTEBOOK(bm), vbox, label);
+#else /* BALSA_USE_GTK_STACK */
+ gtk_stack_add_titled(stack, vbox, "content", _("Content"));
+#endif /* BALSA_USE_GTK_STACK */
/* scrolled window for the contents */
bm->scroll = scroll = gtk_scrolled_window_new(NULL, NULL);
@@ -784,10 +809,16 @@ balsa_message_init(BalsaMessage * bm)
(GTK_TREE_VIEW (bm->treeview), gtk_tree_view_get_column
(GTK_TREE_VIEW (bm->treeview), MIME_ICON_COLUMN - 1));
+#ifndef BALSA_USE_GTK_STACK
label = gtk_label_new(_("Message parts"));
gtk_notebook_append_page(GTK_NOTEBOOK(bm), scroll, label);
+#else /* BALSA_USE_GTK_STACK */
+ gtk_stack_add_titled(stack, scroll, "parts", _("Message parts"));
+#endif /* BALSA_USE_GTK_STACK */
gtk_container_add(GTK_CONTAINER(scroll), bm->treeview);
+#ifndef BALSA_USE_GTK_STACK
gtk_notebook_set_show_tabs(GTK_NOTEBOOK(bm), FALSE);
+#endif /* ! BALSA_USE_GTK_STACK */
bm->current_part = NULL;
bm->message = NULL;
@@ -845,7 +876,13 @@ balsa_message_new(void)
{
BalsaMessage *bm;
+#ifndef BALSA_USE_GTK_STACK
bm = g_object_new(BALSA_TYPE_MESSAGE, NULL);
+#else /* BALSA_USE_GTK_STACK */
+ bm = g_object_new(BALSA_TYPE_MESSAGE,
+ "orientation", GTK_ORIENTATION_VERTICAL,
+ NULL);
+#endif /* BALSA_USE_GTK_STACK */
return GTK_WIDGET(bm);
}
@@ -905,7 +942,11 @@ tree_activate_row_cb(GtkTreeView *treeview, GtkTreePath *arg1,
}
}
+#ifndef BALSA_USE_GTK_STACK
gtk_notebook_set_current_page(GTK_NOTEBOOK(bm), 0);
+#else /* BALSA_USE_GTK_STACK */
+ gtk_stack_set_visible_child_name(GTK_STACK(bm->stack), "content");
+#endif /* BALSA_USE_GTK_STACK */
select_part(bm, info);
if (info)
g_object_unref(info);
@@ -1105,8 +1146,13 @@ balsa_message_set(BalsaMessage * bm, LibBalsaMailbox * mailbox, guint msgno)
}
if (mailbox == NULL || msgno == 0) {
+#ifndef BALSA_USE_GTK_STACK
gtk_notebook_set_show_tabs(GTK_NOTEBOOK(bm), FALSE);
gtk_notebook_set_current_page(GTK_NOTEBOOK(bm), 0);
+#else /* BALSA_USE_GTK_STACK */
+ gtk_widget_hide(bm->switcher);
+ gtk_stack_set_visible_child_name(GTK_STACK(bm->stack), "content");
+#endif /* BALSA_USE_GTK_STACK */
return TRUE;
}
@@ -1160,11 +1206,26 @@ balsa_message_set(BalsaMessage * bm, LibBalsaMailbox * mailbox, guint msgno)
#if defined(ENABLE_TOUCH_UI)
/* hide tabs so that they do not confuse keyboard navigation.
* This could probably be a configuration option. */
+#ifndef BALSA_USE_GTK_STACK
gtk_notebook_set_show_tabs(GTK_NOTEBOOK(bm), FALSE);
+#else /* BALSA_USE_GTK_STACK */
+ gtk_widget_hide(bm->switcher);
+#endif /* BALSA_USE_GTK_STACK */
#else
+#ifndef BALSA_USE_GTK_STACK
gtk_notebook_set_show_tabs(GTK_NOTEBOOK(bm), bm->info_count > 1);
+#else /* BALSA_USE_GTK_STACK */
+ if (bm->info_count > 1)
+ gtk_widget_show(bm->switcher);
+ else
+ gtk_widget_hide(bm->switcher);
+#endif /* BALSA_USE_GTK_STACK */
#endif /* ENABLE_TOUCH_UI */
+#ifndef BALSA_USE_GTK_STACK
gtk_notebook_set_current_page(GTK_NOTEBOOK(bm), 0);
+#else /* BALSA_USE_GTK_STACK */
+ gtk_stack_set_visible_child_name(GTK_STACK(bm->stack), "content");
+#endif /* BALSA_USE_GTK_STACK */
/*
* At this point we check if (a) a message was new (its not new
@@ -1322,7 +1383,11 @@ atattchments_menu_cb(GtkWidget * widget, BalsaPartInfo *info)
g_return_if_fail(bm);
g_return_if_fail(info);
+#ifndef BALSA_USE_GTK_STACK
gtk_notebook_set_current_page(GTK_NOTEBOOK(bm), 0);
+#else /* BALSA_USE_GTK_STACK */
+ gtk_stack_set_visible_child_name(GTK_STACK(bm->stack), "content");
+#endif /* BALSA_USE_GTK_STACK */
select_part(bm, info);
}
@@ -1349,7 +1414,11 @@ toggle_all_inline_cb(GtkCheckMenuItem * item, BalsaPartInfo *info)
bm->force_inline = gtk_check_menu_item_get_active(item);
+#ifndef BALSA_USE_GTK_STACK
gtk_notebook_set_current_page(GTK_NOTEBOOK(bm), 0);
+#else /* BALSA_USE_GTK_STACK */
+ gtk_stack_set_visible_child_name(GTK_STACK(bm->stack), "content");
+#endif /* BALSA_USE_GTK_STACK */
select_part(bm, info);
}
@@ -3218,11 +3287,26 @@ message_recheck_crypto_cb(GtkWidget * button, BalsaMessage * bm)
#if defined(ENABLE_TOUCH_UI)
/* hide tabs so that they do not confuse keyboard navigation.
* This could probably be a configuration option. */
+#ifndef BALSA_USE_GTK_STACK
gtk_notebook_set_show_tabs(GTK_NOTEBOOK(bm), FALSE);
+#else /* BALSA_USE_GTK_STACK */
+ gtk_widget_hide(bm->switcher);
+#endif /* BALSA_USE_GTK_STACK */
#else
+#ifndef BALSA_USE_GTK_STACK
gtk_notebook_set_show_tabs(GTK_NOTEBOOK(bm), bm->info_count > 1);
+#else /* BALSA_USE_GTK_STACK */
+ if (bm->info_count > 1)
+ gtk_widget_show(bm->switcher);
+ else
+ gtk_widget_hide(bm->switcher);
+#endif /* BALSA_USE_GTK_STACK */
#endif /* ENABLE_TOUCH_UI */
+#ifndef BALSA_USE_GTK_STACK
gtk_notebook_set_current_page(GTK_NOTEBOOK(bm), 0);
+#else /* BALSA_USE_GTK_STACK */
+ gtk_stack_set_visible_child_name(GTK_STACK(bm->stack), "content");
+#endif /* BALSA_USE_GTK_STACK */
if (!gtk_tree_model_get_iter_first (gtk_tree_view_get_model(GTK_TREE_VIEW(bm->treeview)),
&iter)) {
diff --git a/src/balsa-message.h b/src/balsa-message.h
index 80b65a2..51a0a87 100644
--- a/src/balsa-message.h
+++ b/src/balsa-message.h
@@ -29,6 +29,10 @@
#include "libbalsa.h"
#include "balsa-app.h"
+#if GTK_CHECK_VERSION(3, 10, 0)
+#define BALSA_USE_GTK_STACK
+#endif /* GTK_CHECK_VERSION(3, 10, 0) */
+
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
@@ -54,7 +58,14 @@ typedef enum {
} BalsaMessageFocusState;
struct _BalsaMessage {
+#ifndef BALSA_USE_GTK_STACK
GtkNotebook parent;
+#else /* BALSA_USE_GTK_STACK */
+ GtkBox parent;
+
+ GtkWidget *stack;
+ GtkWidget *switcher;
+#endif /* BALSA_USE_GTK_STACK */
/* Top-level MIME widget */
BalsaMimeWidget *bm_widget;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]