Commit: 591a2a69294b485175e62518049811ebc8e848c0
Author: Julian Eisel
Date:   Tue May 24 18:51:08 2016 +0200
Branches: soc-2016-layer_manager
https://developer.blender.org/rB591a2a69294b485175e62518049811ebc8e848c0

Scrolling support for layer manager editor

Vertical scrolling only for now.

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

M       source/blender/editors/space_layers/layers_draw.c
M       source/blender/editors/space_layers/space_layers.c

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

diff --git a/source/blender/editors/space_layers/layers_draw.c 
b/source/blender/editors/space_layers/layers_draw.c
index f149134..359c9ed 100644
--- a/source/blender/editors/space_layers/layers_draw.c
+++ b/source/blender/editors/space_layers/layers_draw.c
@@ -23,6 +23,7 @@
  */
 
 #include "BLI_listbase.h"
+#include "BLI_rect.h"
 
 #include "BKE_context.h"
 #include "BKE_layer.h"
@@ -41,7 +42,6 @@ void layers_draw_tiles(const bContext *C, ARegion *ar)
        uiStyle *style = UI_style_get_dpi();
        SpaceLayers *slayer = CTX_wm_space_layers(C);
        View2D *v2d = &ar->v2d;
-       float size_x = ar->winx;
        float size_y = 0.0f;
 
        uiBlock *block = UI_block_begin(C, ar, __func__, UI_EMBOSS);
@@ -52,7 +52,8 @@ void layers_draw_tiles(const bContext *C, ARegion *ar)
                if (litem->draw) {
                        uiLayout *layout = UI_block_layout(
                                               block, UI_LAYOUT_HORIZONTAL, 
UI_LAYOUT_HEADER,
-                                              0, ar->winy - size_y, 
litem->height, 0, 0, style);
+                                              -v2d->cur.xmin, -v2d->cur.ymin - 
size_y,
+                                              litem->height, 0, 0, style);
                        litem->draw(litem, layout);
                        UI_block_layout_resolve(block, NULL, NULL);
                }
@@ -63,5 +64,5 @@ void layers_draw_tiles(const bContext *C, ARegion *ar)
        UI_block_draw(C, block);
 
        /* update size of tot-rect (extents of data/viewable area) */
-       UI_view2d_totRect_set(v2d, size_x, size_y);
+       UI_view2d_totRect_set(v2d, ar->winx - BLI_rcti_size_x(&v2d->vert), 
size_y);
 }
diff --git a/source/blender/editors/space_layers/space_layers.c 
b/source/blender/editors/space_layers/space_layers.c
index 36554a1..1cbadc0 100644
--- a/source/blender/editors/space_layers/space_layers.c
+++ b/source/blender/editors/space_layers/space_layers.c
@@ -58,16 +58,16 @@ static SpaceLink *layers_new(const bContext *UNUSED(C))
 
        /* header */
        ar = MEM_callocN(sizeof(ARegion), "header for layer manager");
-
        BLI_addtail(&slayer->regionbase, ar);
        ar->regiontype = RGN_TYPE_HEADER;
        ar->alignment = RGN_ALIGN_BOTTOM;
 
        /* main region */
        ar = MEM_callocN(sizeof(ARegion), "main region for layer manager");
-
        BLI_addtail(&slayer->regionbase, ar);
        ar->regiontype = RGN_TYPE_WINDOW;
+       ar->v2d.scroll = (V2D_SCROLL_RIGHT | V2D_SCROLL_BOTTOM | 
V2D_SCROLL_HORIZONTAL_HIDE | V2D_SCROLL_VERTICAL_HIDE);
+       ar->v2d.align = (V2D_ALIGN_NO_NEG_X | V2D_ALIGN_NO_POS_Y);
 
        return (SpaceLink *)slayer;
 }
@@ -99,16 +99,17 @@ static void layer_init(wmWindowManager *wm, ScrArea *sa)
 /* add handlers, stuff you only do once or on area/region changes */
 static void layer_main_region_init(wmWindowManager *UNUSED(wm), ARegion *ar)
 {
-       /* do not use here, the properties changed in userprefs do a 
system-wide refresh, then scroller jumps back */
-       /*      ar->v2d.flag &= ~V2D_IS_INITIALISED; */
-       
-       ar->v2d.scroll = V2D_SCROLL_RIGHT | V2D_SCROLL_VERTICAL_HIDE;
+       UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_LIST, ar->winx, 
ar->winy);
+       ar->v2d.scroll |= (V2D_SCROLL_VERTICAL_FULLR | 
V2D_SCROLL_HORIZONTAL_FULLR);
 }
 
 static void layers_main_region_draw(const bContext *C, ARegion *ar)
 {
        View2D *v2d = &ar->v2d;
 
+       /* v2d has initialized flag, so this call will only set the mask 
correct */
+       UI_view2d_region_reinit(v2d, V2D_COMMONVIEW_LIST, ar->winx, ar->winy);
+
        UI_ThemeClearColor(TH_BACK);
        glClear(GL_COLOR_BUFFER_BIT);
 
@@ -168,7 +169,7 @@ void ED_spacetype_layers(void)
        art->init = layer_main_region_init;
        art->draw = layers_main_region_draw;
        art->listener = layers_main_region_listener;
-       art->keymapflag = ED_KEYMAP_UI;
+       art->keymapflag = ED_KEYMAP_UI | ED_KEYMAP_VIEW2D;
        BLI_addhead(&st->regiontypes, art);
 
        /* regions: header */

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to