[gedit] Port gedit to GtkOverlay



commit caa8ca99570d344b7ec68801ab358b0a49cd5048
Author: Ignacio Casal Quinteiro <icq gnome org>
Date:   Mon Jun 13 13:37:37 2011 +0200

    Port gedit to GtkOverlay

 gedit/Makefile.am              |    4 -
 gedit/gedit-animatable.c       |    3 +-
 gedit/gedit-animated-overlay.c |   38 +---
 gedit/gedit-animated-overlay.h |   13 +-
 gedit/gedit-floating-slider.c  |   16 +-
 gedit/gedit-floating-slider.h  |    9 +-
 gedit/gedit-overlay-child.c    |  362 ---------------------------
 gedit/gedit-overlay-child.h    |   89 -------
 gedit/gedit-overlay.c          |  532 ----------------------------------------
 gedit/gedit-overlay.h          |   70 ------
 gedit/gedit-view-frame.c       |   28 +--
 11 files changed, 35 insertions(+), 1129 deletions(-)
---
diff --git a/gedit/Makefile.am b/gedit/Makefile.am
index df39644..7748d3d 100644
--- a/gedit/Makefile.am
+++ b/gedit/Makefile.am
@@ -120,8 +120,6 @@ NOINST_H_FILES =			\
 	gedit-language-manager.h	\
 	gedit-multi-notebook.h		\
 	gedit-notebook.h		\
-	gedit-overlay.h			\
-	gedit-overlay-child.h		\
 	gedit-plugins-engine.h		\
 	gedit-print-job.h		\
 	gedit-print-preview.h		\
@@ -204,8 +202,6 @@ libgedit_c_files =			\
 	gedit-message.c			\
 	gedit-multi-notebook.c		\
 	gedit-notebook.c		\
-	gedit-overlay.c			\
-	gedit-overlay-child.c		\
 	gedit-panel.c			\
 	gedit-plugins-engine.c		\
 	gedit-print-job.c		\
diff --git a/gedit/gedit-animatable.c b/gedit/gedit-animatable.c
index 9a1c943..d2aec96 100644
--- a/gedit/gedit-animatable.c
+++ b/gedit/gedit-animatable.c
@@ -20,11 +20,10 @@
  */
 
 #include "gedit-animatable.h"
-#include "gedit-overlay-child.h"
 #include "theatrics/gedit-theatrics-choreographer.h"
 #include "theatrics/gedit-theatrics-enum-types.h"
 
-G_DEFINE_INTERFACE(GeditAnimatable, gedit_animatable, GEDIT_TYPE_OVERLAY_CHILD)
+G_DEFINE_INTERFACE(GeditAnimatable, gedit_animatable, GTK_TYPE_WIDGET)
 
 void
 gedit_animatable_default_init (GeditAnimatableInterface *iface)
diff --git a/gedit/gedit-animated-overlay.c b/gedit/gedit-animated-overlay.c
index c0856d9..8160f2f 100644
--- a/gedit/gedit-animated-overlay.c
+++ b/gedit/gedit-animated-overlay.c
@@ -29,7 +29,7 @@ struct _GeditAnimatedOverlayPrivate
 	GeditTheatricsStage *stage;
 };
 
-G_DEFINE_TYPE (GeditAnimatedOverlay, gedit_animated_overlay, GEDIT_TYPE_OVERLAY)
+G_DEFINE_TYPE (GeditAnimatedOverlay, gedit_animated_overlay, GTK_TYPE_OVERLAY)
 
 static void
 gedit_animated_overlay_dispose (GObject *object)
