Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTon Roosendaal <ton@blender.org>2009-07-19 16:15:20 +0400
committerTon Roosendaal <ton@blender.org>2009-07-19 16:15:20 +0400
commitf72018ebeb841c9aa677b4f51e1d28a56e8565a7 (patch)
treef88b68bd059ab3ba981df939fe1bd06aa73b9134 /source/blender
parent26ec00d567520d9c2a5f99e4884ebc0cd63a6656 (diff)
2.5
Small fix: Triple Buffer mode didn't clip custom paint cursors correctly for overlapping regions (example, view3d paint circle drawing into toolbar)
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/editors/include/ED_screen.h1
-rw-r--r--source/blender/editors/screen/area.c22
-rw-r--r--source/blender/windowmanager/intern/wm_draw.c4
-rw-r--r--source/blender/windowmanager/intern/wm_gesture.c2
4 files changed, 26 insertions, 3 deletions
diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h
index 3449458168e..6036a4c9e0f 100644
--- a/source/blender/editors/include/ED_screen.h
+++ b/source/blender/editors/include/ED_screen.h
@@ -50,6 +50,7 @@ void ED_region_do_listen(struct ARegion *ar, struct wmNotifier *note);
void ED_region_do_draw(struct bContext *C, struct ARegion *ar);
void ED_region_exit(struct bContext *C, struct ARegion *ar);
void ED_region_pixelspace(struct ARegion *ar);
+void ED_region_set(const struct bContext *C, struct ARegion *ar);
void ED_region_init(struct bContext *C, struct ARegion *ar);
void ED_region_tag_redraw(struct ARegion *ar);
void ED_region_tag_redraw_partial(struct ARegion *ar, struct rcti *rct);
diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c
index e84aab787c1..cdb4322d7f2 100644
--- a/source/blender/editors/screen/area.c
+++ b/source/blender/editors/screen/area.c
@@ -274,6 +274,28 @@ static void region_scissor_winrct(ARegion *ar, rcti *winrct)
}
/* only exported for WM */
+/* makes region ready for drawing, sets pixelspace */
+void ED_region_set(const bContext *C, ARegion *ar)
+{
+ wmWindow *win= CTX_wm_window(C);
+ ScrArea *sa= CTX_wm_area(C);
+ rcti winrct;
+
+ /* checks other overlapping regions */
+ region_scissor_winrct(ar, &winrct);
+
+ ar->drawrct= winrct;
+
+ /* note; this sets state, so we can use wmOrtho and friends */
+ wmSubWindowScissorSet(win, ar->swinid, &ar->drawrct);
+
+ UI_SetTheme(sa?sa->spacetype:0, ar->type?ar->type->regionid:0);
+
+ ED_region_pixelspace(ar);
+}
+
+
+/* only exported for WM */
void ED_region_do_draw(bContext *C, ARegion *ar)
{
wmWindow *win= CTX_wm_window(C);
diff --git a/source/blender/windowmanager/intern/wm_draw.c b/source/blender/windowmanager/intern/wm_draw.c
index ef89b2b35ad..1df567e3c92 100644
--- a/source/blender/windowmanager/intern/wm_draw.c
+++ b/source/blender/windowmanager/intern/wm_draw.c
@@ -574,8 +574,8 @@ static void wm_method_draw_triple(bContext *C, wmWindow *win)
CTX_wm_area_set(C, sa);
CTX_wm_region_set(C, ar);
- wmSubWindowSet(win, ar->swinid);
- ED_region_pixelspace(ar);
+ /* make region ready for draw, scissor, pixelspace */
+ ED_region_set(C, ar);
wm_paintcursor_draw(C, ar);
CTX_wm_region_set(C, NULL);
diff --git a/source/blender/windowmanager/intern/wm_gesture.c b/source/blender/windowmanager/intern/wm_gesture.c
index c899d1d290e..05471329f32 100644
--- a/source/blender/windowmanager/intern/wm_gesture.c
+++ b/source/blender/windowmanager/intern/wm_gesture.c
@@ -236,7 +236,7 @@ static void wm_gesture_draw_cross(wmWindow *win, wmGesture *gt)
glDisable(GL_LINE_STIPPLE);
}
-/* called in wm_event_system.c */
+/* called in wm_draw.c */
void wm_gesture_draw(wmWindow *win)
{
wmGesture *gt= (wmGesture *)win->gesture.first;