[gnome-notes/67-replace-load-more] Replace "Load More" button with edge hit detection



commit 446703bc19dfa3905942346b0810735321c166a8
Author: Isaque Galdino <igaldino gmail com>
Date:   Wed Jul 22 00:15:39 2020 -0300

    Replace "Load More" button with edge hit detection

 src/bjb-load-more-button.c | 250 ---------------------------------------------
 src/bjb-load-more-button.h |  46 ---------
 src/bjb-main-view.c        |  75 ++------------
 src/meson.build            |   1 -
 4 files changed, 8 insertions(+), 364 deletions(-)
---
diff --git a/src/bjb-main-view.c b/src/bjb-main-view.c
index ac456d47..ac27aff9 100644
--- a/src/bjb-main-view.c
+++ b/src/bjb-main-view.c
@@ -23,7 +23,6 @@
 #include "bjb-controller.h"
 #include "bjb-list-view.h"
 #include "bjb-list-view-row.h"
-#include "bjb-load-more-button.h"
 #include "bjb-main-toolbar.h"
 #include "bjb-main-view.h"
 #include "bjb-note-view.h"
@@ -68,13 +67,10 @@ struct _BjbMainView
   /* View Notes , model */
   BjbListView         *view;
   BjbController       *controller;
-  GtkWidget           *load_more;
 };
 
 G_DEFINE_TYPE (BjbMainView, bjb_main_view, GTK_TYPE_GRID)
 
-static void bjb_main_view_view_changed (BjbMainView *self);
-
 static void
 bjb_main_view_init (BjbMainView *self)
 {
@@ -359,50 +355,17 @@ bjb_main_view_connect_signals (BjbMainView *self)
 }
 
 static void
-bjb_main_view_view_changed (BjbMainView *self)
+on_show_more_cb (BjbMainView     *self,
+                 GtkPositionType  pos)
 {
-  GtkAdjustment *vadjustment;
-  GtkWidget     *vscrollbar;
-  gboolean       end;
-  gdouble        page_size;
-  gdouble        upper;
-  gdouble        value;
-  gint           reveal_area_height;
-
-  reveal_area_height = 32;
-  end = FALSE;
-  if (self->view == NULL)
-    return;
-
-  vscrollbar = gtk_scrolled_window_get_vscrollbar (GTK_SCROLLED_WINDOW (self->view));
-
-  if (vscrollbar == NULL || !gtk_widget_get_visible (GTK_WIDGET (vscrollbar)))
-    {
-      bjb_load_more_button_set_block (BJB_LOAD_MORE_BUTTON (self->load_more), TRUE);
-      return;
-    }
-
-  vadjustment = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (self->view));
-  page_size = gtk_adjustment_get_page_size (vadjustment);
-  upper = gtk_adjustment_get_upper (vadjustment);
-  value = gtk_adjustment_get_value (vadjustment);
-
-  /* Special case these values which happen at construction */
-  if ((gint) value == 0 && (gint) upper == 1 && (gint) page_size == 1)
-    end = FALSE;
-  else
-    end = !(value < (upper - page_size - reveal_area_height));
-
-  bjb_load_more_button_set_block (BJB_LOAD_MORE_BUTTON (self->load_more), !end);
+  if (pos == GTK_POS_BOTTOM)
+    bjb_controller_show_more (self->controller);
 }
 
-
 static void
 bjb_main_view_constructed (GObject *o)
 {
-  BjbMainView   *self;
-  GtkAdjustment *vadjustment;
-  GtkWidget     *vscrollbar;
+  BjbMainView *self;
 
   G_OBJECT_CLASS (bjb_main_view_parent_class)->constructed (G_OBJECT (o));
 
@@ -420,37 +383,15 @@ bjb_main_view_constructed (GObject *o)
   gtk_container_add (GTK_CONTAINER (self), GTK_WIDGET (self->view));
   gtk_widget_show (GTK_WIDGET (self->view));
 
-  vadjustment = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (self->view));
-
-  g_signal_connect_object (vadjustment,
-                           "changed",
-                           G_CALLBACK (bjb_main_view_view_changed),
-                           self,
-                           G_CONNECT_SWAPPED);
-
-  g_signal_connect_object (vadjustment,
-                           "value-changed",
-                           G_CALLBACK (bjb_main_view_view_changed),
+  g_signal_connect_object (GTK_SCROLLED_WINDOW (self->view),
+                           "edge-overshot",
+                           G_CALLBACK (on_show_more_cb),
                            self,
                            G_CONNECT_SWAPPED);
 
-  vscrollbar = gtk_scrolled_window_get_vscrollbar (GTK_SCROLLED_WINDOW (self->view));
-  g_signal_connect_object (vscrollbar,
-                           "notify::visible",
-                           G_CALLBACK (bjb_main_view_view_changed),
-                           self,
-                           G_CONNECT_SWAPPED);
-
-  /* Load more */
-  self->load_more = bjb_load_more_button_new (self->controller);
-  gtk_container_add (GTK_CONTAINER (self), self->load_more);
-  bjb_main_view_view_changed (self);
-
-  /* Selection Panel */
   self->select_bar = bjb_selection_toolbar_new (self->view, self);
   gtk_container_add (GTK_CONTAINER (self), GTK_WIDGET (self->select_bar));
 
-  /* Drag n drop */
   gtk_drag_dest_set (GTK_WIDGET (self->view), GTK_DEST_DEFAULT_ALL,
                      target_list, 1, GDK_ACTION_COPY);
 
diff --git a/src/meson.build b/src/meson.build
index aeb3dba5..43287741 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -9,7 +9,6 @@ sources = files(
   'bjb-import-dialog.c',
   'bjb-list-view.c',
   'bjb-list-view-row.c',
-  'bjb-load-more-button.c',
   'bjb-main.c',
   'bjb-main-toolbar.c',
   'bjb-main-view.c',


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