[nautilus] window-slot: allow setting the window after construction
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus] window-slot: allow setting the window after construction
- Date: Sat, 1 Sep 2012 03:04:39 +0000 (UTC)
commit 1f9a07a1c3eb67cf8cec53492361994c84c641d9
Author: Cosimo Cecchi <cosimoc gnome org>
Date: Fri Aug 31 21:10:57 2012 -0400
window-slot: allow setting the window after construction
Turn the window construct-only property into a construct property, and
add a setter method.
src/nautilus-window-manage-views.c | 17 ++++++++++-------
src/nautilus-window-slot.c | 35 +++++++++++++++++++++++++++--------
src/nautilus-window-slot.h | 11 ++++++++---
3 files changed, 45 insertions(+), 18 deletions(-)
---
diff --git a/src/nautilus-window-manage-views.c b/src/nautilus-window-manage-views.c
index 9ac7641..b9a4630 100644
--- a/src/nautilus-window-manage-views.c
+++ b/src/nautilus-window-manage-views.c
@@ -279,11 +279,14 @@ viewed_file_changed_callback (NautilusFile *file,
{
GFile *new_location;
gboolean is_in_trash, was_in_trash;
+ NautilusWindow *window;
g_assert (NAUTILUS_IS_FILE (file));
- g_assert (NAUTILUS_IS_WINDOW (slot->window));
+ g_assert (NAUTILUS_IS_WINDOW_SLOT (slot));
g_assert (file == slot->viewed_file);
+ window = nautilus_window_slot_get_window (slot);
+
if (!nautilus_file_is_not_yet_confirmed (file)) {
slot->viewed_file_seen = TRUE;
}
@@ -348,8 +351,8 @@ viewed_file_changed_callback (NautilusFile *file,
slot->location)) {
g_object_unref (slot->location);
slot->location = new_location;
- if (slot == slot->window->details->active_slot) {
- nautilus_window_sync_location_widgets (slot->window);
+ if (slot == nautilus_window_get_active_slot (window)) {
+ nautilus_window_sync_location_widgets (window);
}
} else {
/* TODO?
@@ -925,7 +928,7 @@ got_file_info_for_view_selection_callback (NautilusFile *file,
/* We're missing a previous location (if opened location
* in a new tab) so close it and return */
if (slot->location == NULL) {
- nautilus_window_slot_close (slot->window, slot);
+ nautilus_window_slot_close (window, slot);
} else {
/* We disconnected this, so we need to re-connect it */
viewed_file = nautilus_file_get (slot->location);
@@ -1487,11 +1490,11 @@ update_for_new_location (NautilusWindowSlot *slot)
nautilus_window_slot_update_title (slot);
- if (slot == slot->window->details->active_slot) {
- nautilus_window_sync_location_widgets (slot->window);
+ if (slot == nautilus_window_get_active_slot (window)) {
+ nautilus_window_sync_location_widgets (window);
if (location_really_changed) {
- nautilus_window_sync_search_widgets (slot->window);
+ nautilus_window_sync_search_widgets (window);
}
}
}
diff --git a/src/nautilus-window-slot.c b/src/nautilus-window-slot.c
index 3dabac1..9187338 100644
--- a/src/nautilus-window-slot.c
+++ b/src/nautilus-window-slot.c
@@ -55,6 +55,10 @@ enum {
NUM_PROPERTIES
};
+struct NautilusWindowSlotDetails {
+ NautilusWindow *window;
+};
+
static guint signals[LAST_SIGNAL] = { 0 };
static GParamSpec *properties[NUM_PROPERTIES] = { NULL, };
@@ -142,7 +146,7 @@ query_editor_cancel_callback (NautilusQueryEditor *editor,
NautilusWindow *window;
GtkActionGroup *action_group;
- window = slot->window;
+ window = slot->details->window;
action_group = nautilus_window_get_main_action_group (window);
search = gtk_action_group_get_action (action_group, NAUTILUS_ACTION_SEARCH);
@@ -252,7 +256,7 @@ real_active (NautilusWindowSlot *slot)
NautilusWindow *window;
int page_num;
- window = slot->window;
+ window = slot->details->window;
page_num = gtk_notebook_page_num (GTK_NOTEBOOK (window->details->notebook),
GTK_WIDGET (slot));
g_assert (page_num >= 0);
@@ -301,7 +305,7 @@ nautilus_window_slot_set_property (GObject *object,
switch (property_id) {
case PROP_WINDOW:
- slot->window = g_value_get_object (value);
+ nautilus_window_slot_set_window (slot, g_value_get_object (value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -319,7 +323,7 @@ nautilus_window_slot_get_property (GObject *object,
switch (property_id) {
case PROP_WINDOW:
- g_value_set_object (value, slot->window);
+ g_value_set_object (value, slot->details->window);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -371,7 +375,8 @@ nautilus_window_slot_constructed (GObject *object)
static void
nautilus_window_slot_init (NautilusWindowSlot *slot)
{
- /* do nothing */
+ slot->details = G_TYPE_INSTANCE_GET_PRIVATE
+ (slot, NAUTILUS_TYPE_WINDOW_SLOT, NautilusWindowSlotDetails);
}
static void
@@ -431,7 +436,7 @@ nautilus_window_slot_dispose (GObject *object)
slot->find_mount_cancellable = NULL;
}
- slot->window = NULL;
+ slot->details->window = NULL;
g_free (slot->title);
slot->title = NULL;
@@ -485,9 +490,10 @@ nautilus_window_slot_class_init (NautilusWindowSlotClass *klass)
"The NautilusWindow",
"The NautilusWindow this slot is part of",
NAUTILUS_TYPE_WINDOW,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
g_object_class_install_properties (oclass, NUM_PROPERTIES, properties);
+ g_type_class_add_private (klass, sizeof (NautilusWindowSlotDetails));
}
GFile *
@@ -516,7 +522,20 @@ NautilusWindow *
nautilus_window_slot_get_window (NautilusWindowSlot *slot)
{
g_assert (NAUTILUS_IS_WINDOW_SLOT (slot));
- return slot->window;
+ return slot->details->window;
+}
+
+void
+nautilus_window_slot_set_window (NautilusWindowSlot *slot,
+ NautilusWindow *window)
+{
+ g_assert (NAUTILUS_IS_WINDOW_SLOT (slot));
+ g_assert (NAUTILUS_IS_WINDOW (window));
+
+ if (slot->details->window != window) {
+ slot->details->window = window;
+ g_object_notify_by_pspec (G_OBJECT (slot), properties[PROP_WINDOW]);
+ }
}
/* nautilus_window_slot_update_title:
diff --git a/src/nautilus-window-slot.h b/src/nautilus-window-slot.h
index 02c043a..89a8559 100644
--- a/src/nautilus-window-slot.h
+++ b/src/nautilus-window-slot.h
@@ -51,13 +51,15 @@ struct NautilusWindowSlotClass {
void (* inactive) (NautilusWindowSlot *slot);
};
+typedef struct NautilusWindowSlotDetails NautilusWindowSlotDetails;
+
/* Each NautilusWindowSlot corresponds to a location in the window
* for displaying a NautilusView, i.e. a tab.
*/
struct NautilusWindowSlot {
GtkBox parent;
- NautilusWindow *window;
+ NautilusWindowSlotDetails *details;
/* slot contains
* 1) an event box containing extra_location_widgets
@@ -119,7 +121,11 @@ struct NautilusWindowSlot {
GType nautilus_window_slot_get_type (void);
-NautilusWindowSlot * nautilus_window_slot_new (NautilusWindow *window);
+NautilusWindowSlot * nautilus_window_slot_new (NautilusWindow *window);
+
+NautilusWindow * nautilus_window_slot_get_window (NautilusWindowSlot *slot);
+void nautilus_window_slot_set_window (NautilusWindowSlot *slot,
+ NautilusWindow *window);
void nautilus_window_slot_update_title (NautilusWindowSlot *slot);
void nautilus_window_slot_set_query_editor_visible (NautilusWindowSlot *slot,
@@ -172,7 +178,6 @@ void nautilus_window_slot_remove_extra_location_widgets (NautilusWindowSlot *
NautilusView * nautilus_window_slot_get_current_view (NautilusWindowSlot *slot);
char * nautilus_window_slot_get_current_uri (NautilusWindowSlot *slot);
-NautilusWindow * nautilus_window_slot_get_window (NautilusWindowSlot *slot);
void nautilus_window_slot_clear_forward_list (NautilusWindowSlot *slot);
void nautilus_window_slot_clear_back_list (NautilusWindowSlot *slot);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]