@@ -148,46 +148,26 @@ on_animation_state_changed (GeditAnimatable      *animatable,
 
 /**
  * gedit_animated_overlay_new:
- * @main_widget: a #GtkWidget
- * @relative_widget: (allow-none): a #Gtkwidget
  *
- * Creates a new #GeditAnimatedOverlay. If @relative_widget is not %NULL the
- * floating widgets will be placed in relation to it, if not @main_widget will
- * be use for this purpose.
+ * Creates a new #GeditAnimatedOverlay.
  *
  * Returns: a new #GeditAnimatedOverlay object.
  */
 GtkWidget *
-gedit_animated_overlay_new (GtkWidget *main_widget,
-                            GtkWidget *relative_widget)
+gedit_animated_overlay_new (void)
 {
-	return g_object_new (GEDIT_TYPE_ANIMATED_OVERLAY,
-	                     "main-widget", main_widget,
-	                     "relative-widget", relative_widget,
-	                     NULL);
+	return g_object_new (GEDIT_TYPE_ANIMATED_OVERLAY, NULL);
 }
 
 void
-gedit_animated_overlay_add (GeditAnimatedOverlay     *overlay,
-                            GeditAnimatable          *animatable)
+gedit_animated_overlay_add_animated_overlay (GeditAnimatedOverlay     *overlay,
+                                             GeditAnimatable          *animatable)
 {
-	GeditOverlayChildPosition position;
-	guint offset, duration;
-
-	g_return_if_fail (GEDIT_IS_OVERLAY (overlay));
+	g_return_if_fail (GEDIT_IS_ANIMATED_OVERLAY (overlay));
 	g_return_if_fail (GEDIT_IS_ANIMATABLE (animatable));
 
-	g_object_get (G_OBJECT (animatable),
-	              "position", &position,
-	              "offset", &offset,
-	              "duration", &duration,
-	              NULL);
-
-	/* FIXME: check that the widget is not already added */
-
-	gedit_overlay_add (GEDIT_OVERLAY (overlay),
-	                   GTK_WIDGET (animatable),
-	                   position, offset);
+	gtk_overlay_add_overlay (GTK_OVERLAY (overlay),
+	                         GTK_WIDGET (animatable));
 
 	g_signal_connect (animatable,
 	                  "notify::animation-state",
diff --git a/gedit/gedit-animated-overlay.h b/gedit/gedit-animated-overlay.h
index f181108..748b074 100644
--- a/gedit/gedit-animated-overlay.h
+++ b/gedit/gedit-animated-overlay.h
@@ -22,8 +22,8 @@
 #ifndef __GEDIT_ANIMATED_OVERLAY_H__
 #define __GEDIT_ANIMATED_OVERLAY_H__
 
+#include <gtk/gtk.h>
 #include "gedit-animatable.h"
-#include "gedit-overlay.h"
 #include "theatrics/gedit-theatrics-choreographer.h"
 
 G_BEGIN_DECLS
@@ -42,23 +42,22 @@ typedef struct _GeditAnimatedOverlayPrivate	GeditAnimatedOverlayPrivate;
 
 struct _GeditAnimatedOverlay
 {
-	GeditOverlay parent;
+	GtkOverlay parent;
 	
 	GeditAnimatedOverlayPrivate *priv;
 };
 
 struct _GeditAnimatedOverlayClass
 {
-	GeditOverlayClass parent_class;
+	GtkOverlayClass parent_class;
 };
 
 GType gedit_animated_overlay_get_type (void) G_GNUC_CONST;
 
-GtkWidget *gedit_animated_overlay_new (GtkWidget *main_widget,
-                                       GtkWidget *relative_widget);
+GtkWidget *gedit_animated_overlay_new (void);
 
-void gedit_animated_overlay_add (GeditAnimatedOverlay *overlay,
-                                 GeditAnimatable      *animatable);
+void gedit_animated_overlay_add_animated_overlay (GeditAnimatedOverlay *overlay,
+                                                  GeditAnimatable      *animatable);
 
 G_END_DECLS
 
diff --git a/gedit/gedit-floating-slider.c b/gedit/gedit-floating-slider.c
index 34d329e..974b0f4 100644
--- a/gedit/gedit-floating-slider.c
+++ b/gedit/gedit-floating-slider.c
@@ -49,14 +49,12 @@ enum
 	PROP_ORIENTATION
 };
 
-G_DEFINE_TYPE_EXTENDED (GeditFloatingSlider,
-			gedit_floating_slider,
-			GEDIT_TYPE_OVERLAY_CHILD,
+G_DEFINE_TYPE_EXTENDED (GeditFloatingSlider, gedit_floating_slider, GTK_TYPE_BIN,
 			0,
 			G_IMPLEMENT_INTERFACE (GEDIT_TYPE_ANIMATABLE,
 			                       NULL)
 			G_IMPLEMENT_INTERFACE (GTK_TYPE_ORIENTABLE,
-					       NULL))
+			                       NULL))
 
 static void
 gedit_floating_slider_finalize (GObject *object)
@@ -158,8 +156,6 @@ gedit_floating_slider_get_preferred_width (GtkWidget *widget,
 	GtkWidget *child;
 	gint width;
 
-	GTK_WIDGET_CLASS (gedit_floating_slider_parent_class)->get_preferred_width (widget, minimum, natural);
-
 	child = gtk_bin_get_child (GTK_BIN (widget));
 
 	if (child != NULL)
@@ -193,8 +189,6 @@ gedit_floating_slider_get_preferred_height (GtkWidget *widget,
 	GtkWidget *child;
 	gint height;
 
-	GTK_WIDGET_CLASS (gedit_floating_slider_parent_class)->get_preferred_height (widget, minimum, natural);
-
 	child = gtk_bin_get_child (GTK_BIN (widget));
 
 	if (child != NULL)
@@ -316,11 +310,9 @@ gedit_floating_slider_init (GeditFloatingSlider *slider)
 }
 
 GtkWidget *
-gedit_floating_slider_new (GtkWidget *widget)
+gedit_floating_slider_new (void)
 {
-	return g_object_new (GEDIT_TYPE_FLOATING_SLIDER,
-	                     "widget", widget,
-	                     NULL);
+	return g_object_new (GEDIT_TYPE_FLOATING_SLIDER, NULL);
 }
 
 /* ex:set ts=8 noet: */
diff --git a/gedit/gedit-floating-slider.h b/gedit/gedit-floating-slider.h
index b5e635d..7576439 100644
--- a/gedit/gedit-floating-slider.h
+++ b/gedit/gedit-floating-slider.h
@@ -28,7 +28,6 @@
 #include <glib-object.h>
 #include <gtk/gtk.h>
 #include "theatrics/gedit-theatrics-choreographer.h"
-#include "gedit-overlay-child.h"
 
 G_BEGIN_DECLS
 
@@ -46,19 +45,19 @@ typedef struct _GeditFloatingSliderPrivate	GeditFloatingSliderPrivate;
 
 struct _GeditFloatingSlider
 {
-	GeditOverlayChild parent;
-	
+	GtkBin parent;
+
 	GeditFloatingSliderPrivate *priv;
 };
 
 struct _GeditFloatingSliderClass
 {
-	GeditOverlayChildClass parent_class;
+	GtkBinClass parent_class;
 };
 
 GType		 gedit_floating_slider_get_type	(void) G_GNUC_CONST;
 
-GtkWidget	*gedit_floating_slider_new	(GtkWidget *widget);
+GtkWidget	*gedit_floating_slider_new	(void);
 
 G_END_DECLS
 
diff --git a/gedit/gedit-view-frame.c b/gedit/gedit-view-frame.c
index a69bb98..578983d 100644
--- a/gedit/gedit-view-frame.c
+++ b/gedit/gedit-view-frame.c
@@ -39,7 +39,7 @@
 #define GEDIT_VIEW_FRAME_SEARCH_DIALOG_TIMEOUT (30*1000) /* 30 seconds */
 
 #define MIN_SEARCH_COMPLETION_KEY_LEN	3
-#define SEARCH_POPUP_OFFSET 12
+#define SEARCH_POPUP_MARGIN 12
 
 #define GEDIT_VIEW_FRAME_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE((object), GEDIT_TYPE_VIEW_FRAME, GeditViewFramePrivate))
 
@@ -1418,7 +1418,6 @@ gedit_view_frame_init (GeditViewFrame *frame)
 {
 	GeditDocument *doc;
 	GtkWidget *sw;
-	GeditOverlayChildPosition position;
 
 	frame->priv = GEDIT_VIEW_FRAME_GET_PRIVATE (frame);
 
@@ -1450,33 +1449,28 @@ gedit_view_frame_init (GeditViewFrame *frame)
 
 	gtk_widget_show (sw);
 
-	frame->priv->overlay = gedit_animated_overlay_new (sw, frame->priv->view);
+	frame->priv->overlay = gedit_animated_overlay_new ();
+	gtk_container_add (GTK_CONTAINER (frame->priv->overlay), sw);
 	gtk_widget_show (frame->priv->overlay);
 
 	gtk_box_pack_start (GTK_BOX (frame), frame->priv->overlay, TRUE, TRUE, 0);
 
 	/* Add slider */
-	if (gtk_widget_get_direction (GTK_WIDGET (frame)) == GTK_TEXT_DIR_RTL)
-	{
-		position = GEDIT_OVERLAY_CHILD_POSITION_NORTH_WEST;
-	}
-	else
-	{
-		position = GEDIT_OVERLAY_CHILD_POSITION_NORTH_EAST;
-	}
-
 	frame->priv->search_widget = create_search_widget (frame);
-	frame->priv->slider = gedit_floating_slider_new (frame->priv->search_widget);
+	frame->priv->slider = gedit_floating_slider_new ();
+	gtk_container_add (GTK_CONTAINER (frame->priv->slider),
+	                   frame->priv->search_widget);
+	gtk_widget_set_halign (frame->priv->slider, GTK_ALIGN_END);
+	gtk_widget_set_valign (frame->priv->slider, GTK_ALIGN_START);
+	gtk_widget_set_margin_right (frame->priv->slider, SEARCH_POPUP_MARGIN);
 	g_object_set (G_OBJECT (frame->priv->slider),
-	              "position", position,
-	              "offset", SEARCH_POPUP_OFFSET,
 	              "easing", GEDIT_THEATRICS_CHOREOGRAPHER_EASING_EXPONENTIAL_IN_OUT,
 	              "blocking", GEDIT_THEATRICS_CHOREOGRAPHER_BLOCKING_DOWNSTAGE,
 	              "orientation", GTK_ORIENTATION_VERTICAL,
 	              NULL);
 
-	gedit_animated_overlay_add (GEDIT_ANIMATED_OVERLAY (frame->priv->overlay),
-	                            GEDIT_ANIMATABLE (frame->priv->slider));
+	gedit_animated_overlay_add_animated_overlay (GEDIT_ANIMATED_OVERLAY (frame->priv->overlay),
+	                                             GEDIT_ANIMATABLE (frame->priv->slider));
 }
 
 GeditViewFrame *



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]