[gnome-builder] editor-frame: use GtkRevealer for positioning of minimap



commit b533a29e742690669a2480320067f26c5880e783
Author: Christian Hergert <christian hergert me>
Date:   Sun May 17 14:35:36 2015 -0700

    editor-frame: use GtkRevealer for positioning of minimap
    
    This allows ensures that the map does not obscure the text editor content.
    Less code too, how about that.

 data/ui/gb-editor-frame.ui           |   24 ++++++-----
 src/editor/gb-editor-frame-private.h |    4 +-
 src/editor/gb-editor-frame.c         |   76 +---------------------------------
 3 files changed, 16 insertions(+), 88 deletions(-)
---
diff --git a/data/ui/gb-editor-frame.ui b/data/ui/gb-editor-frame.ui
index 00f1912..75fe2e4 100644
--- a/data/ui/gb-editor-frame.ui
+++ b/data/ui/gb-editor-frame.ui
@@ -46,12 +46,6 @@
                 <property name="expand">true</property>
                 <property name="visible">true</property>
                 <child type="overlay">
-                  <object class="GbEditorMapBin" id="source_map_container">
-                    <property name="floating-bar">floating_bar</property>
-                    <property name="visible">true</property>
-                  </object>
-                </child>
-                <child type="overlay">
                   <object class="GtkRevealer" id="search_revealer">
                     <property name="halign">end</property>
                     <property name="valign">start</property>
@@ -152,14 +146,22 @@
                 </child>
               </object>
             </child>
+            <child>
+              <object class="GtkRevealer" id="map_revealer">
+                <property name="visible">true</property>
+                <property name="reveal-child">false</property>
+                <property name="transition-type">slide-left</property>
+                <child>
+                  <object class="GbEditorMapBin" id="source_map_container">
+                    <property name="floating-bar">floating_bar</property>
+                    <property name="visible">true</property>
+                  </object>
+                </child>
+              </object>
+            </child>
           </object>
         </child>
       </object>
     </child>
   </template>
-  <object class="GtkAdjustment" id="overlay_adj">
-    <property name="lower">0.0</property>
-    <property name="upper">1.0</property>
-    <property name="value">1.0</property>
-  </object>
 </interface>
diff --git a/src/editor/gb-editor-frame-private.h b/src/editor/gb-editor-frame-private.h
index 0d7c633..fefc47d 100644
--- a/src/editor/gb-editor-frame-private.h
+++ b/src/editor/gb-editor-frame-private.h
@@ -35,8 +35,8 @@ struct _GbEditorFrame
   gchar               *previous_search_string;
 
   NautilusFloatingBar *floating_bar;
+  GtkRevealer         *map_revealer;
   GtkLabel            *mode_name_label;
-  GtkAdjustment       *overlay_adj;
   GtkLabel            *overwrite_label;
   GtkScrolledWindow   *scrolled_window;
   GtkRevealer         *search_revealer;
@@ -47,8 +47,6 @@ struct _GbEditorFrame
   IdeSourceMap        *source_map;
   GtkOverlay          *source_overlay;
 
-  IdeAnimation        *map_animation;
-
   gulong               cursor_moved_handler;
 
   guint                auto_hide_map : 1;
diff --git a/src/editor/gb-editor-frame.c b/src/editor/gb-editor-frame.c
index 874fd34..d32cf53 100644
--- a/src/editor/gb-editor-frame.c
+++ b/src/editor/gb-editor-frame.c
@@ -53,31 +53,9 @@ static void
 gb_editor_frame_animate_map (GbEditorFrame *self,
                              gboolean       visible)
 {
-  IdeAnimation *animation;
-  GdkFrameClock *frame_clock;
-  gdouble value;
-  guint duration;
-
   g_assert (GB_IS_EDITOR_FRAME (self));
 
-  if (self->map_animation)
-    {
-      animation = self->map_animation;
-      ide_clear_weak_pointer (&self->map_animation);
-      ide_animation_stop (animation);
-    }
-
-  frame_clock = gtk_widget_get_frame_clock (GTK_WIDGET (self->source_map_container));
-  duration = visible ? MINIMAP_SHOW_DURATION : MINIMAP_HIDE_DURATION;
-  value = visible ? 0.0 : 1.0;
-
-  animation = ide_object_animate (self->overlay_adj,
-                                  IDE_ANIMATION_EASE_IN_OUT_QUAD,
-                                  duration,
-                                  frame_clock,
-                                  "value", value,
-                                  NULL);
-  ide_set_weak_pointer (&self->map_animation, animation);
+  gtk_revealer_set_reveal_child (self->map_revealer, visible);
 }
 
 static void
