[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