Commit: f67af054e5410775a2f7bf160385c6b752cfa31c
Author: Julian Eisel
Date:   Tue May 31 13:08:14 2016 +0200
Branches: soc-2016-layer_manager
https://developer.blender.org/rBf67af054e5410775a2f7bf160385c6b752cfa31c

Make selecting of expanded layer items a bit nicer

Now only selects when clicking on item header, nothing happens if you click in 
the expanded area. Also fixed a bug where selecting expanded items wasn't 
working.

===================================================================

M       source/blender/editors/space_layers/layers_draw.c
M       source/blender/editors/space_layers/layers_intern.h
M       source/blender/editors/space_layers/layers_ops.c
M       source/blender/editors/space_layers/layers_util.c

===================================================================

diff --git a/source/blender/editors/space_layers/layers_draw.c 
b/source/blender/editors/space_layers/layers_draw.c
index fc89f09..aaf55ef 100644
--- a/source/blender/editors/space_layers/layers_draw.c
+++ b/source/blender/editors/space_layers/layers_draw.c
@@ -77,8 +77,6 @@ typedef struct TileDrawInfo {
        int idx;
 } TileDrawInfo;
 
-#define LAYERTILE_HEADER_HEIGHT UI_UNIT_Y
-
 static bool layer_tile_draw_cb(LayerTreeItem *litem, void *userdata)
 {
        if (!litem->draw)
@@ -153,7 +151,7 @@ static bool layer_tile_draw_cb(LayerTreeItem *litem, void 
*userdata)
        drawinfo->size_y += tile_size_y;
        drawinfo->idx++;
        /* set tile height */
-       tile->height = tile_size_y;
+       tile->tot_height = tile_size_y;
 
        return true;
 }
diff --git a/source/blender/editors/space_layers/layers_intern.h 
b/source/blender/editors/space_layers/layers_intern.h
index 5935222..219a993 100644
--- a/source/blender/editors/space_layers/layers_intern.h
+++ b/source/blender/editors/space_layers/layers_intern.h
@@ -29,6 +29,8 @@ struct ARegion;
 struct SpaceLayers;
 struct wmKeyConfig;
 
+#define LAYERTILE_HEADER_HEIGHT UI_UNIT_Y
+
 typedef enum eLayerTileFlag {
        LAYERTILE_SELECTED = (1 << 0),
        LAYERTILE_RENAME   = (1 << 1),
@@ -45,7 +47,7 @@ typedef struct LayerTile {
        eLayerTileFlag flag;
        /* The height of this item. Set right after drawing,
         * so should always reflect what's on the screen */
-       int height;
+       int tot_height;
 } LayerTile;
 
 /* layers_draw.c */
diff --git a/source/blender/editors/space_layers/layers_ops.c 
b/source/blender/editors/space_layers/layers_ops.c
index 4c6c1d8..8a02ee1 100644
--- a/source/blender/editors/space_layers/layers_ops.c
+++ b/source/blender/editors/space_layers/layers_ops.c
@@ -298,7 +298,7 @@ static int layer_select_invoke(bContext *C, wmOperator *op, 
const wmEvent *event
                        TILE_SET_SELECTION(false);
                }
                else {
-                       if (!tile->flag & LAYERTILE_SELECTED) {
+                       if (!(tile->flag & LAYERTILE_SELECTED)) {
                                TILE_SET_SELECTION(true);
                        }
                        else if (toggle) {
diff --git a/source/blender/editors/space_layers/layers_util.c 
b/source/blender/editors/space_layers/layers_util.c
index 7446733..40d71a2 100644
--- a/source/blender/editors/space_layers/layers_util.c
+++ b/source/blender/editors/space_layers/layers_util.c
@@ -37,6 +37,8 @@
 
 #include "layers_intern.h"
 
+#include "UI_interface.h"
+
 /**
  * Allocate and register a LayerTile for \a litem.
  */
@@ -89,12 +91,14 @@ static bool layers_tile_find_at_coordinate_cb(LayerTreeItem 
*litem, void *custom
        LayerIsectCheckData *idata = customdata;
        LayerTile *tile = BLI_ghash_lookup(idata->slayer->tiles, litem);
 
-       idata->ofs_y += tile->height;
-       if (idata->co_y >= -idata->v2d->cur.ymin - idata->ofs_y) {
-               idata->r_result = tile;
+       if (idata->co_y >= -idata->v2d->cur.ymin - (idata->ofs_y + 
tile->tot_height)) {
+               if ((idata->co_y >= -idata->v2d->cur.ymin - (idata->ofs_y + 
LAYERTILE_HEADER_HEIGHT))) {
+                       idata->r_result = tile;
+               }
                /* found tile, stop iterating */
                return false;
        }
+       idata->ofs_y += tile->tot_height;
        idata->r_idx++;
 
        return true;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to