[gnome-todo] dnd-row: Improve style



commit 67276ac8e55c55ef5509127c09bee09c3c9f7ef0
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Thu Nov 2 23:55:51 2017 -0200

    dnd-row: Improve style
    
    Requested in #120

 data/theme/Adwaita.css   | 10 +++-------
 data/ui/dnd-row.ui       | 42 ++++--------------------------------------
 src/gtd-dnd-row.c        | 19 +++++++++++--------
 src/gtd-task-list-view.c |  8 +++++++-
 src/gtd-task-row.c       |  5 ++++-
 5 files changed, 29 insertions(+), 55 deletions(-)
---
diff --git a/data/theme/Adwaita.css b/data/theme/Adwaita.css
index fd90eb7..2d85599 100644
--- a/data/theme/Adwaita.css
+++ b/data/theme/Adwaita.css
@@ -88,14 +88,10 @@ taskrow .close-button.active > image { transition: 200ms cubic-bezier(0.25, 0.46
 taskrow .close-button > image { transition: 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); -gtk-icon-transform: 
rotate(0turn); }
 
 /* dnd row */
-dndrow {
-    background-color: rgba(0, 0, 0, 0.1);
-    opacity: 0.5;
-}
+dndrow frame { border: solid 2px; border-radius: 2px;  }
 
-dndrow frame {
-    background: rgba(0, 0, 0, 0.2);
-}
+tasklistview.dark  dndrow frame { background: alpha(white, 0.25); border-color: alpha(white, 0.5);}
+tasklistview.light dndrow frame { background: alpha(black, 0.25); border-color: alpha(black, 0.5);}
 
 /* extension list */
 list.extension-list row {
diff --git a/data/ui/dnd-row.ui b/data/ui/dnd-row.ui
index af7b1cd..cf779b7 100644
--- a/data/ui/dnd-row.ui
+++ b/data/ui/dnd-row.ui
@@ -6,28 +6,16 @@
     <property name="activatable">False</property>
     <property name="selectable">False</property>
     <property name="halign">center</property>
+    <property name="margin">3</property>
     <child>
-      <object class="GtkGrid" id="box">
+      <object class="GtkBox" id="box">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
-        <property name="margin_start">20</property>
-        <property name="column_spacing">12</property>
         <child>
-          <object class="GtkImage" id="icon">
+          <object class="GtkFrame" id='frame'>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="icon_name">open-menu-symbolic</property>
-            <property name="pixel-size">12</property>
-            <style>
-              <class name="dim-label"/>
-            </style>
-          </object>
-        </child>
-        <child>
-          <object class="GtkFrame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="hexpand">True</property>
+            <property name="expand">True</property>
             <property name="label_xalign">0</property>
             <property name="shadow_type">none</property>
             <child>
@@ -39,28 +27,6 @@
               </object>
             </child>
           </object>
-          <packing>
-            <property name="left_attach">1</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="hexpand">True</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkBox">
-                <property name="visible">True</property>
-                <property name="vexpand">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="top_attach">1</property>
-            <property name="left_attach">1</property>
-          </packing>
         </child>
       </object>
     </child>
diff --git a/src/gtd-dnd-row.c b/src/gtd-dnd-row.c
index bb85055..9207795 100644
--- a/src/gtd-dnd-row.c
+++ b/src/gtd-dnd-row.c
@@ -31,7 +31,7 @@ struct _GtdDndRow
   GtkListBoxRow       parent;
 
   GtkWidget          *box;
-  GtkWidget          *icon;
+  GtkWidget          *frame;
 
   GtkListBoxRow      *row_above;
   gint                depth;
@@ -66,7 +66,7 @@ get_real_task_for_depth (GtdDndRow *self)
 static void
 update_row_padding (GtdDndRow *self)
 {
-  gtk_widget_set_margin_start (self->icon, self->depth * 32);
+  gtk_widget_set_margin_start (self->box, self->depth * 32);
 }
 
 static void
@@ -140,7 +140,7 @@ gtd_dnd_row_class_init (GtdDndRowClass *klass)
   gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/todo/ui/dnd-row.ui");
 
   gtk_widget_class_bind_template_child (widget_class, GtdDndRow, box);
-  gtk_widget_class_bind_template_child (widget_class, GtdDndRow, icon);
+  gtk_widget_class_bind_template_child (widget_class, GtdDndRow, frame);
 
   gtk_widget_class_set_css_name (widget_class, "dndrow");
 }
@@ -196,13 +196,16 @@ gtd_dnd_row_drag_motion (GtkWidget      *widget,
   if (self->row_above && GTD_IS_TASK_ROW (self->row_above))
     {
       GtdTask *task;
-      gint offset;
+      gint depth;
 
       task = gtd_task_row_get_task (GTD_TASK_ROW (self->row_above));
-      offset = gtk_widget_get_margin_start (self->box) + gtk_widget_get_allocated_width (self->icon);
-      self->depth = CLAMP (floor ((x - alloc.x - offset) / 32),
-                           0,
-                           gtd_task_get_depth (task) + 1);
+
+      if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
+        depth = floor ((alloc.width - alloc.x - x) / 32);
+      else
+        depth = floor ((x - alloc.x) / 32);
+
+      self->depth = CLAMP (depth, 0, gtd_task_get_depth (task) + 1);
     }
   else
     {
diff --git a/src/gtd-task-list-view.c b/src/gtd-task-list-view.c
index 0072864..ad49540 100644
--- a/src/gtd-task-list-view.c
+++ b/src/gtd-task-list-view.c
@@ -1344,13 +1344,19 @@ listbox_drag_motion (GtkListBox      *listbox,
   source_row = GTK_LIST_BOX_ROW (gtk_widget_get_ancestor (source_widget, GTK_TYPE_LIST_BOX_ROW));
   hovered_row = gtk_list_box_get_row_at_y (listbox, y);
 
-  x -= gtd_task_row_get_x_offset (GTD_TASK_ROW (source_row));
+  /* Update the x value according to the current offset */
+  if (gtk_widget_get_direction (GTK_WIDGET (self)) == GTK_TEXT_DIR_RTL)
+    x += gtd_task_row_get_x_offset (GTD_TASK_ROW (source_row));
+  else
+    x -= gtd_task_row_get_x_offset (GTD_TASK_ROW (source_row));
 
   /* Make sure the DnD row always have the same height of the dragged row */
   gtk_widget_set_size_request (priv->dnd_row,
                                -1,
                                gtk_widget_get_allocated_height (GTK_WIDGET (source_row)));
 
+  gtk_widget_queue_resize (priv->dnd_row);
+
   /*
    * When not hovering any row, we still have to make sure that the listbox is a valid
    * drop target. Otherwise, the user can drop at the space after the rows, and the row
diff --git a/src/gtd-task-row.c b/src/gtd-task-row.c
index 535cbb0..8bf941f 100644
--- a/src/gtd-task-row.c
+++ b/src/gtd-task-row.c
@@ -926,5 +926,8 @@ gtd_task_row_get_x_offset (GtdTaskRow *self)
 {
   g_return_val_if_fail (GTD_IS_TASK_ROW (self), -1);
 
-  return self->clicked_x;
+  if (gtk_widget_get_direction (GTK_WIDGET (self)) == GTK_TEXT_DIR_RTL)
+    return gtk_widget_get_allocated_width (GTK_WIDGET (self)) - self->clicked_x;
+  else
+    return self->clicked_x;
 }


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