diff options
author | Rohit Kaushik <kaushikrohit325@gmail.com> | 2017-01-30 16:31:09 +0530 |
---|---|---|
committer | Ernestas Kulik <ernestask@src.gnome.org> | 2017-02-03 15:53:36 +0200 |
commit | 04811bc6da418f4bab13fd1cf45d7c026857dcca (patch) | |
tree | b46f882aecd6c9db680819fbd8138f52f366eba3 /src | |
parent | 928b806cb559e9509c0d81d45bd118243fa33ab0 (diff) | |
download | nautilus-04811bc6da418f4bab13fd1cf45d7c026857dcca.tar.gz |
canvas-view: port to G_DECLARE* type declaration
This patch reduces the manual definition of macros and ports it
to G_Declare type declaration, which make the code cleaner and
easier to read and understand.
https://bugzilla.gnome.org/show_bug.cgi?id=777607
Diffstat (limited to 'src')
-rw-r--r-- | src/nautilus-canvas-view.c | 129 | ||||
-rw-r--r-- | src/nautilus-canvas-view.h | 26 |
2 files changed, 86 insertions, 69 deletions
diff --git a/src/nautilus-canvas-view.c b/src/nautilus-canvas-view.c index 87d118102..f1ed2c58f 100644 --- a/src/nautilus-canvas-view.c +++ b/src/nautilus-canvas-view.c @@ -86,7 +86,7 @@ typedef enum MENU_ITEM_TYPE_TREE } MenuItemType; -struct NautilusCanvasViewDetails +typedef struct { GList *icons_not_positioned; @@ -107,7 +107,7 @@ struct NautilusCanvasViewDetails * Ideally we would connect to a weak reference and do a cancellable. */ gboolean destroyed; -}; +} NautilusCanvasViewPrivate; /* Note that the first item in this list is the default sort, * and that the items show up in the menu in the order they @@ -179,6 +179,8 @@ static const SortCriterion sort_criteria[] = } }; +G_DEFINE_TYPE_WITH_PRIVATE (NautilusCanvasView, nautilus_canvas_view, NAUTILUS_TYPE_FILES_VIEW); + static void nautilus_canvas_view_set_directory_sort_by (NautilusCanvasView *canvas_view, NautilusFile *file, const SortCriterion *sort); @@ -196,22 +198,22 @@ static void on_clipboard_owner_changed (GtkClipboard *clipboard, GdkEvent *event, gpointer user_data); -G_DEFINE_TYPE (NautilusCanvasView, nautilus_canvas_view, NAUTILUS_TYPE_FILES_VIEW); - static void nautilus_canvas_view_destroy (GtkWidget *object) { NautilusCanvasView *canvas_view; + NautilusCanvasViewPrivate *priv; GtkClipboard *clipboard; canvas_view = NAUTILUS_CANVAS_VIEW (object); + priv = nautilus_canvas_view_get_instance_private (canvas_view); nautilus_canvas_view_clear (NAUTILUS_FILES_VIEW (object)); - if (canvas_view->details->react_to_canvas_change_idle_id != 0) + if (priv->react_to_canvas_change_idle_id != 0) { - g_source_remove (canvas_view->details->react_to_canvas_change_idle_id); - canvas_view->details->react_to_canvas_change_idle_id = 0; + g_source_remove (priv->react_to_canvas_change_idle_id); + priv->react_to_canvas_change_idle_id = 0; } clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD); @@ -219,10 +221,10 @@ nautilus_canvas_view_destroy (GtkWidget *object) on_clipboard_owner_changed, canvas_view); - if (canvas_view->details->icons_not_positioned) + if (priv->icons_not_positioned) { - nautilus_file_list_free (canvas_view->details->icons_not_positioned); - canvas_view->details->icons_not_positioned = NULL; + nautilus_file_list_free (priv->icons_not_positioned); + priv->icons_not_positioned = NULL; } GTK_WIDGET_CLASS (nautilus_canvas_view_parent_class)->destroy (object); @@ -231,7 +233,11 @@ nautilus_canvas_view_destroy (GtkWidget *object) static NautilusCanvasContainer * get_canvas_container (NautilusCanvasView *canvas_view) { - return NAUTILUS_CANVAS_CONTAINER (canvas_view->details->canvas_container); + NautilusCanvasViewPrivate *priv; + + priv = nautilus_canvas_view_get_instance_private (canvas_view); + + return NAUTILUS_CANVAS_CONTAINER (priv->canvas_container); } NautilusCanvasContainer * @@ -243,9 +249,13 @@ nautilus_canvas_view_get_canvas_container (NautilusCanvasView *canvas_view) static gboolean nautilus_canvas_view_supports_manual_layout (NautilusCanvasView *view) { + NautilusCanvasViewPrivate *priv; + g_return_val_if_fail (NAUTILUS_IS_CANVAS_VIEW (view), FALSE); - return view->details->supports_manual_layout; + priv = nautilus_canvas_view_get_instance_private (view); + + return priv->supports_manual_layout; } static gboolean @@ -306,9 +316,11 @@ update_sort_criterion (NautilusCanvasView *canvas_view, gboolean set_metadata) { NautilusFile *file; + NautilusCanvasViewPrivate *priv; const SortCriterion *overrided_sort_criterion; file = nautilus_files_view_get_directory_as_file (NAUTILUS_FILES_VIEW (canvas_view)); + priv = nautilus_canvas_view_get_instance_private (canvas_view); /* Make sure we use the default one and not one that the user used previously * of the change to not allow sorting on search and recent, or the @@ -317,7 +329,7 @@ update_sort_criterion (NautilusCanvasView *canvas_view, { overrided_sort_criterion = get_default_sort_order (file); } - else if (sort != NULL && canvas_view->details->sort != sort) + else if (sort != NULL && priv->sort != sort) { overrided_sort_criterion = sort; if (set_metadata) @@ -333,7 +345,7 @@ update_sort_criterion (NautilusCanvasView *canvas_view, return; } - canvas_view->details->sort = overrided_sort_criterion; + priv->sort = overrided_sort_criterion; } void @@ -480,25 +492,37 @@ nautilus_canvas_view_file_changed (NautilusFilesView *view, static gboolean nautilus_canvas_view_supports_auto_layout (NautilusCanvasView *view) { + NautilusCanvasViewPrivate *priv; + g_return_val_if_fail (NAUTILUS_IS_CANVAS_VIEW (view), FALSE); - return view->details->supports_auto_layout; + priv = nautilus_canvas_view_get_instance_private (view); + + return priv->supports_auto_layout; } static gboolean nautilus_canvas_view_supports_scaling (NautilusCanvasView *view) { + NautilusCanvasViewPrivate *priv; + g_return_val_if_fail (NAUTILUS_IS_CANVAS_VIEW (view), FALSE); - return view->details->supports_scaling; + priv = nautilus_canvas_view_get_instance_private (view); + + return priv->supports_scaling; } static gboolean nautilus_canvas_view_supports_keep_aligned (NautilusCanvasView *view) { + NautilusCanvasViewPrivate *priv; + g_return_val_if_fail (NAUTILUS_IS_CANVAS_VIEW (view), FALSE); - return view->details->supports_keep_aligned; + priv = nautilus_canvas_view_get_instance_private (view); + + return priv->supports_keep_aligned; } static const SortCriterion * @@ -763,9 +787,12 @@ on_clipboard_contents_received (GtkClipboard *clipboard, GtkSelectionData *selection_data, gpointer user_data) { + NautilusCanvasViewPrivate *priv; NautilusCanvasView *view = NAUTILUS_CANVAS_VIEW (user_data); - if (view->details->destroyed) + priv = nautilus_canvas_view_get_instance_private (view); + + if (priv->destroyed) { /* We've been destroyed since call */ g_object_unref (view); @@ -1017,13 +1044,17 @@ action_zoom_to_level (GSimpleAction *action, static void switch_to_manual_layout (NautilusCanvasView *canvas_view) { + NautilusCanvasViewPrivate *priv; + + priv = nautilus_canvas_view_get_instance_private (canvas_view); + if (!nautilus_canvas_view_using_auto_layout (canvas_view) || !nautilus_files_view_is_editable (NAUTILUS_FILES_VIEW (canvas_view))) { return; } - canvas_view->details->sort = &sort_criteria[0]; + priv->sort = &sort_criteria[0]; nautilus_canvas_container_set_auto_layout (get_canvas_container (canvas_view), FALSE); @@ -1120,8 +1151,10 @@ nautilus_canvas_view_update_actions_state (NautilusFilesView *view) GAction *action; gboolean keep_aligned; NautilusCanvasView *canvas_view; + NautilusCanvasViewPrivate *priv; canvas_view = NAUTILUS_CANVAS_VIEW (view); + priv = nautilus_canvas_view_get_instance_private (canvas_view); NAUTILUS_FILES_VIEW_CLASS (nautilus_canvas_view_parent_class)->update_actions_state (view); @@ -1141,11 +1174,11 @@ nautilus_canvas_view_update_actions_state (NautilusFilesView *view) sort_state = g_action_group_get_action_state (view_action_group, "sort"); if (g_strcmp0 (g_variant_get_string (sort_state, NULL), - NAUTILUS_CANVAS_VIEW (view)->details->sort->action_target_name) != 0) + priv->sort->action_target_name) != 0) { g_action_group_change_action_state (view_action_group, "sort", - g_variant_new_string (NAUTILUS_CANVAS_VIEW (view)->details->sort->action_target_name)); + g_variant_new_string (priv->sort->action_target_name)); } g_variant_unref (sort_state); @@ -1157,8 +1190,8 @@ nautilus_canvas_view_update_actions_state (NautilusFilesView *view) !showing_search_directory (view)); action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group), "keep-aligned"); g_simple_action_set_enabled (G_SIMPLE_ACTION (action), - canvas_view->details->supports_keep_aligned); - if (canvas_view->details->supports_keep_aligned) + priv->supports_keep_aligned); + if (priv->supports_keep_aligned) { keep_aligned = nautilus_canvas_container_is_keep_aligned (get_canvas_container (canvas_view)); g_action_change_state (action, g_variant_new_boolean (keep_aligned)); @@ -1398,11 +1431,15 @@ nautilus_canvas_view_compare_files (NautilusCanvasView *canvas_view, NautilusFile *a, NautilusFile *b) { + NautilusCanvasViewPrivate *priv; + + priv = nautilus_canvas_view_get_instance_private (canvas_view); + return nautilus_file_compare_for_sort - (a, b, canvas_view->details->sort->sort_type, + (a, b, priv->sort->sort_type, /* Use type-unsafe cast for performance */ nautilus_files_view_should_sort_directories_first ((NautilusFilesView *) canvas_view), - canvas_view->details->sort->reverse_order); + priv->sort->reverse_order); } static int @@ -1705,11 +1742,14 @@ initialize_canvas_container (NautilusCanvasView *canvas_view, NautilusCanvasContainer *canvas_container) { GtkWidget *content_widget; + NautilusCanvasViewPrivate *priv; + + priv = nautilus_canvas_view_get_instance_private (canvas_view); content_widget = nautilus_files_view_get_content_widget (NAUTILUS_FILES_VIEW (canvas_view)); - canvas_view->details->canvas_container = GTK_WIDGET (canvas_container); + priv->canvas_container = GTK_WIDGET (canvas_container); g_object_add_weak_pointer (G_OBJECT (canvas_container), - (gpointer *) &canvas_view->details->canvas_container); + (gpointer *) &priv->canvas_container); gtk_widget_set_can_focus (GTK_WIDGET (canvas_container), TRUE); @@ -1887,32 +1927,34 @@ nautilus_canvas_view_set_property (GObject *object, GParamSpec *pspec) { NautilusCanvasView *canvas_view; + NautilusCanvasViewPrivate *priv; canvas_view = NAUTILUS_CANVAS_VIEW (object); + priv = nautilus_canvas_view_get_instance_private (canvas_view); switch (prop_id) { case PROP_SUPPORTS_AUTO_LAYOUT: { - canvas_view->details->supports_auto_layout = g_value_get_boolean (value); + priv->supports_auto_layout = g_value_get_boolean (value); } break; case PROP_SUPPORTS_MANUAL_LAYOUT: { - canvas_view->details->supports_manual_layout = g_value_get_boolean (value); + priv->supports_manual_layout = g_value_get_boolean (value); } break; case PROP_SUPPORTS_SCALING: { - canvas_view->details->supports_scaling = g_value_get_boolean (value); + priv->supports_scaling = g_value_get_boolean (value); } break; case PROP_SUPPORTS_KEEP_ALIGNED: { - canvas_view->details->supports_keep_aligned = g_value_get_boolean (value); + priv->supports_keep_aligned = g_value_get_boolean (value); } break; @@ -1925,24 +1967,14 @@ nautilus_canvas_view_set_property (GObject *object, } static void -nautilus_canvas_view_finalize (GObject *object) -{ - NautilusCanvasView *canvas_view; - - canvas_view = NAUTILUS_CANVAS_VIEW (object); - - g_free (canvas_view->details); - - G_OBJECT_CLASS (nautilus_canvas_view_parent_class)->finalize (object); -} - -static void nautilus_canvas_view_dispose (GObject *object) { NautilusCanvasView *canvas_view; + NautilusCanvasViewPrivate *priv; canvas_view = NAUTILUS_CANVAS_VIEW (object); - canvas_view->details->destroyed = TRUE; + priv = nautilus_canvas_view_get_instance_private (canvas_view); + priv->destroyed = TRUE; g_signal_handlers_disconnect_by_func (nautilus_preferences, default_sort_order_changed_callback, @@ -1969,7 +2001,6 @@ nautilus_canvas_view_class_init (NautilusCanvasViewClass *klass) oclass = G_OBJECT_CLASS (klass); oclass->set_property = nautilus_canvas_view_set_property; - oclass->finalize = nautilus_canvas_view_finalize; oclass->dispose = nautilus_canvas_view_dispose; GTK_WIDGET_CLASS (klass)->destroy = nautilus_canvas_view_destroy; @@ -2041,13 +2072,15 @@ nautilus_canvas_view_class_init (NautilusCanvasViewClass *klass) static void nautilus_canvas_view_init (NautilusCanvasView *canvas_view) { + NautilusCanvasViewPrivate *priv; NautilusCanvasContainer *canvas_container; GActionGroup *view_action_group; GtkClipboard *clipboard; - canvas_view->details = g_new0 (NautilusCanvasViewDetails, 1); - canvas_view->details->sort = &sort_criteria[0]; - canvas_view->details->destroyed = FALSE; + priv = nautilus_canvas_view_get_instance_private (canvas_view); + + priv->sort = &sort_criteria[0]; + priv->destroyed = FALSE; canvas_container = create_canvas_container (canvas_view); initialize_canvas_container (canvas_view, canvas_container); diff --git a/src/nautilus-canvas-view.h b/src/nautilus-canvas-view.h index cc5cb1dfb..799cc932d 100644 --- a/src/nautilus-canvas-view.h +++ b/src/nautilus-canvas-view.h @@ -28,36 +28,18 @@ #include "nautilus-files-view.h" #include "nautilus-canvas-container.h" -typedef struct NautilusCanvasView NautilusCanvasView; -typedef struct NautilusCanvasViewClass NautilusCanvasViewClass; +G_BEGIN_DECLS #define NAUTILUS_TYPE_CANVAS_VIEW nautilus_canvas_view_get_type() -#define NAUTILUS_CANVAS_VIEW(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), NAUTILUS_TYPE_CANVAS_VIEW, NautilusCanvasView)) -#define NAUTILUS_CANVAS_VIEW_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST ((klass), NAUTILUS_TYPE_CANVAS_VIEW, NautilusCanvasViewClass)) -#define NAUTILUS_IS_CANVAS_VIEW(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NAUTILUS_TYPE_CANVAS_VIEW)) -#define NAUTILUS_IS_CANVAS_VIEW_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE ((klass), NAUTILUS_TYPE_CANVAS_VIEW)) -#define NAUTILUS_CANVAS_VIEW_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), NAUTILUS_TYPE_CANVAS_VIEW, NautilusCanvasViewClass)) -typedef struct NautilusCanvasViewDetails NautilusCanvasViewDetails; +G_DECLARE_DERIVABLE_TYPE (NautilusCanvasView, nautilus_canvas_view, NAUTILUS, CANVAS_VIEW, NautilusFilesView) -struct NautilusCanvasView { - NautilusFilesView parent; - NautilusCanvasViewDetails *details; -}; - -struct NautilusCanvasViewClass { +struct _NautilusCanvasViewClass { NautilusFilesViewClass parent_class; NautilusCanvasContainer * (* create_canvas_container) (NautilusCanvasView *canvas_view); }; -/* GObject support */ -GType nautilus_canvas_view_get_type (void); int nautilus_canvas_view_compare_files (NautilusCanvasView *canvas_view, NautilusFile *a, NautilusFile *b); @@ -69,4 +51,6 @@ NautilusFilesView * nautilus_canvas_view_new (NautilusWindowSlot *slot); NautilusCanvasContainer * nautilus_canvas_view_get_canvas_container (NautilusCanvasView *view); +G_END_DECLS + #endif /* NAUTILUS_CANVAS_VIEW_H */ |