[gedit/wip/misc-improvements] view-frame: don't depend on GeditWindow
- From: Sébastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gedit/wip/misc-improvements] view-frame: don't depend on GeditWindow
- Date: Fri, 26 Jun 2015 09:20:27 +0000 (UTC)
commit a856fbd37baddd62cbddbc18f4f199d0d3cc0192
Author: Sébastien Wilmet <swilmet gnome org>
Date: Fri Jun 26 11:12:06 2015 +0200
view-frame: don't depend on GeditWindow
Lower the WTF-level in that code.
- disconnect the signal handler in dispose() instead of finalize()
(safer).
- we don't need GeditWindow, GtkWindow is sufficient.
- simplify "frame->window = GTK_WIDGET (&gedit_window->window);"
(strange code)
Note that a class should not be aware of who contains it. Centering the
view when the window is in fullscreen mode should be done by a higher
class in the containment hierarchy (by GeditWindow, most logically).
gedit/gedit-view-frame.c | 34 ++++++++++++++--------------------
1 files changed, 14 insertions(+), 20 deletions(-)
---
diff --git a/gedit/gedit-view-frame.c b/gedit/gedit-view-frame.c
index 14fb915..04a70f3 100644
--- a/gedit/gedit-view-frame.c
+++ b/gedit/gedit-view-frame.c
@@ -32,7 +32,6 @@
#include <glib/gi18n.h>
#include <stdlib.h>
-#include "gedit-window.h"
#include "gedit-view-holder.h"
#include "gedit-debug.h"
#include "gedit-utils.h"
@@ -63,7 +62,6 @@ struct _GeditViewFrame
GeditView *view;
GeditViewHolder *view_holder;
- GtkWidget *window;
GtkFrame *map_frame;
SearchMode search_mode;
@@ -101,6 +99,8 @@ struct _GeditViewFrame
gchar *search_text;
gchar *old_search_text;
+ /* Track if the window is in fullscreen mode. */
+ GtkWindow *window;
gint window_state_changed_handler_id;
};
@@ -148,6 +148,13 @@ gedit_view_frame_dispose (GObject *object)
frame->remove_entry_tag_timeout_id = 0;
}
+ if (frame->window_state_changed_handler_id != 0)
+ {
+ g_signal_handler_disconnect (frame->window,
+ frame->window_state_changed_handler_id);
+ frame->window_state_changed_handler_id = 0;
+ }
+
if (buffer != NULL)
{
GtkSourceFile *file = gedit_document_get_file (GEDIT_DOCUMENT (buffer));
@@ -170,13 +177,6 @@ gedit_view_frame_finalize (GObject *object)
g_free (frame->search_text);
g_free (frame->old_search_text);
- if (frame->window_state_changed_handler_id != 0)
- {
- g_signal_handler_disconnect (frame->window,
- frame->window_state_changed_handler_id);
- frame->window_state_changed_handler_id = 0;
- }
-
G_OBJECT_CLASS (gedit_view_frame_parent_class)->finalize (object);
}
@@ -1511,8 +1511,6 @@ on_toplevel_window_changed (GtkWidget *widget,
GtkWidget *previous_toplevel,
GeditViewFrame *frame)
{
- GeditWindow *gedit_window;
-
if (frame->window_state_changed_handler_id != 0)
{
g_signal_handler_disconnect (frame->window,
@@ -1520,16 +1518,14 @@ on_toplevel_window_changed (GtkWidget *widget,
frame->window_state_changed_handler_id = 0;
}
- gedit_window = GEDIT_WINDOW (gtk_widget_get_ancestor (GTK_WIDGET (frame), GEDIT_TYPE_WINDOW));
+ frame->window = GTK_WINDOW (gtk_widget_get_ancestor (GTK_WIDGET (frame), GTK_TYPE_WINDOW));
- if (gedit_window)
+ if (frame->window != NULL)
{
- frame->window = GTK_WIDGET (&gedit_window->window);
-
frame->window_state_changed_handler_id = g_signal_connect (frame->window,
- "window-state-event",
- G_CALLBACK
(on_window_state_changed),
- frame);
+ "window-state-event",
+ G_CALLBACK
(on_window_state_changed),
+ frame);
}
}
@@ -1556,8 +1552,6 @@ gedit_view_frame_init (GeditViewFrame *frame)
doc = gedit_view_frame_get_document (frame);
file = gedit_document_get_file (doc);
- frame->window_state_changed_handler_id = 0;
-
gtk_source_file_set_mount_operation_factory (file,
view_frame_mount_operation_factory,
frame,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]