[nautilus] slot: make NautilusWindowSlot a GtkBox
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus] slot: make NautilusWindowSlot a GtkBox
- Date: Mon, 9 Jan 2012 22:26:38 +0000 (UTC)
commit ec391bf3de51ab4ee7f510ab6570fc240a7754c0
Author: Cosimo Cecchi <cosimoc gnome org>
Date: Mon Jan 9 15:48:01 2012 +0100
slot: make NautilusWindowSlot a GtkBox
Simplifies management of the slot quite a bit.
src/nautilus-notebook.c | 14 +++++++-------
src/nautilus-window-manage-views.c | 3 +--
src/nautilus-window-manage-views.h | 3 +--
src/nautilus-window-pane.c | 32 ++++++--------------------------
src/nautilus-window-pane.h | 3 ---
src/nautilus-window-slot.c | 16 ++++++++--------
src/nautilus-window-slot.h | 7 +++----
7 files changed, 26 insertions(+), 52 deletions(-)
---
diff --git a/src/nautilus-notebook.c b/src/nautilus-notebook.c
index 000294d..c4e2139 100644
--- a/src/nautilus-notebook.c
+++ b/src/nautilus-notebook.c
@@ -262,7 +262,8 @@ nautilus_notebook_sync_loading (NautilusNotebook *notebook,
g_return_if_fail (NAUTILUS_IS_NOTEBOOK (notebook));
g_return_if_fail (NAUTILUS_IS_WINDOW_SLOT (slot));
- tab_label = gtk_notebook_get_tab_label (GTK_NOTEBOOK (notebook), slot->content_box);
+ tab_label = gtk_notebook_get_tab_label (GTK_NOTEBOOK (notebook),
+ GTK_WIDGET (slot));
g_return_if_fail (GTK_IS_WIDGET (tab_label));
spinner = GTK_WIDGET (g_object_get_data (G_OBJECT (tab_label), "spinner"));
@@ -295,9 +296,8 @@ nautilus_notebook_sync_tab_label (NautilusNotebook *notebook,
g_return_if_fail (NAUTILUS_IS_NOTEBOOK (notebook));
g_return_if_fail (NAUTILUS_IS_WINDOW_SLOT (slot));
- g_return_if_fail (GTK_IS_WIDGET (slot->content_box));
- hbox = gtk_notebook_get_tab_label (GTK_NOTEBOOK (notebook), slot->content_box);
+ hbox = gtk_notebook_get_tab_label (GTK_NOTEBOOK (notebook), GTK_WIDGET (slot));
g_return_if_fail (GTK_IS_WIDGET (hbox));
label = GTK_WIDGET (g_object_get_data (G_OBJECT (hbox), "label"));
@@ -323,7 +323,7 @@ close_button_clicked_cb (GtkWidget *widget,
{
GtkWidget *notebook;
- notebook = gtk_widget_get_ancestor (slot->content_box, NAUTILUS_TYPE_NOTEBOOK);
+ notebook = gtk_widget_get_ancestor (GTK_WIDGET (slot), NAUTILUS_TYPE_NOTEBOOK);
if (notebook != NULL) {
g_signal_emit (notebook, signals[TAB_CLOSE_REQUEST], 0, slot);
}
@@ -424,12 +424,12 @@ nautilus_notebook_add_tab (NautilusNotebook *notebook,
tab_label = build_tab_label (notebook, slot);
position = gtk_notebook_insert_page (GTK_NOTEBOOK (notebook),
- slot->content_box,
+ GTK_WIDGET (slot),
tab_label,
position);
gtk_container_child_set (GTK_CONTAINER (notebook),
- slot->content_box,
+ GTK_WIDGET (slot),
"tab-expand", TRUE,
NULL);
@@ -440,7 +440,7 @@ nautilus_notebook_add_tab (NautilusNotebook *notebook,
/* FIXME gtk bug! */
/* FIXME: this should be fixed in gtk 2.12; check & remove this! */
/* The signal handler may have reordered the tabs */
- position = gtk_notebook_page_num (gnotebook, slot->content_box);
+ position = gtk_notebook_page_num (gnotebook, GTK_WIDGET (slot));
if (jump_to)
{
diff --git a/src/nautilus-window-manage-views.c b/src/nautilus-window-manage-views.c
index 2720ce4..c338569 100644
--- a/src/nautilus-window-manage-views.c
+++ b/src/nautilus-window-manage-views.c
@@ -1728,8 +1728,7 @@ nautilus_window_slot_set_content_view (NautilusWindowSlot *slot,
}
void
-nautilus_window_manage_views_close_slot (NautilusWindowPane *pane,
- NautilusWindowSlot *slot)
+nautilus_window_manage_views_close_slot (NautilusWindowSlot *slot)
{
if (slot->content_view != NULL) {
nautilus_window_disconnect_content_view (nautilus_window_slot_get_window (slot),
diff --git a/src/nautilus-window-manage-views.h b/src/nautilus-window-manage-views.h
index 4cb9c02..0a601de 100644
--- a/src/nautilus-window-manage-views.h
+++ b/src/nautilus-window-manage-views.h
@@ -30,8 +30,7 @@
#include "nautilus-window.h"
#include "nautilus-window-pane.h"
-void nautilus_window_manage_views_close_slot (NautilusWindowPane *pane,
- NautilusWindowSlot *slot);
+void nautilus_window_manage_views_close_slot (NautilusWindowSlot *slot);
/* NautilusWindowInfo implementation: */
diff --git a/src/nautilus-window-pane.c b/src/nautilus-window-pane.c
index 7a3a0b2..418ecc4 100644
--- a/src/nautilus-window-pane.c
+++ b/src/nautilus-window-pane.c
@@ -588,7 +588,7 @@ notebook_switch_page_cb (GtkNotebook *notebook,
g_assert (widget != NULL);
/* find slot corresponding to the target page */
- slot = nautilus_window_pane_get_slot_for_content_box (pane, widget);
+ slot = NAUTILUS_WINDOW_SLOT (widget);
g_assert (slot != NULL);
nautilus_window_set_active_slot (nautilus_window_slot_get_window (slot),
@@ -860,23 +860,6 @@ nautilus_window_pane_new (NautilusWindow *window)
NULL);
}
-NautilusWindowSlot *
-nautilus_window_pane_get_slot_for_content_box (NautilusWindowPane *pane,
- GtkWidget *content_box)
-{
- NautilusWindowSlot *slot;
- GList *l;
-
- for (l = pane->slots; l != NULL; l = l->next) {
- slot = NAUTILUS_WINDOW_SLOT (l->data);
-
- if (slot->content_box == content_box) {
- return slot;
- }
- }
- return NULL;
-}
-
void
nautilus_window_pane_set_active (NautilusWindowPane *pane,
gboolean is_active)
@@ -1068,12 +1051,15 @@ nautilus_window_pane_close_slot (NautilusWindowPane *pane,
pane = slot->pane;
notebook = GTK_NOTEBOOK (pane->notebook);
- page_num = gtk_notebook_page_num (notebook, GTK_WIDGET (slot->content_box));
+ nautilus_window_manage_views_close_slot (slot);
+
+ page_num = gtk_notebook_page_num (notebook, GTK_WIDGET (slot));
g_assert (page_num >= 0);
g_signal_handlers_block_by_func (notebook,
- G_CALLBACK (notebook_switch_page_cb),
+ G_CALLBACK (notebook_switch_page_cb),
pane);
+ /* this will call gtk_widget_destroy on the slot */
gtk_notebook_remove_page (notebook, page_num);
g_signal_handlers_unblock_by_func (notebook,
G_CALLBACK (notebook_switch_page_cb),
@@ -1082,11 +1068,7 @@ nautilus_window_pane_close_slot (NautilusWindowPane *pane,
gtk_notebook_set_show_tabs (notebook,
gtk_notebook_get_n_pages (notebook) > 1);
- nautilus_window_manage_views_close_slot (pane, slot);
-
- g_object_run_dispose (G_OBJECT (slot));
slot->pane = NULL;
- g_object_unref (slot);
pane->slots = g_list_remove (pane->slots, slot);
}
@@ -1114,8 +1096,6 @@ nautilus_window_pane_open_slot (NautilusWindowPane *pane,
G_CALLBACK (notebook_switch_page_cb),
pane);
- gtk_widget_show (GTK_WIDGET (slot->content_box));
-
pane->slots = g_list_append (pane->slots, slot);
return slot;
diff --git a/src/nautilus-window-pane.h b/src/nautilus-window-pane.h
index ec83e17..c7bf583 100644
--- a/src/nautilus-window-pane.h
+++ b/src/nautilus-window-pane.h
@@ -96,9 +96,6 @@ void nautilus_window_pane_sync_search_widgets (NautilusWindowPane *pane);
void nautilus_window_pane_set_active (NautilusWindowPane *pane, gboolean is_active);
void nautilus_window_pane_slot_close (NautilusWindowPane *pane, NautilusWindowSlot *slot);
-NautilusWindowSlot* nautilus_window_pane_get_slot_for_content_box (NautilusWindowPane *pane,
- GtkWidget *content_box);
-
void nautilus_window_pane_grab_focus (NautilusWindowPane *pane);
/* bars */
diff --git a/src/nautilus-window-slot.c b/src/nautilus-window-slot.c
index 54dcb78..69ccebf 100644
--- a/src/nautilus-window-slot.c
+++ b/src/nautilus-window-slot.c
@@ -36,7 +36,7 @@
#include <eel/eel-string.h>
-G_DEFINE_TYPE (NautilusWindowSlot, nautilus_window_slot, G_TYPE_OBJECT);
+G_DEFINE_TYPE (NautilusWindowSlot, nautilus_window_slot, GTK_TYPE_BOX);
enum {
ACTIVE,
@@ -130,7 +130,7 @@ real_active (NautilusWindowSlot *slot)
window = nautilus_window_slot_get_window (slot);
pane = slot->pane;
page_num = gtk_notebook_page_num (GTK_NOTEBOOK (pane->notebook),
- slot->content_box);
+ GTK_WIDGET (slot));
g_assert (page_num >= 0);
gtk_notebook_set_current_page (GTK_NOTEBOOK (pane->notebook), page_num);
@@ -171,22 +171,22 @@ floating_bar_action_cb (NautilusFloatingBar *floating_bar,
static void
nautilus_window_slot_init (NautilusWindowSlot *slot)
{
- GtkWidget *content_box, *extras_vbox;
+ GtkWidget *extras_vbox;
- content_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
- slot->content_box = content_box;
- gtk_widget_show (content_box);
+ gtk_orientable_set_orientation (GTK_ORIENTABLE (slot),
+ GTK_ORIENTATION_VERTICAL);
+ gtk_widget_show (GTK_WIDGET (slot));
extras_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
slot->extra_location_widgets = extras_vbox;
- gtk_box_pack_start (GTK_BOX (content_box), extras_vbox, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (slot), extras_vbox, FALSE, FALSE, 0);
gtk_widget_show (extras_vbox);
slot->view_overlay = gtk_overlay_new ();
gtk_widget_add_events (slot->view_overlay,
GDK_ENTER_NOTIFY_MASK |
GDK_LEAVE_NOTIFY_MASK);
- gtk_box_pack_start (GTK_BOX (content_box), slot->view_overlay, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (slot), slot->view_overlay, TRUE, TRUE, 0);
gtk_widget_show (slot->view_overlay);
slot->floating_bar = nautilus_floating_bar_new ("", FALSE);
diff --git a/src/nautilus-window-slot.h b/src/nautilus-window-slot.h
index 11faeda..a0ca169 100644
--- a/src/nautilus-window-slot.h
+++ b/src/nautilus-window-slot.h
@@ -44,7 +44,7 @@ typedef enum {
} NautilusLocationChangeType;
struct NautilusWindowSlotClass {
- GObjectClass parent_class;
+ GtkBoxClass parent_class;
/* wrapped NautilusWindowInfo signals, for overloading */
void (* active) (NautilusWindowSlot *slot);
@@ -59,15 +59,14 @@ struct NautilusWindowSlotClass {
* tab, while spatial windows only have one slot.
*/
struct NautilusWindowSlot {
- GObject parent;
+ GtkBox parent;
NautilusWindowPane *pane;
- /* content_box contains
+ /* slot contains
* 1) an event box containing extra_location_widgets
* 2) the view box for the content view
*/
- GtkWidget *content_box;
GtkWidget *extra_location_widgets;
GtkWidget *view_overlay;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]