2.5
authorTon Roosendaal <ton@blender.org>
Mon, 20 Apr 2009 11:39:18 +0000 (11:39 +0000)
committerTon Roosendaal <ton@blender.org>
Mon, 20 Apr 2009 11:39:18 +0000 (11:39 +0000)
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.

source/blender/editors/interface/interface.c
source/blender/editors/interface/interface_regions.c
source/blender/windowmanager/WM_api.h
source/blender/windowmanager/intern/wm_subwindow.c

index eb4bd5f940b8ebfb3f178564484bf8ba283d83d8..221ad23a846c50e5c06fc777acaea5121e2c9de9 100644 (file)
@@ -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);
 }
index 73fdb7fd83c1aec577da9cc809f5e8566a0ff0d1..181513b58bc04cf21adcb5556e656080bef163aa 100644 (file)
@@ -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
        
index b40b8e931506df5ef113ec831be00f60840e2a2f..1b5b2e0acbc59bcefadc01e894a8e3626ac36b94 100644 (file)
@@ -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);
index 54074ec8f070d86490aa51fad88044e36f5b7400..67ba31b84c0ebe715057f28a3544fd33b7ce3164 100644 (file)
@@ -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)