| 
					
				 | 
			
			
				@@ -930,7 +930,7 @@ int OPINV_UDFPropagate(laOperator *a, laEvent *e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 int OPINV_SendSignal(laOperator *a, laEvent *e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const char* sig=strGetArgumentString(&a->ExtraInstructionsP,"signal"); if((!sig) || (!sig[0])) return LA_FINISHED; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const char* sig=strGetArgumentString(a->ExtraInstructionsP,"signal"); if((!sig) || (!sig[0])) return LA_FINISHED; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     laCustomSignal* cs=laFindSignal(sig); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if(cs){ la_SendSignalEvent(e->window->win, cs->Signal); } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return LA_FINISHED; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1595,6 +1595,19 @@ int OPINV_NewWindow(laOperator* a, laEvent* e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return LA_FINISHED; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void *la_OnBlockFoldedHeader(laBlock *b, laEvent *e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    int at; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    laBlock *bb=0; int NoSubs = (b->B1==0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if(NoSubs){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (e->x>=b->X && e->x<=b->X+b->W && e->y>=b->Y-LA_SEAM_W && e->y<=b->Y+LA_SEAM_W){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return b; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    bb=la_OnBlockFoldedHeader(b->B1,e); if(bb) return bb; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    bb=la_OnBlockFoldedHeader(b->B2,e); if(bb) return bb; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void *la_OnBlockSeperator(laBlock *b, laEvent *e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     int at; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     laBlock *bb; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1611,8 +1624,7 @@ void *la_OnBlockSeperator(laBlock *b, laEvent *e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (bb = la_OnBlockSeperator(b->B1, e)) return bb; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return la_OnBlockSeperator(b->B2, e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    else return la_OnBlockSeperator(b->B2, e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 int la_DetectBlockDropLocation(laBlock *b, int X, int Y){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     laPanel *p = b->Panels.pFirst; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1702,6 +1714,48 @@ int la_ProcessBlockEvent(laOperator *a, laBlock *b, laEvent *e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (e->type == LA_MOUSEMOVE){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (MAIN.CurrentWindow->CurrentLayout->ClickedPanel){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (abs(e->x - uid->LastX) > LA_RH*3 || abs(e->y - uid->LastY) > LA_RH*3){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    l = MAIN.CurrentWindow->CurrentLayout; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    l->DropToBlock = b; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    l->DropLocation = la_DetectBlockDropLocation(b, e->x, e->y); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    laRefreshWindow(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }elif (e->type == LA_L_MOUSE_UP){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            l = MAIN.CurrentWindow->CurrentLayout; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (l->DropToBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                l->DropToBlock = la_MakeDropBlock(l->DropToBlock,l->DropLocation); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                p = l->ClickedPanel; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(p->Block == l->DropToBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if(laTearOffPanel(p->Block, p)) Executed=1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    p->Block->CurrentPanel = p->Item.pPrev ? p->Item.pPrev : (p->Item.pNext ? p->Item.pNext : 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    lstRemoveItem(&p->Block->Panels, p); laBlock* orig_block=p->Block->parent; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    int clear=0; if(!lstHaveItemInList(&p->Block->Panels)){clear=1;} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    lstPushItem(&l->DropToBlock->Panels, p); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    laUnfoldBlockTitle(l->DropToBlock); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    p->Block = l->DropToBlock; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if(clear){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        laCombineChildBlocks(orig_block); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if(!lstFindItem(orig_block->CurrentPanel,nutSameAddress,&orig_block->Panels)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            orig_block->CurrentPanel = orig_block->Panels.pFirst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    p->Block->CurrentPanel = p; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Executed = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    la_RecalcBlockRecursive(p->Block, p->Block->X, p->Block->Y, p->Block->W, p->Block->H); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if(orig_block!=p->Block){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        la_RecalcBlockRecursive(orig_block, orig_block->X, orig_block->Y, orig_block->W, orig_block->H); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            MAIN.CurrentWindow->CurrentLayout->DropToBlock = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            MAIN.CurrentWindow->CurrentLayout->ClickedPanel = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if(!b->Folded){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             for (p = b->Panels.pFirst; p; p = p->Item.pNext){ tw += (p->TitleWidth + LA_SEAM_W*2); } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (tw > b->W - LA_SEAM_W*2 - LA_RH) ratio = (real)(b->W - LA_SEAM_W*2 - LA_RH) / tw; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1717,70 +1771,26 @@ int la_ProcessBlockEvent(laOperator *a, laBlock *b, laEvent *e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     LT = RT; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }elif (e->type == LA_MOUSEMOVE){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (abs(e->x - uid->LastX) > LA_RH*3 || abs(e->y - uid->LastY) > LA_RH*3){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (MAIN.CurrentWindow->CurrentLayout->ClickedPanel){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        l = MAIN.CurrentWindow->CurrentLayout; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        l->DropToBlock = b; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        l->DropLocation = la_DetectBlockDropLocation(b, e->x, e->y); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        laRefreshWindow(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }elif (e->type == LA_L_MOUSE_UP){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                l = MAIN.CurrentWindow->CurrentLayout; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (l->DropToBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    l->DropToBlock = la_MakeDropBlock(l->DropToBlock,l->DropLocation); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    p = l->ClickedPanel; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if(p->Block == l->DropToBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if(laTearOffPanel(p->Block, p)) Executed=1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        p->Block->CurrentPanel = p->Item.pPrev ? p->Item.pPrev : (p->Item.pNext ? p->Item.pNext : 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        lstRemoveItem(&p->Block->Panels, p); laBlock* orig_block=p->Block->parent; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        int clear=0; if(!lstHaveItemInList(&p->Block->Panels)){clear=1;} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        lstPushItem(&l->DropToBlock->Panels, p); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        p->Block = l->DropToBlock; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if(clear){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            laCombineChildBlocks(orig_block); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            if(!lstFindItem(orig_block->CurrentPanel,nutSameAddress,&orig_block->Panels)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                orig_block->CurrentPanel = orig_block->Panels.pFirst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        p->Block->CurrentPanel = p; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        Executed = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        la_RecalcBlockRecursive(p->Block, p->Block->X, p->Block->Y, p->Block->W, p->Block->H); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if(orig_block!=p->Block){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            la_RecalcBlockRecursive(orig_block, orig_block->X, orig_block->Y, orig_block->W, orig_block->H); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                MAIN.CurrentWindow->CurrentLayout->DropToBlock = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                MAIN.CurrentWindow->CurrentLayout->ClickedPanel = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(!b->OnButton){ b->OnButton=1; laRefreshWindow(); } Ret=0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(laIsInBlockBotton1(b, e->x, e->y)){ if(b->OnButton!=2){b->OnButton=2;laRefreshWindow();} if(e->type==LA_L_MOUSE_DOWN){laUnfoldBlockTitle(b);Executed=1;Ret=1;} } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            elif(laIsInBlockBotton2(b, e->x, e->y)){ if(b->OnButton!=2){b->OnButton=2;laRefreshWindow();}  if(e->type==LA_L_MOUSE_DOWN){laMaximizeBlock(b);Executed=1;Ret=1;} } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!Executed && e->type == LA_L_MOUSE_DOWN && laIsInBlockBotton1(b, e->x, e->y)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                laui_BlockMenu(a, MAIN.CurrentWindow, MAIN.CurrentWindow->CurrentLayout, b, e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (Executed){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             laRecalcPanel(b->CurrentPanel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             la_RecalcBlockRecursive(b, b->X, b->Y, b->W, b->H); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (!Executed && e->type == LA_L_MOUSE_DOWN && laIsInBlockBotton1(b, e->x, e->y)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            laui_BlockMenu(a, MAIN.CurrentWindow, MAIN.CurrentWindow->CurrentLayout, b, e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return Ret; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(b->OnButton){b->OnButton=0;laRefreshWindow();}  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 int la_ProcessBlockEdgeEvent(laOperator *WindowAct, laLayout *l, laBlock *b, laEvent *e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     laBlock *ob = l->MovingBlock; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     laWindow *w = WindowAct->Instance; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (e->type == LA_MOUSEMOVE && ob && l->MovingBlock && l->IsMoving){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (e->type == LA_MOUSEMOVE && ob && l->MovingBlock && l->IsMoving==2){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (ob->Vertical) ob->SplitRatio = (real)(e->y - ob->Y) / (real)(ob->H); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         else ob->SplitRatio = (real)(e->x - ob->X) / (real)(ob->W); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         la_RecalcBlockRecursive(ob, ob->X, ob->Y, ob->W, ob->H); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1788,20 +1798,49 @@ int la_ProcessBlockEdgeEvent(laOperator *WindowAct, laLayout *l, laBlock *b, laE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (ob->B2->CurrentPanel) laRecalcPanel(ob->B2->CurrentPanel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (ob = la_OnBlockSeperator(b, e)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ob->B1->OnButton=ob->B2->OnButton=0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    laBlock* header_block=0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if((header_block=la_OnBlockFoldedHeader(b,e)) && (header_block->Folded)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (header_block->CurrentPanel){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (e->type == LA_MOUSE_WHEEL_DOWN && header_block->CurrentPanel->Item.pNext){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                header_block->CurrentPanel = header_block->CurrentPanel->Item.pNext; laRedrawCurrentWindow(); return 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }elif (e->type == LA_MOUSE_WHEEL_UP && header_block->CurrentPanel->Item.pPrev){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                header_block->CurrentPanel = header_block->CurrentPanel->Item.pPrev; laRedrawCurrentWindow(); return 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(l->IsBlockHeaderClicked==1){ header_block=l->HeaderBlock; } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(l->HeaderBlock!=header_block){ laRefreshWindow(); } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        l->HeaderBlock=header_block; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (e->type == LA_L_MOUSE_DOWN){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if((l->IsBlockHeaderClicked==1) && (tnsDistIdv2(l->LastX,l->LastY,e->x,e->y)<=LA_SEAM_W)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                l->IsBlockHeaderClicked=0; l->IsMoving=0; laUnfoldBlockTitle(header_block); return 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(!l->IsBlockHeaderClicked){ l->IsBlockHeaderClicked = 1; l->LastX=e->x; l->LastY=e->y; laRefreshWindow(); } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        l->IsBlockHeaderClicked = 0; l->HeaderBlock=0; laRefreshWindow(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if ((l->IsMoving==1) || (ob = la_OnBlockSeperator(b, e))){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(l->IsMoving==1){ ob=l->MovingBlock; } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if(l->MovingBlock!=ob){ laRefreshWindow(); } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         l->MovingBlock = ob; laSetWindowCursor(ob->Vertical?LA_UP_AND_DOWN:LA_LEFT_AND_RIGHT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (e->type == LA_L_MOUSE_DOWN){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            l->IsMoving = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(!l->IsMoving){ l->IsMoving = 1; l->LastX=e->x; l->LastY=e->y; } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }elif (e->type == LA_MOUSEMOVE){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(l->IsMoving==1){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(ob->Vertical){ if(abs(e->y-l->LastY)>2*LA_SEAM_W){ l->IsMoving=2; } } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                else{ if(abs(e->x-l->LastX)>2*LA_SEAM_W){ l->IsMoving=2; } } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }elif (e->type == LA_L_MOUSE_UP){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            l->IsMoving = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            l->IsMoving = 0; laRefreshWindow(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }elif (e->type == LA_R_MOUSE_DOWN){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             l->OnBlockSeperator = ob; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             laui_BlockEdgeMenu(WindowAct, l, ob, e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    l->IsMoving = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if(l->MovingBlock){ l->MovingBlock = 0; laRefreshWindow(); laSetWindowCursor(LA_ARROW); } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1960,7 +1999,7 @@ int OPMOD_Window(laOperator *a, laEvent *e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (la_ProcessBlockEdgeEvent(a, w->CurrentLayout, RootBlock, e)) return LA_RUNNING; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         b = w->MaximizedBlock?w->MaximizedBlock:laDetectBlockRecursive(w->CurrentLayout->FirstBlock, e->x, e->y); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        laClearBlockButtonRecursive(RootBlock,b); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (b && la_ProcessBlockEvent(a, b, e)) return LA_RUNNING; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (p = w->Panels.pFirst; p; p = p->Item.pNext){ 
			 |