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:
Diffstat (limited to 'source/blender/src/interface.c')
-rw-r--r--source/blender/src/interface.c54
1 files changed, 47 insertions, 7 deletions
diff --git a/source/blender/src/interface.c b/source/blender/src/interface.c
index d368b000023..ad5224cb84c 100644
--- a/source/blender/src/interface.c
+++ b/source/blender/src/interface.c
@@ -1235,7 +1235,7 @@ static void ui_emboss_TABL(BIFColorID bc, float asp, float x1, float y1, float x
glEnd();
-
+ glShadeModel(GL_FLAT);
}
static void ui_emboss_TABM(BIFColorID bc, float asp, float x1, float y1, float x2, float y2, int flag)
@@ -1492,6 +1492,7 @@ static void ui_emboss_slider(uiBut *but, float fac)
BIF_set_color(BUTGREY, COLORSHADE_GREY);
fdrawline(x1+fac, y2-2, x1+fac, y1+2);
+ glShadeModel(GL_FLAT);
}
static void ui_draw_but_BUT(uiBut *but)
@@ -2651,12 +2652,13 @@ void uiDrawBlock(uiBlock *block)
}
else if(block->panel) ui_draw_panel(block);
+ if(block->drawextra) block->drawextra();
+
for (but= block->buttons.first; but; but= but->next) {
ui_draw_but(but);
}
ui_draw_links(block);
- if(block->drawextra) block->drawextra();
uiPanelPop(block); // matrix restored
}
@@ -6085,6 +6087,14 @@ short pupmenu_col(char *instr, int maxrow)
/* ************** panels ************* */
+/* ugly global... but will be NULLed after each 'newPanel' call */
+static char *panel_tabbed=NULL, *group_tabbed=NULL;
+
+void uiNewPanelTabbed(char *panelname, char *groupname)
+{
+ panel_tabbed= panelname;
+ group_tabbed= groupname;
+}
/* ofsx/ofsy only used for new panel definitions */
/* return 1 if visible (create buttons!) */
@@ -6128,6 +6138,20 @@ int uiNewPanel(ScrArea *sa, uiBlock *block, char *panelname, char *tabname, int
pa->ofsx= palign->ofsx + palign->sizex;
}
}
+ /* make new Panel tabbed? */
+ if(panel_tabbed && group_tabbed) {
+ Panel *papar;
+ for(papar= sa->panels.first; papar; papar= papar->next) {
+ if(papar->active && papar->paneltab==NULL) {
+ if( strncmp(panel_tabbed, papar->panelname, UI_MAX_NAME_STR)==0) {
+ if( strncmp(group_tabbed, papar->tabname, UI_MAX_NAME_STR)==0) {
+ pa->paneltab= papar;
+ break;
+ }
+ }
+ }
+ }
+ }
}
block->panel= pa;
@@ -6136,6 +6160,9 @@ int uiNewPanel(ScrArea *sa, uiBlock *block, char *panelname, char *tabname, int
if(block->panel->paneltab) return 0;
if(block->panel->flag & PNL_CLOSED) return 0;
+ /* clear global */
+ panel_tabbed= group_tabbed= NULL;
+
return 1;
}
@@ -6242,6 +6269,24 @@ void uiSetPanel_view2d(ScrArea *sa)
}
+void uiMatchPanel_view2d(ScrArea *sa)
+{
+ Panel *pa;
+
+ pa= sa->panels.first;
+ while(pa) {
+ if(pa->active) {
+ if(pa->ofsx < G.v2d->tot.xmin) G.v2d->tot.xmin= pa->ofsx;
+ if(pa->ofsx+pa->sizex > G.v2d->tot.xmax)
+ G.v2d->tot.xmax= pa->ofsx+pa->sizex;
+ if(pa->ofsy < G.v2d->tot.ymin) G.v2d->tot.ymin= pa->ofsy;
+ if(pa->ofsy+pa->sizey+PNL_HEADER > G.v2d->tot.ymax)
+ G.v2d->tot.ymax= pa->ofsy+pa->sizey+PNL_HEADER;
+ }
+ pa= pa->next;
+ }
+}
+
/* extern used ny previewrender */
void uiPanelPush(uiBlock *block)
{
@@ -6482,9 +6527,6 @@ static int find_leftmost_panel(const void *a1, const void *a2)
if( ps1->pa->ofsx > ps2->pa->ofsx) return 1;
else if( ps1->pa->ofsx < ps2->pa->ofsx) return -1;
- else if( ps1->pa->next == ps2->pa) return -1;
- else if( ((long)ps1->pa) < ((long)ps2->pa)) return -1;
- else if( ((long)ps1->pa) > ((long)ps2->pa)) return 1;
return 0;
}
@@ -6496,8 +6538,6 @@ static int find_highest_panel(const void *a1, const void *a2)
if( ps1->pa->ofsy < ps2->pa->ofsy) return 1;
else if( ps1->pa->ofsy > ps2->pa->ofsy) return -1;
- else if( ((long)ps1->pa) < ((long)ps2->pa)) return -1;
- else if( ((long)ps1->pa) > ((long)ps2->pa)) return 1;
return 0;
}