[Bf-blender-cvs] [f67af05] soc-2016-layer_manager: Make selecting of expanded layer items a bit nicer

Julian Eisel noreply at git.blender.org
Tue May 31 13:09:53 CEST 2016


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;




More information about the Bf-blender-cvs mailing list