[gedit] Add GeditAnimatedOverlay.
- From: Ignacio Casal Quinteiro <icq src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gedit] Add GeditAnimatedOverlay.
- Date: Tue, 15 Feb 2011 17:01:32 +0000 (UTC)
commit e5ca5e894ba3ea21a60d7b19ce33ed1a0ef246a5
Author: Ignacio Casal Quinteiro <icq gnome org>
Date: Tue Feb 15 14:58:38 2011 +0100
Add GeditAnimatedOverlay.
This is a class that inherits from GeditOverlay and provide slide/in/out
animation for the widget added on the container.
gedit/Makefile.am | 2 +
gedit/gedit-animated-overlay.c | 214 +++++++++++++++++++++
gedit/gedit-animated-overlay.h | 70 +++++++
gedit/gedit-view-frame.c | 52 +++---
gedit/theatrics/gedit-theatrics-animated-widget.c | 77 ++------
gedit/theatrics/gedit-theatrics-animated-widget.h | 5 +-
tests/test-overlay.c | 36 ++--
7 files changed, 352 insertions(+), 104 deletions(-)
---
diff --git a/gedit/Makefile.am b/gedit/Makefile.am
index e189b19..7bc75c6 100644
--- a/gedit/Makefile.am
+++ b/gedit/Makefile.am
@@ -101,6 +101,7 @@ BUILT_SOURCES = \
gedit-marshal.h
NOINST_H_FILES = \
+ gedit-animated-overlay.h \
gedit-close-button.h \
gedit-command-line.h \
gedit-dbus.h \
@@ -168,6 +169,7 @@ libgedit_private_la_SOURCES = \
gedit-window-activatable.c
libgedit_c_files = \
+ gedit-animated-overlay.c \
gedit-app.c \
gedit-close-button.c \
gedit-command-line.c \
diff --git a/gedit/gedit-animated-overlay.c b/gedit/gedit-animated-overlay.c
new file mode 100644
index 0000000..d88e73f
--- /dev/null
+++ b/gedit/gedit-animated-overlay.c
@@ -0,0 +1,214 @@
+/*
+ * gedit-animated-overlay.c
+ * This file is part of gedit
+ *
+ * Copyright (C) 2011 - Ignacio Casal Quinteiro
+ *
+ * Based on Mike Krüger <mkrueger novell com> work.
+ *
+ * gedit is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * gedit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "gedit-animated-overlay.h"
+#include "theatrics/gedit-theatrics-stage.h"
+#include "theatrics/gedit-theatrics-animated-widget.h"
+
+struct _GeditAnimatedOverlayPrivate
+{
+ GeditTheatricsStage *stage;
+};
+
+G_DEFINE_TYPE (GeditAnimatedOverlay, gedit_animated_overlay, GEDIT_TYPE_OVERLAY)
+
+static void
+gedit_animated_overlay_dispose (GObject *object)
+{
+ GeditAnimatedOverlayPrivate *priv = GEDIT_ANIMATED_OVERLAY (object)->priv;
+
+ if (priv->stage != NULL)
+ {
+ g_object_unref (priv->stage);
+ priv->stage = NULL;
+ }
+
+ G_OBJECT_CLASS (gedit_animated_overlay_parent_class)->dispose (object);
+}
+
+static void
+gedit_animated_overlay_class_init (GeditAnimatedOverlayClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->dispose = gedit_animated_overlay_dispose;
+
+ g_type_class_add_private (object_class, sizeof (GeditAnimatedOverlayPrivate));
+}
+
+static void
+on_actor_step (GeditTheatricsStage *stage,
+ GeditTheatricsActor *actor,
+ GeditAnimatedOverlay *overlay)
+{
+ GeditTheatricsAnimationState animation_state;
+ GeditTheatricsAnimatedWidget *anim_widget;
+
+ anim_widget = GEDIT_THEATRICS_ANIMATED_WIDGET (gedit_theatrics_actor_get_target (actor));
+ animation_state = gedit_theatrics_animated_widget_get_animation_state (anim_widget);
+
+ switch (animation_state)
+ {
+ case GEDIT_THEATRICS_ANIMATION_STATE_COMING:
+ gtk_widget_queue_draw (GTK_WIDGET (anim_widget));
+ gedit_theatrics_animated_widget_set_percent (anim_widget,
+ gedit_theatrics_actor_get_percent (actor));
+ if (gedit_theatrics_actor_get_expired (actor))
+ {
+ gedit_theatrics_animated_widget_set_animation_state (anim_widget,
+ GEDIT_THEATRICS_ANIMATION_STATE_IDLE);
+ }
+ break;
+ case GEDIT_THEATRICS_ANIMATION_STATE_INTENDING_TO_GO:
+ gedit_theatrics_animated_widget_set_animation_state (anim_widget,
+ GEDIT_THEATRICS_ANIMATION_STATE_GOING);
+ gedit_theatrics_animated_widget_set_bias (anim_widget,
+ gedit_theatrics_actor_get_percent (actor));
+ gedit_theatrics_actor_reset (actor, gedit_theatrics_animated_widget_get_duration (anim_widget) *
+ gedit_theatrics_actor_get_percent (actor));
+ break;
+ case GEDIT_THEATRICS_ANIMATION_STATE_GOING:
+ if (gedit_theatrics_actor_get_expired (actor))
+ {
+ gtk_widget_destroy (GTK_WIDGET (anim_widget));
+ return;
+ }
+ gtk_widget_queue_draw (GTK_WIDGET (anim_widget));
+ gedit_theatrics_animated_widget_set_percent (anim_widget, 1.0 - gedit_theatrics_actor_get_percent (actor));
+ break;
+ default:
+ break;
+ }
+}
+
+static void
+gedit_animated_overlay_init (GeditAnimatedOverlay *overlay)
+{
+ overlay->priv = G_TYPE_INSTANCE_GET_PRIVATE (overlay,
+ GEDIT_TYPE_ANIMATED_OVERLAY,
+ GeditAnimatedOverlayPrivate);
+
+ overlay->priv->stage = gedit_theatrics_stage_new ();
+
+ g_signal_connect (overlay->priv->stage,
+ "actor-step",
+ G_CALLBACK (on_actor_step),
+ overlay);
+}
+
+GtkWidget *
+gedit_animated_overlay_new (GtkWidget *main_widget)
+{
+ return g_object_new (GEDIT_TYPE_ANIMATED_OVERLAY,
+ "main-widget", main_widget,
+ NULL);
+}
+
+static GeditTheatricsAnimatedWidget *
+get_animated_widget (GeditAnimatedOverlay *overlay,
+ GtkWidget *widget)
+{
+ GeditTheatricsAnimatedWidget *anim_widget = NULL;
+ GtkWidget *main_widget;
+ GList *children, *l;
+
+ children = gtk_container_get_children (GTK_CONTAINER (overlay));
+ g_object_get (G_OBJECT (overlay), "main-widget", &main_widget, NULL);
+
+ for (l = children; l != NULL; l = g_list_next (l))
+ {
+ GtkWidget *child = GTK_WIDGET (l->data);
+
+ /* skip the main widget as it is not a OverlayChild */
+ if (child == main_widget)
+ continue;
+
+ if (child == widget)
+ {
+ anim_widget = GEDIT_THEATRICS_ANIMATED_WIDGET (child);
+ break;
+ }
+ else
+ {
+ GtkWidget *in_widget;
+
+ /* let's try also with the internal widget */
+ g_object_get (child, "widget", &in_widget, NULL);
+ g_assert (in_widget != NULL);
+
+ if (in_widget == widget)
+ {
+ anim_widget = GEDIT_THEATRICS_ANIMATED_WIDGET (child);
+ break;
+ }
+ }
+ }
+
+ g_list_free (children);
+
+ return anim_widget;
+}
+
+void
+gedit_animated_overlay_slide (GeditAnimatedOverlay *overlay,
+ GtkWidget *widget,
+ GeditOverlayChildPosition position,
+ guint offset,
+ guint duration,
+ GeditTheatricsChoreographerEasing easing,
+ GeditTheatricsChoreographerBlocking blocking,
+ GtkOrientation orientation,
+ gboolean in)
+{
+ GeditTheatricsAnimatedWidget *anim_widget;
+
+ anim_widget = get_animated_widget (overlay, widget);
+
+ if (anim_widget == NULL)
+ {
+ anim_widget = gedit_theatrics_animated_widget_new (widget, duration,
+ easing,
+ blocking,
+ orientation);
+ gtk_widget_show (GTK_WIDGET (anim_widget));
+
+ gedit_overlay_add (GEDIT_OVERLAY (overlay),
+ GTK_WIDGET (anim_widget),
+ position, offset);
+ }
+ else
+ {
+ /* we are only interested in the easing and the blocking */
+ gedit_theatrics_animated_widget_set_easing (anim_widget, easing);
+ gedit_theatrics_animated_widget_set_blocking (anim_widget, blocking);
+ }
+
+ if (!in)
+ {
+ gedit_theatrics_animated_widget_set_animation_state (anim_widget, GEDIT_THEATRICS_ANIMATION_STATE_GOING);
+ }
+
+ gedit_theatrics_stage_add_with_duration (overlay->priv->stage,
+ G_OBJECT (anim_widget),
+ duration);
+}
diff --git a/gedit/gedit-animated-overlay.h b/gedit/gedit-animated-overlay.h
new file mode 100644
index 0000000..f1d8700
--- /dev/null
+++ b/gedit/gedit-animated-overlay.h
@@ -0,0 +1,70 @@
+/*
+ * gedit-animated-overlay.h
+ * This file is part of gedit
+ *
+ * Copyright (C) 2011 - Ignacio Casal Quinteiro
+ *
+ * gedit is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * gedit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef __GEDIT_ANIMATED_OVERLAY_H__
+#define __GEDIT_ANIMATED_OVERLAY_H__
+
+#include "gedit-overlay.h"
+#include "theatrics/gedit-theatrics-choreographer.h"
+
+G_BEGIN_DECLS
+
+#define GEDIT_TYPE_ANIMATED_OVERLAY (gedit_animated_overlay_get_type ())
+#define GEDIT_ANIMATED_OVERLAY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEDIT_TYPE_ANIMATED_OVERLAY, GeditAnimatedOverlay))
+#define GEDIT_ANIMATED_OVERLAY_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEDIT_TYPE_ANIMATED_OVERLAY, GeditAnimatedOverlay const))
+#define GEDIT_ANIMATED_OVERLAY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEDIT_TYPE_ANIMATED_OVERLAY, GeditAnimatedOverlayClass))
+#define GEDIT_IS_ANIMATED_OVERLAY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEDIT_TYPE_ANIMATED_OVERLAY))
+#define GEDIT_IS_ANIMATED_OVERLAY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEDIT_TYPE_ANIMATED_OVERLAY))
+#define GEDIT_ANIMATED_OVERLAY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEDIT_TYPE_ANIMATED_OVERLAY, GeditAnimatedOverlayClass))
+
+typedef struct _GeditAnimatedOverlay GeditAnimatedOverlay;
+typedef struct _GeditAnimatedOverlayClass GeditAnimatedOverlayClass;
+typedef struct _GeditAnimatedOverlayPrivate GeditAnimatedOverlayPrivate;
+
+struct _GeditAnimatedOverlay
+{
+ GeditOverlay parent;
+
+ GeditAnimatedOverlayPrivate *priv;
+};
+
+struct _GeditAnimatedOverlayClass
+{
+ GeditOverlayClass parent_class;
+};
+
+GType gedit_animated_overlay_get_type (void) G_GNUC_CONST;
+
+GtkWidget *gedit_animated_overlay_new (GtkWidget *main_widget);
+
+void gedit_animated_overlay_slide (GeditAnimatedOverlay *overlay,
+ GtkWidget *widget,
+ GeditOverlayChildPosition position,
+ guint offset,
+ guint duration,
+ GeditTheatricsChoreographerEasing easing,
+ GeditTheatricsChoreographerBlocking blocking,
+ GtkOrientation orientation,
+ gboolean in);
+
+G_END_DECLS
+
+#endif /* __GEDIT_ANIMATED_OVERLAY_H__ */
diff --git a/gedit/gedit-view-frame.c b/gedit/gedit-view-frame.c
index 39a209a..c3f4ea1 100644
--- a/gedit/gedit-view-frame.c
+++ b/gedit/gedit-view-frame.c
@@ -24,7 +24,7 @@
#include "gedit-marshal.h"
#include "gedit-debug.h"
#include "gedit-utils.h"
-#include "gedit-overlay.h"
+#include "gedit-animated-overlay.h"
#include "gedit-rounded-frame.h"
#include <gdk/gdkkeysyms.h>
@@ -148,7 +148,7 @@ hide_search_widget (GeditViewFrame *frame,
gboolean cancel)
{
GtkTextBuffer *buffer;
- GdkGravity gravity;
+ GeditOverlayChildPosition position;
if (frame->priv->disable_popdown)
{
@@ -177,22 +177,22 @@ hide_search_widget (GeditViewFrame *frame,
if (gtk_widget_get_direction (frame->priv->search_entry) == GTK_TEXT_DIR_RTL)
{
- gravity = GDK_GRAVITY_NORTH_WEST;
+ position = GEDIT_OVERLAY_CHILD_POSITION_NORTH_WEST;
}
else
{
- gravity = GDK_GRAVITY_NORTH_EAST;
+ position = GEDIT_OVERLAY_CHILD_POSITION_NORTH_EAST;
}
- gedit_overlay_slide (GEDIT_OVERLAY (frame->priv->overlay),
- frame->priv->search_widget,
- 300,
- GEDIT_THEATRICS_CHOREOGRAPHER_EASING_EXPONENTIAL_IN_OUT,
- GEDIT_THEATRICS_CHOREOGRAPHER_BLOCKING_UPSTAGE,
- GTK_ORIENTATION_VERTICAL,
- gravity,
- SEARCH_POPUP_OFFSET,
- FALSE);
+ gedit_animated_overlay_slide (GEDIT_ANIMATED_OVERLAY (frame->priv->overlay),
+ frame->priv->search_widget,
+ position,
+ SEARCH_POPUP_OFFSET,
+ 300,
+ GEDIT_THEATRICS_CHOREOGRAPHER_EASING_EXPONENTIAL_IN_OUT,
+ GEDIT_THEATRICS_CHOREOGRAPHER_BLOCKING_UPSTAGE,
+ GTK_ORIENTATION_VERTICAL,
+ FALSE);
frame->priv->search_widget = NULL;
if (cancel)
@@ -1275,7 +1275,7 @@ start_interactive_search_real (GeditViewFrame *frame)
GtkTextBuffer *buffer;
GtkTextMark *mark;
GtkTextIter iter;
- GdkGravity gravity;
+ GeditOverlayChildPosition position;
/* FIXME: it enters here twice, why? */
@@ -1313,22 +1313,22 @@ start_interactive_search_real (GeditViewFrame *frame)
if (gtk_widget_get_direction (frame->priv->search_entry) == GTK_TEXT_DIR_RTL)
{
- gravity = GDK_GRAVITY_NORTH_WEST;
+ position = GEDIT_OVERLAY_CHILD_POSITION_NORTH_WEST;
}
else
{
- gravity = GDK_GRAVITY_NORTH_EAST;
+ position = GEDIT_OVERLAY_CHILD_POSITION_NORTH_EAST;
}
- gedit_overlay_slide (GEDIT_OVERLAY (frame->priv->overlay),
- frame->priv->search_widget,
- 300,
- GEDIT_THEATRICS_CHOREOGRAPHER_EASING_EXPONENTIAL_IN_OUT,
- GEDIT_THEATRICS_CHOREOGRAPHER_BLOCKING_DOWNSTAGE,
- GTK_ORIENTATION_VERTICAL,
- gravity,
- SEARCH_POPUP_OFFSET,
- TRUE);
+ gedit_animated_overlay_slide (GEDIT_ANIMATED_OVERLAY (frame->priv->overlay),
+ frame->priv->search_widget,
+ position,
+ SEARCH_POPUP_OFFSET,
+ 300,
+ GEDIT_THEATRICS_CHOREOGRAPHER_EASING_EXPONENTIAL_IN_OUT,
+ GEDIT_THEATRICS_CHOREOGRAPHER_BLOCKING_DOWNSTAGE,
+ GTK_ORIENTATION_VERTICAL,
+ TRUE);
init_search_entry (frame);
@@ -1433,7 +1433,7 @@ gedit_view_frame_init (GeditViewFrame *frame)
G_CALLBACK (on_start_interactive_goto_line),
frame);
- frame->priv->overlay = gedit_overlay_new (frame->priv->view);
+ frame->priv->overlay = gedit_animated_overlay_new (frame->priv->view);
gtk_widget_show (frame->priv->overlay);
/* Create the scrolled window */
diff --git a/gedit/theatrics/gedit-theatrics-animated-widget.c b/gedit/theatrics/gedit-theatrics-animated-widget.c
index f4382b5..d4ea3ee 100644
--- a/gedit/theatrics/gedit-theatrics-animated-widget.c
+++ b/gedit/theatrics/gedit-theatrics-animated-widget.c
@@ -25,12 +25,10 @@
#include "gedit-theatrics-animated-widget.h"
#include "gedit-theatrics-enum-types.h"
-
#define GEDIT_THEATRICS_ANIMATED_WIDGET_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE((object), GEDIT_TYPE_THEATRICS_ANIMATED_WIDGET, GeditTheatricsAnimatedWidgetPrivate))
struct _GeditTheatricsAnimatedWidgetPrivate
{
- GtkWidget *widget;
GeditTheatricsChoreographerEasing easing;
GeditTheatricsChoreographerBlocking blocking;
GeditTheatricsAnimationState animation_state;
@@ -44,7 +42,6 @@ struct _GeditTheatricsAnimatedWidgetPrivate
enum
{
PROP_0,
- PROP_WIDGET,
PROP_EASING,
PROP_BLOCKING,
PROP_ANIMATION_STATE,
@@ -55,7 +52,7 @@ enum
G_DEFINE_TYPE_EXTENDED (GeditTheatricsAnimatedWidget,
gedit_theatrics_animated_widget,
- GTK_TYPE_BIN,
+ GEDIT_TYPE_OVERLAY_CHILD,
0,
G_IMPLEMENT_INTERFACE (GTK_TYPE_ORIENTABLE,
NULL))
@@ -76,9 +73,6 @@ gedit_theatrics_animated_widget_get_property (GObject *object,
switch (prop_id)
{
- case PROP_WIDGET:
- g_value_set_object (value, aw->priv->widget);
- break;
case PROP_EASING:
g_value_set_enum (value, aw->priv->easing);
break;
@@ -113,12 +107,6 @@ gedit_theatrics_animated_widget_set_property (GObject *object,
switch (prop_id)
{
- case PROP_WIDGET:
- {
- gtk_container_add (GTK_CONTAINER (aw),
- g_value_get_object (value));
- break;
- }
case PROP_EASING:
gedit_theatrics_animated_widget_set_easing (aw,
g_value_get_enum (value));
@@ -178,14 +166,16 @@ gedit_theatrics_animated_widget_get_preferred_width (GtkWidget *widget,
gint *natural)
{
GeditTheatricsAnimatedWidget *aw = GEDIT_THEATRICS_ANIMATED_WIDGET (widget);
+ GtkWidget *child;
gint width;
- if (aw->priv->widget != NULL)
+ child = gtk_bin_get_child (GTK_BIN (widget));
+
+ if (child != NULL)
{
gint child_min, child_nat;
- gtk_widget_get_preferred_width (aw->priv->widget,
- &child_min, &child_nat);
+ gtk_widget_get_preferred_width (child, &child_min, &child_nat);
aw->priv->widget_alloc.width = child_min;
}
@@ -209,14 +199,16 @@ gedit_theatrics_animated_widget_get_preferred_height (GtkWidget *widget,
gint *natural)
{
GeditTheatricsAnimatedWidget *aw = GEDIT_THEATRICS_ANIMATED_WIDGET (widget);
+ GtkWidget *child;
gint height;
- if (aw->priv->widget != NULL)
+ child = gtk_bin_get_child (GTK_BIN (widget));
+
+ if (child != NULL)
{
gint child_min, child_nat;
- gtk_widget_get_preferred_height (aw->priv->widget,
- &child_min, &child_nat);
+ gtk_widget_get_preferred_height (child, &child_min, &child_nat);
aw->priv->widget_alloc.height = child_min;
}
@@ -239,10 +231,13 @@ gedit_theatrics_animated_widget_size_allocate (GtkWidget *widget,
GtkAllocation *allocation)
{
GeditTheatricsAnimatedWidget *aw = GEDIT_THEATRICS_ANIMATED_WIDGET (widget);
+ GtkWidget *child;
- GTK_WIDGET_CLASS (gedit_theatrics_animated_widget_parent_class)->size_allocate (widget, allocation);
+ //GTK_WIDGET_CLASS (gedit_theatrics_animated_widget_parent_class)->size_allocate (widget, allocation);
- if (aw->priv->widget != NULL)
+ child = gtk_bin_get_child (GTK_BIN (widget));
+
+ if (child != NULL)
{
if (aw->priv->orientation == GTK_ORIENTATION_HORIZONTAL)
{
@@ -267,40 +262,16 @@ gedit_theatrics_animated_widget_size_allocate (GtkWidget *widget,
if (aw->priv->widget_alloc.height > 0 && aw->priv->widget_alloc.width > 0)
{
- gtk_widget_size_allocate (aw->priv->widget,
- &aw->priv->widget_alloc);
+ gtk_widget_size_allocate (child, &aw->priv->widget_alloc);
}
}
}
static void
-gedit_theatrics_animated_widget_add (GtkContainer *container,
- GtkWidget *widget)
-{
- GeditTheatricsAnimatedWidget *aw = GEDIT_THEATRICS_ANIMATED_WIDGET (container);
-
- aw->priv->widget = widget;
-
- GTK_CONTAINER_CLASS (gedit_theatrics_animated_widget_parent_class)->add (container, widget);
-}
-
-static void
-gedit_theatrics_animated_widget_remove (GtkContainer *container,
- GtkWidget *widget)
-{
- GeditTheatricsAnimatedWidget *aw = GEDIT_THEATRICS_ANIMATED_WIDGET (container);
-
- aw->priv->widget = NULL;
-
- GTK_CONTAINER_CLASS (gedit_theatrics_animated_widget_parent_class)->remove (container, widget);
-}
-
-static void
gedit_theatrics_animated_widget_class_init (GeditTheatricsAnimatedWidgetClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
- GtkContainerClass *container_class = GTK_CONTAINER_CLASS (klass);
object_class->finalize = gedit_theatrics_animated_widget_finalize;
object_class->get_property = gedit_theatrics_animated_widget_get_property;
@@ -311,18 +282,6 @@ gedit_theatrics_animated_widget_class_init (GeditTheatricsAnimatedWidgetClass *k
widget_class->get_preferred_height = gedit_theatrics_animated_widget_get_preferred_height;
widget_class->size_allocate = gedit_theatrics_animated_widget_size_allocate;
- container_class->add = gedit_theatrics_animated_widget_add;
- container_class->remove = gedit_theatrics_animated_widget_remove;
-
- g_object_class_install_property (object_class, PROP_WIDGET,
- g_param_spec_object ("widget",
- "Widget",
- "The Widget",
- GTK_TYPE_WIDGET,
- G_PARAM_READWRITE |
- G_PARAM_CONSTRUCT_ONLY |
- G_PARAM_STATIC_STRINGS));
-
g_object_class_install_property (object_class, PROP_EASING,
g_param_spec_enum ("easing",
"Easing",
@@ -387,8 +346,6 @@ gedit_theatrics_animated_widget_init (GeditTheatricsAnimatedWidget *aw)
{
aw->priv = GEDIT_THEATRICS_ANIMATED_WIDGET_GET_PRIVATE (aw);
- gtk_widget_set_has_window (GTK_WIDGET (aw), TRUE);
-
aw->priv->orientation = GTK_ORIENTATION_HORIZONTAL;
aw->priv->bias = 1.0;
}
diff --git a/gedit/theatrics/gedit-theatrics-animated-widget.h b/gedit/theatrics/gedit-theatrics-animated-widget.h
index 2f5b00c..ec1043c 100644
--- a/gedit/theatrics/gedit-theatrics-animated-widget.h
+++ b/gedit/theatrics/gedit-theatrics-animated-widget.h
@@ -28,6 +28,7 @@
#include <glib-object.h>
#include <gtk/gtk.h>
#include "gedit-theatrics-choreographer.h"
+#include "gedit-overlay-child.h"
G_BEGIN_DECLS
@@ -45,14 +46,14 @@ typedef struct _GeditTheatricsAnimatedWidgetPrivate GeditTheatricsAnimatedWidget
struct _GeditTheatricsAnimatedWidget
{
- GtkBin parent;
+ GeditOverlayChild parent;
GeditTheatricsAnimatedWidgetPrivate *priv;
};
struct _GeditTheatricsAnimatedWidgetClass
{
- GtkBinClass parent_class;
+ GeditOverlayChildClass parent_class;
};
GType gedit_theatrics_animated_widget_get_type (void) G_GNUC_CONST;
diff --git a/tests/test-overlay.c b/tests/test-overlay.c
index 811d4b6..2d3c943 100644
--- a/tests/test-overlay.c
+++ b/tests/test-overlay.c
@@ -1,6 +1,6 @@
#include <gtk/gtk.h>
#include <glib.h>
-#include "gedit-overlay.h"
+#include "gedit-animated-overlay.h"
#include "gedit-rounded-frame.h"
static GtkWidget *overlay;
@@ -9,13 +9,15 @@ static void
on_button_clicked (GtkWidget *button,
GtkWidget *frame)
{
- gedit_overlay_slide (GEDIT_OVERLAY (overlay),
- frame,
- 1000,
- GEDIT_THEATRICS_CHOREOGRAPHER_EASING_EXPONENTIAL_IN_OUT,
- GEDIT_THEATRICS_CHOREOGRAPHER_BLOCKING_DOWNSTAGE,
- GTK_ORIENTATION_VERTICAL,
- GDK_GRAVITY_STATIC, 0, FALSE);
+ gedit_animated_overlay_slide (GEDIT_ANIMATED_OVERLAY (overlay),
+ frame,
+ GEDIT_OVERLAY_CHILD_POSITION_STATIC,
+ 0,
+ 1000,
+ GEDIT_THEATRICS_CHOREOGRAPHER_EASING_EXPONENTIAL_IN_OUT,
+ GEDIT_THEATRICS_CHOREOGRAPHER_BLOCKING_DOWNSTAGE,
+ GTK_ORIENTATION_VERTICAL,
+ FALSE);
}
gint
@@ -36,7 +38,7 @@ main ()
gtk_container_add (GTK_CONTAINER (window), vbox);
textview = gtk_text_view_new ();
- overlay = gedit_overlay_new (textview);
+ overlay = gedit_animated_overlay_new (textview);
gtk_box_pack_start (GTK_BOX (vbox), overlay, TRUE, TRUE, 0);
@@ -47,13 +49,15 @@ main ()
gtk_container_add (GTK_CONTAINER (frame), entry);
- gedit_overlay_slide (GEDIT_OVERLAY (overlay),
- frame,
- 1000,
- GEDIT_THEATRICS_CHOREOGRAPHER_EASING_EXPONENTIAL_IN_OUT,
- GEDIT_THEATRICS_CHOREOGRAPHER_BLOCKING_DOWNSTAGE,
- GTK_ORIENTATION_VERTICAL,
- GDK_GRAVITY_STATIC, 0, TRUE);
+ gedit_animated_overlay_slide (GEDIT_ANIMATED_OVERLAY (overlay),
+ frame,
+ GEDIT_OVERLAY_CHILD_POSITION_STATIC,
+ 0,
+ 1000,
+ GEDIT_THEATRICS_CHOREOGRAPHER_EASING_EXPONENTIAL_IN_OUT,
+ GEDIT_THEATRICS_CHOREOGRAPHER_BLOCKING_DOWNSTAGE,
+ GTK_ORIENTATION_VERTICAL,
+ TRUE);
button = gtk_button_new_with_label ("Hide");
gtk_box_pack_end (GTK_BOX (vbox), button, FALSE, FALSE, 0);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]