[gnome-todo] task-row: Turn back into a GtkListBoxRow subclass



commit 020da65f791dd439fd19b7f0f7d11b203ec6b063
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Fri Nov 5 15:16:02 2021 -0300

    task-row: Turn back into a GtkListBoxRow subclass
    
    It's more convenient this way

 src/gui/gtd-task-list-view.c | 37 ++++++++++++-------------------------
 src/gui/gtd-task-row.c       |  4 ++--
 src/gui/gtd-task-row.h       |  2 +-
 src/gui/gtd-task-row.ui      |  2 +-
 4 files changed, 16 insertions(+), 29 deletions(-)
---
diff --git a/src/gui/gtd-task-list-view.c b/src/gui/gtd-task-list-view.c
index 2690b60a..b5d704fe 100644
--- a/src/gui/gtd-task-list-view.c
+++ b/src/gui/gtd-task-list-view.c
@@ -165,17 +165,6 @@ enum {
  * Auxiliary methods
  */
 
-static inline GtdTaskRow*
-task_row_from_row (GtkListBoxRow *row)
-{
-  GtkWidget *child = gtk_list_box_row_get_child (row);
-
-  if (!GTD_IS_TASK_ROW (child))
-    return NULL;
-
-  return GTD_TASK_ROW (child);
-}
-
 static void
 set_active_row (GtdTaskListView *self,
                 GtdTaskRow      *row)
@@ -438,7 +427,7 @@ on_undo_remove_task_action_cb (GtdNotification *notification,
   data = user_data;
 
   /*
-   * Readd task to the list. This will emit GListModel:items-changed (since
+   * Re-add task to the list. This will emit GListModel:items-changed (since
    * GtdTaskList implements GListModel) and the row will be added back.
    */
   list = gtd_task_get_list (data->task);
@@ -514,11 +503,11 @@ on_listbox_row_activated_cb (GtkListBox      *listbox,
 
   GTD_ENTRY;
 
-  task_row = task_row_from_row (row);
-
-  if (!task_row)
+  if (!GTD_IS_TASK_ROW (row))
     GTD_RETURN ();
 
+  task_row = GTD_TASK_ROW (row);
+
   /* Toggle the row */
   if (gtd_task_row_get_active (task_row))
     set_active_row (self, NULL);
@@ -547,14 +536,14 @@ internal_header_func (GtkListBoxRow   *row,
 
   row_task = before_task = NULL;
 
-  if (!task_row_from_row (row))
+  if (!GTD_IS_TASK_ROW (row))
     return;
 
   if (row)
-    row_task = gtd_task_row_get_task (task_row_from_row (row));
+    row_task = gtd_task_row_get_task (GTD_TASK_ROW (row));
 
   if (before)
-      before_task = gtd_task_row_get_task (task_row_from_row (before));
+      before_task = gtd_task_row_get_task (GTD_TASK_ROW (row));
 
   header = self->header_func (row_task, before_task, self->header_user_data);
 
@@ -649,9 +638,9 @@ update_row_drag_highlight (GtdTaskListView *self,
     }
 
   /* Don't add drag highlights to the new task row */
-  if (top_highlight && !GTD_IS_TASK_ROW (task_row_from_row (top_highlight)))
+  if (top_highlight && !GTD_IS_TASK_ROW (top_highlight))
     top_highlight = NULL;
-  if (bottom_highlight && !GTD_IS_TASK_ROW (task_row_from_row (bottom_highlight)))
+  if (bottom_highlight && !GTD_IS_TASK_ROW (bottom_highlight))
     bottom_highlight = NULL;
 
   /* Unhighlight previously highlighted rows */
@@ -680,7 +669,7 @@ get_drop_row_at_y (GtdTaskListView *self,
 
   /* Small optimization when hovering the first row */
   if (gtk_list_box_row_get_index (hovered_row) == 0)
-    return hovered_row;
+    return GTD_IS_TASK_ROW (hovered_row) ? hovered_row : NULL;
 
   drop_row = NULL;
   task_row = hovered_row;
@@ -713,7 +702,7 @@ get_drop_row_at_y (GtdTaskListView *self,
       drop_row = task_row;
     }
 
-  return task_row_from_row (drop_row) ? drop_row : NULL;
+  return GTD_IS_TASK_ROW (drop_row) ? drop_row : NULL;
 }
 
 static inline gboolean
@@ -839,7 +828,6 @@ on_drop_target_drag_drop_cb (GtkDropTarget   *drop_target,
                              GtdTaskListView *self)
 {
   GtkListBoxRow *drop_row;
-  GtdTaskRow *hovered_row;
   GtkWidget *row;
   GtdTask *hovered_task;
   GtdTask *source_task;
@@ -878,8 +866,7 @@ on_drop_target_drag_drop_cb (GtkDropTarget   *drop_target,
       GTD_RETURN (FALSE);
     }
 
-  hovered_row = task_row_from_row (drop_row);
-  hovered_task = gtd_task_row_get_task (hovered_row);
+  hovered_task = gtd_task_row_get_task (GTD_TASK_ROW (drop_row));
   new_position = gtd_task_get_position (hovered_task);
   current_position = gtd_task_get_position (source_task);
 
diff --git a/src/gui/gtd-task-row.c b/src/gui/gtd-task-row.c
index 556da478..f752bfb5 100644
--- a/src/gui/gtd-task-row.c
+++ b/src/gui/gtd-task-row.c
@@ -37,7 +37,7 @@
 
 struct _GtdTaskRow
 {
-  GtdWidget           parent;
+  GtkListBoxRow       parent;
 
   /*<private>*/
   GtkWidget          *content_box;
@@ -77,7 +77,7 @@ static void          on_star_widget_activated_cb                 (GtdStarWidget
                                                                   GParamSpec         *pspec,
                                                                   GtdTaskRow         *self);
 
-G_DEFINE_TYPE (GtdTaskRow, gtd_task_row, GTD_TYPE_WIDGET)
+G_DEFINE_TYPE (GtdTaskRow, gtd_task_row, GTK_TYPE_LIST_BOX_ROW)
 
 enum
 {
diff --git a/src/gui/gtd-task-row.h b/src/gui/gtd-task-row.h
index 6256729d..cb1648be 100644
--- a/src/gui/gtd-task-row.h
+++ b/src/gui/gtd-task-row.h
@@ -24,7 +24,7 @@
 G_BEGIN_DECLS
 
 #define GTD_TYPE_TASK_ROW (gtd_task_row_get_type())
-G_DECLARE_FINAL_TYPE (GtdTaskRow, gtd_task_row, GTD, TASK_ROW, GtkWidget)
+G_DECLARE_FINAL_TYPE (GtdTaskRow, gtd_task_row, GTD, TASK_ROW, GtkListBoxRow)
 
 GtkWidget*                gtd_task_row_new                      (GtdTask             *task,
                                                                  GtdMarkdownRenderer *renderer);
diff --git a/src/gui/gtd-task-row.ui b/src/gui/gtd-task-row.ui
index b296b1c1..f56ccf1f 100644
--- a/src/gui/gtd-task-row.ui
+++ b/src/gui/gtd-task-row.ui
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <requires lib="gtk+" version="3.16"/>
-  <template class="GtdTaskRow" parent="GtdWidget">
+  <template class="GtdTaskRow" parent="GtkListBoxRow">
     <property name="hexpand">true</property>
     <child>
       <object class="GtkEventControllerKey">


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