@@ -622,42 +600,6 @@ gb_editor_frame__source_view_populate_popup (GbEditorFrame *self,
     }
 }
 
-static gboolean
-gb_editor_frame__source_overlay_get_child_position (GbEditorFrame *self,
-                                                   GtkWidget     *widget,
-                                                   GtkAllocation *alloc,
-                                                   GtkOverlay    *overlay)
-{
-  GtkAllocation main_alloc;
-  GtkRequisition req;
-
-  g_assert (GTK_IS_OVERLAY (overlay));
-  g_assert (GB_IS_EDITOR_FRAME (self));
-  g_assert (GTK_IS_WIDGET (widget));
-  g_assert (alloc != NULL);
-
-  if (widget == (GtkWidget *)self->source_map_container)
-    {
-      gdouble value;
-
-      gtk_widget_get_allocation (GTK_WIDGET (self), &main_alloc);
-      gtk_widget_get_preferred_size (widget, &req, NULL);
-
-      alloc->x = main_alloc.x + main_alloc.width - req.width;
-      alloc->width = req.width;
-      alloc->y = main_alloc.y;
-      alloc->height = main_alloc.height;
-
-      /* adjust for animation */
-      value = gtk_adjustment_get_value (self->overlay_adj);
-      alloc->x += (value * alloc->width);
-
-      return TRUE;
-    }
-
-  return FALSE;
-}
-
 static void
 gb_editor_frame_constructed (GObject *object)
 {
@@ -709,8 +651,6 @@ gb_editor_frame_dispose (GObject *object)
 
   g_clear_pointer (&self->previous_search_string, g_free);
 
-  ide_clear_weak_pointer (&self->map_animation);
-
   if (self->source_view && self->cursor_moved_handler)
     {
       GtkTextBuffer *buffer;
@@ -828,8 +768,8 @@ gb_editor_frame_class_init (GbEditorFrameClass *klass)
   GB_WIDGET_CLASS_TEMPLATE (klass, "gb-editor-frame.ui");
 
   GB_WIDGET_CLASS_BIND (klass, GbEditorFrame, floating_bar);
+  GB_WIDGET_CLASS_BIND (klass, GbEditorFrame, map_revealer);
   GB_WIDGET_CLASS_BIND (klass, GbEditorFrame, mode_name_label);
-  GB_WIDGET_CLASS_BIND (klass, GbEditorFrame, overlay_adj);
   GB_WIDGET_CLASS_BIND (klass, GbEditorFrame, overwrite_label);
   GB_WIDGET_CLASS_BIND (klass, GbEditorFrame, scrolled_window);
   GB_WIDGET_CLASS_BIND (klass, GbEditorFrame, search_entry);
@@ -873,18 +813,6 @@ gb_editor_frame_init (GbEditorFrame *self)
 
   g_object_bind_property (self->source_view, "overwrite", self->overwrite_label, "visible", 
G_BINDING_SYNC_CREATE);
 
-  g_signal_connect_object (self->source_overlay,
-                           "get-child-position",
-                           G_CALLBACK (gb_editor_frame__source_overlay_get_child_position),
-                           self,
-                           G_CONNECT_SWAPPED);
-
-  g_signal_connect_object (self->overlay_adj,
-                           "value-changed",
-                           G_CALLBACK (gtk_widget_queue_resize),
-                           self->source_map_container,
-                           G_CONNECT_SWAPPED);
-
   /*
    * we want to rubberbanding search until enter has been pressed or next/previous actions
    * have been activated.


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