Page Menu
Home
Search
Configure Global Search
Log In
Files
F4734
aredge03.txt
Public
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Authored By
Juho Vepsalainen (bebraw)
Nov 13 2013, 1:18 PM
Size
2 KB
Subscribers
None
aredge03.txt
View Options
Index: source/blender/src/editscreen.c
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/blender/src/editscreen.c,v
retrieving revision 1.155
diff -u -p -u -r1.155 editscreen.c
--- source/blender/src/editscreen.c 12 Apr 2007 06:21:31 -0000 1.155
+++ source/blender/src/editscreen.c 16 Apr 2007 17:31:45 -0000
@@ -745,6 +745,35 @@ void splash(void *data, int datasize, ch
static void moveareas(ScrEdge *edge);
static void joinarea_interactive(ScrArea *area, ScrEdge *onedge);
static void splitarea_interactive(ScrArea *area, ScrEdge *onedge);
+static ScrArea *test_edge_area(ScrArea *sa, ScrEdge *se);
+static ScrEdge *screen_findedge(bScreen *sc, ScrVert *v1, ScrVert *v2);
+
+static int isjoinable(ScrArea *area, ScrEdge *onedge)
+{
+ struct ScrArea *sa1 = area, *sa2;
+ struct ScrEdge *se;
+
+ sa1 = test_edge_area(sa1, onedge);
+ if(sa1==0) return 0;
+
+ /* find directions with same edge */
+ sa2= G.curscreen->areabase.first;
+ while(sa2) {
+ if(sa2 != sa1) {
+ se= screen_findedge(G.curscreen, sa2->v1, sa2->v2);
+ if(onedge==se) return 1;
+ se= screen_findedge(G.curscreen, sa2->v2, sa2->v3);
+ if(onedge==se) return 1;
+ se= screen_findedge(G.curscreen, sa2->v3, sa2->v4);
+ if(onedge==se) return 1;
+ se= screen_findedge(G.curscreen, sa2->v4, sa2->v1);
+ if(onedge==se) return 1;
+ }
+ sa2= sa2->next;
+ }
+
+ return 0;
+}
static void screen_edge_edit_event(ScrArea *actarea, ScrEdge *actedge, short evt, short val)
{
@@ -757,21 +786,34 @@ static void screen_edge_edit_event(ScrAr
if (evt==LEFTMOUSE) {
moveareas(actedge);
} else if (evt==MIDDLEMOUSE || evt==RIGHTMOUSE) {
- int edgeop;
-
+ int edgeop, joinable= 1;
+ char *str;
+
+ str= MEM_callocN(32, "temp string");
+ strcpy(str, "Split Area|");
+
+ if(isjoinable(actarea, actedge)) {
+ strcat(str, "Join Areas|");
+ joinable= 0;
+ }
+
if (!actarea->headertype) {
- edgeop= pupmenu("Split Area|Join Areas|Add Header");
+ strcat(str, "Add Header");
+ edgeop= pupmenu(str);
} else {
- edgeop= pupmenu("Split Area|Join Areas|No Header");
+ strcat(str, "No Header");
+ edgeop= pupmenu(str);
}
if (edgeop==1) {
splitarea_interactive(actarea, actedge);
- } else if (edgeop==2) {
+ } else if (edgeop==2+joinable) {
joinarea_interactive(actarea, actedge);
- } else if (edgeop==3) {
+ } else if (edgeop==3-joinable) {
scrarea_change_headertype(actarea, actarea->headertype?0:HEADERDOWN);
}
+
+ MEM_freeN(str);
}
else blenderqread(evt, val); // global hotkeys
}
File Metadata
Details
Mime Type
text/x-diff
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
b0/68/42cbe5705f3a711049a9ef9e456e
Event Timeline
Log In to Comment