diff options
author | Ton Roosendaal <ton@blender.org> | 2009-04-20 15:39:18 +0400 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2009-04-20 15:39:18 +0400 |
commit | bc061594311b5444e34bb14e47a12b7467046f67 (patch) | |
tree | bd9d1f7e4d8c9e070cdb9124a25b332b56a8efed | |
parent | 4b45c57bb6fe974f30e62a226a587a4db4c17375 (diff) |
2.5
Fixes:
- HSV picker didn't work. Old option "No Hilite" for buttons made it not
being checked for input anymore. Needs to be on attention list!
- Node editor wasn't drawing buttons correctly. Two things to keep track
off:
- Use wmLoadIdentity(), not glLoadIdentity()
- I've added a wmPushMatrix() and wmPopMatrix() version for correct
wm-compatible push/pop. Only one level for now.
-rw-r--r-- | source/blender/editors/interface/interface.c | 12 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_regions.c | 2 | ||||
-rw-r--r-- | source/blender/windowmanager/WM_api.h | 2 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_subwindow.c | 23 |
4 files changed, 28 insertions, 11 deletions
diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index eb4bd5f940b..221ad23a846 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -641,11 +641,8 @@ void uiDrawBlock(const bContext *C, uiBlock *block) ui_but_to_pixelrect(&rect, ar, block, NULL); /* pixel space for AA widgets */ - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); + wmPushMatrix(); + wmLoadIdentity(); wmOrtho2(-0.01f, ar->winx-0.01f, -0.01f, ar->winy-0.01f); @@ -664,10 +661,7 @@ void uiDrawBlock(const bContext *C, uiBlock *block) } /* restore matrix */ - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); + wmPopMatrix(); ui_draw_links(block); } diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c index 73fdb7fd83c..181513b58bc 100644 --- a/source/blender/editors/interface/interface_regions.c +++ b/source/blender/editors/interface/interface_regions.c @@ -1193,10 +1193,8 @@ void uiBlockPickerButtons(uiBlock *block, float *col, float *hsv, float *old, ch // the cube intersection bt= uiDefButF(block, HSVCUBE, retval, "", 0,DPICK+BPICK,FPICK,FPICK, col, 0.0, 0.0, 2, 0, ""); - uiButSetFlag(bt, UI_NO_HILITE); bt= uiDefButF(block, HSVCUBE, retval, "", 0,0,FPICK,BPICK, col, 0.0, 0.0, 3, 0, ""); - uiButSetFlag(bt, UI_NO_HILITE); // palette diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index b40b8e93150..1b5b2e0acbc 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -183,6 +183,8 @@ void wmMultMatrix (float mat[][4]); void wmGetSingleMatrix (float mat[][4]); void wmScale (float x, float y, float z); void wmLoadIdentity (void); /* note: old name clear_view_mat */ +void wmPushMatrix (void); /* one level only */ +void wmPopMatrix (void); /* one level only */ void wmFrustum (float x1, float x2, float y1, float y2, float n, float f); void wmOrtho (float x1, float x2, float y1, float y2, float n, float f); diff --git a/source/blender/windowmanager/intern/wm_subwindow.c b/source/blender/windowmanager/intern/wm_subwindow.c index 54074ec8f07..67ba31b84c0 100644 --- a/source/blender/windowmanager/intern/wm_subwindow.c +++ b/source/blender/windowmanager/intern/wm_subwindow.c @@ -68,6 +68,7 @@ typedef struct wmSubWindow { int swinid; float viewmat[4][4], winmat[4][4]; + float viewmat1[4][4], winmat1[4][4]; } wmSubWindow; @@ -306,6 +307,28 @@ void wmMultMatrix(float mat[][4]) glGetFloatv(GL_MODELVIEW_MATRIX, (float *)_curswin->winmat); } +void wmPushMatrix(void) +{ + if(_curswin==NULL) return; + + Mat4CpyMat4(_curswin->viewmat1, _curswin->viewmat); + Mat4CpyMat4(_curswin->winmat1, _curswin->winmat); +} + +void wmPopMatrix(void) +{ + if(_curswin==NULL) return; + + Mat4CpyMat4(_curswin->viewmat, _curswin->viewmat1); + Mat4CpyMat4(_curswin->winmat, _curswin->winmat1); + + glMatrixMode(GL_PROJECTION); + glLoadMatrixf(&_curswin->winmat[0][0]); + glMatrixMode(GL_MODELVIEW); + glLoadMatrixf(&_curswin->viewmat[0][0]); + +} + void wmGetSingleMatrix(float mat[][4]) { if(_curswin) |