[gedit/wip/tabs] Handle accels
- From: Ignacio Casal Quinteiro <icq src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gedit/wip/tabs] Handle accels
- Date: Thu, 11 Jul 2013 15:53:51 +0000 (UTC)
commit 129af2d800e477d775fd2ba047becd6c10a1f4fa
Author: Ignacio Casal Quinteiro <ignacio casal nice-software com>
Date: Thu Jul 11 17:53:37 2013 +0200
Handle accels
gedit/gedit-marshal.list | 1 +
gedit/gedit-notebook.c | 42 ++++++++++++++++++++++++++++++++++++++++++
gedit/gedit-notebook.h | 2 ++
3 files changed, 45 insertions(+), 0 deletions(-)
---
diff --git a/gedit/gedit-marshal.list b/gedit/gedit-marshal.list
index d646838..9762ba2 100644
--- a/gedit/gedit-marshal.list
+++ b/gedit/gedit-marshal.list
@@ -1,5 +1,6 @@
BOOLEAN:NONE
BOOLEAN:OBJECT
+BOOLEAN:INT
VOID:BOOLEAN
VOID:BOOLEAN,POINTER
VOID:BOXED,BOXED
diff --git a/gedit/gedit-notebook.c b/gedit/gedit-notebook.c
index 6b18a97..5067a99 100644
--- a/gedit/gedit-notebook.c
+++ b/gedit/gedit-notebook.c
@@ -85,6 +85,7 @@ enum
{
TAB_CLOSE_REQUEST,
SHOW_POPUP_MENU,
+ CHANGE_TO_PAGE,
LAST_SIGNAL
};
@@ -494,6 +495,25 @@ gedit_notebook_remove (GtkContainer *container,
nb->priv->ignore_focused_page_update = FALSE;
}
+static gboolean
+gedit_notebook_change_to_page (GeditNotebook *notebook,
+ gint page_num)
+{
+ gint n_pages;
+
+ n_pages = gtk_notebook_get_n_pages (GTK_NOTEBOOK (notebook));
+
+ if (page_num > n_pages - 1)
+ {
+ return FALSE;
+ }
+
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook),
+ page_num);
+
+ return TRUE;
+}
+
static void
gedit_notebook_class_init (GeditNotebookClass *klass)
{
@@ -501,6 +521,8 @@ gedit_notebook_class_init (GeditNotebookClass *klass)
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
GtkNotebookClass *notebook_class = GTK_NOTEBOOK_CLASS (klass);
GtkContainerClass *container_class = GTK_CONTAINER_CLASS (klass);
+ GtkBindingSet *binding_set;
+ gint i;
object_class->dispose = gedit_notebook_dispose;
object_class->finalize = gedit_notebook_finalize;
@@ -517,6 +539,8 @@ gedit_notebook_class_init (GeditNotebookClass *klass)
container_class->remove = gedit_notebook_remove;
+ klass->change_to_page = gedit_notebook_change_to_page;
+
g_object_class_install_property (object_class, PROP_SHOW_TABS_MODE,
g_param_spec_enum ("show-tabs-mode",
"Show Tabs Mode",
@@ -547,6 +571,24 @@ gedit_notebook_class_init (GeditNotebookClass *klass)
2,
GDK_TYPE_EVENT | G_SIGNAL_TYPE_STATIC_SCOPE,
GEDIT_TYPE_TAB);
+ signals[CHANGE_TO_PAGE] =
+ g_signal_new ("change-to-page",
+ G_TYPE_FROM_CLASS (object_class),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET (GeditNotebookClass, change_to_page),
+ NULL, NULL,
+ gedit_marshal_BOOLEAN__INT,
+ G_TYPE_BOOLEAN, 1,
+ G_TYPE_INT);
+
+ binding_set = gtk_binding_set_by_class (klass);
+ for (i = 1; i < 10; i++)
+ {
+ gtk_binding_entry_add_signal (binding_set,
+ GDK_KEY_0 + i, GDK_MOD1_MASK,
+ "change-to-page", 1,
+ G_TYPE_INT, i - 1);
+ }
/* Bind class to template */
gtk_widget_class_set_template_from_resource (widget_class,
diff --git a/gedit/gedit-notebook.h b/gedit/gedit-notebook.h
index f081abb..60d2ecc 100644
--- a/gedit/gedit-notebook.h
+++ b/gedit/gedit-notebook.h
@@ -92,6 +92,8 @@ struct _GeditNotebookClass
void (* show_popup_menu) (GeditNotebook *notebook,
GdkEvent *event,
GeditTab *tab);
+ gboolean(* change_to_page) (GeditNotebook *notebook,
+ gint page_num);
};
/*
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]