@@ -1171,6 +1171,8 @@ Vvveb.Builder = {
1171
1171
$ ( node ) . parent ( ) . before ( node ) ;
1172
1172
}
1173
1173
1174
+ Vvveb . Builder . selectNode ( node ) ;
1175
+
1174
1176
newParent = node . parentNode ;
1175
1177
newNextSibling = node . nextSibling ;
1176
1178
@@ -1201,6 +1203,8 @@ Vvveb.Builder = {
1201
1203
$ ( node ) . parent ( ) . after ( node ) ;
1202
1204
}
1203
1205
1206
+ Vvveb . Builder . selectNode ( node ) ;
1207
+
1204
1208
newParent = node . parentNode ;
1205
1209
newNextSibling = node . nextSibling ;
1206
1210
@@ -1292,9 +1296,9 @@ Vvveb.Builder = {
1292
1296
self . highlightEl = target = $ ( event . target ) ;
1293
1297
var offset = target . offset ( ) ;
1294
1298
var height = target . outerHeight ( ) ;
1295
- var halfHeight = Math . max ( height / 2 , 50 ) ;
1299
+ var halfHeight = Math . max ( height / 2 , 5 ) ;
1296
1300
var width = target . outerWidth ( ) ;
1297
- var halfWidth = Math . max ( width / 2 , 50 ) ;
1301
+ var halfWidth = Math . max ( width / 2 , 5 ) ;
1298
1302
var prepend = true ;
1299
1303
1300
1304
var x = event . originalEvent . x ;
@@ -1370,16 +1374,40 @@ Vvveb.Builder = {
1370
1374
if ( self . isDragging )
1371
1375
{
1372
1376
var parent = self . highlightEl ;
1377
+ let parentTagName = parent [ 0 ] . tagName . toLowerCase ( ) ;
1378
+
1379
+ let noChildren = {
1380
+ input : true ,
1381
+ textarea : true ,
1382
+ img : true ,
1383
+ iframe : true ,
1384
+ embed : true ,
1385
+ col : true ,
1386
+ area : true ,
1387
+ hr : true ,
1388
+ br : true ,
1389
+ wbr : true
1390
+ } ;
1373
1391
1374
1392
try {
1375
- if ( ( offset . top < ( y - halfHeight ) ) || ( offset . left < ( x - halfWidth ) ) )
1393
+ if ( ( offset . top < ( event . originalEvent . pageY - halfHeight ) ) || ( offset . left < ( x - halfWidth ) ) )
1376
1394
{
1395
+ if ( noChildren [ parentTagName ] ) {
1396
+ self . dragElement . insertAfter ( parent ) ;
1397
+ } else {
1377
1398
self . dragElement . appendTo ( parent ) ;
1399
+ }
1400
+
1378
1401
prepend = true ;
1379
1402
} else
1380
1403
{
1381
- prepend = false ;
1404
+ if ( noChildren [ parentTagName ] ) {
1405
+ self . dragElement . insertBefore ( parent ) ;
1406
+ } else {
1382
1407
self . dragElement . prependTo ( parent ) ;
1408
+ }
1409
+
1410
+ prepend = false ;
1383
1411
} ;
1384
1412
1385
1413
if ( self . designerMode )
@@ -1569,10 +1597,16 @@ Vvveb.Builder = {
1569
1597
self . isDragging = true ;
1570
1598
$ ( "#section-actions, #highlight-name, #select-box" ) . hide ( ) ;
1571
1599
1572
- self . selectedEl . addClass ( "is-dragged" ) ;
1573
- node = self . selectedEl . get ( 0 ) ;
1574
1600
1575
- self . dragElement = $ ( Vvveb . dragHtml ) ;
1601
+ if ( self . designerMode ) {
1602
+ self . dragElement = self . selectedEl ;
1603
+ } else {
1604
+ self . selectedEl . css ( "position" , "" ) . css ( "top" , "" ) . css ( "left" , "" ) ;
1605
+ self . selectedEl . addClass ( "is-dragged" ) ;
1606
+ self . dragElement = $ ( Vvveb . dragHtml ) ;
1607
+ }
1608
+
1609
+ node = self . selectedEl . get ( 0 ) ;
1576
1610
1577
1611
self . dragMoveMutation = { type : 'move' ,
1578
1612
target : node ,
@@ -2338,7 +2372,7 @@ Vvveb.Gui = {
2338
2372
2339
2373
setDesignerMode : function ( ) {
2340
2374
//aria-pressed attribute is updated after action is called and we check for false instead of true
2341
- var designerMode = this . attributes [ "aria-pressed" ] . value ! = "true" ;
2375
+ var designerMode = this . attributes [ "aria-pressed" ] . value = = "true" ;
2342
2376
Vvveb . Builder . setDesignerMode ( designerMode ) ;
2343
2377
} ,
2344
2378
//layout
@@ -2505,11 +2539,20 @@ Vvveb.StyleManager = {
2505
2539
return selector . reverse ( ) . join ( " > " ) ;
2506
2540
} ,
2507
2541
2508
- setStyle : function ( element , styleProp , value ) {
2542
+ setStyle : function ( element , styleProp , value ) {
2509
2543
if ( typeof ( element ) == "string" ) {
2510
2544
selector = element ;
2511
2545
} else {
2512
- selector = this . getSelectorForElement ( element . get ( 0 ) ) ;
2546
+ let node = element . get ( 0 ) ;
2547
+
2548
+ //if propert is set with inline style attribute then override it and don't save to css
2549
+ //inline text editor sets properties like font-size inline that can't be later overriten from css
2550
+ if ( node . style && node . style [ styleProp ] ) {
2551
+ node . style [ styleProp ] = value ;
2552
+ return element ;
2553
+ }
2554
+
2555
+ selector = this . getSelectorForElement ( node ) ;
2513
2556
}
2514
2557
2515
2558
media = $ ( "#canvas" ) . hasClass ( "tablet" ) ? "tablet" : $ ( "#canvas" ) . hasClass ( "mobile" ) ? "mobile" : "desktop" ;
0 commit comments