Index: /FCKeditor/branches/developers/martinkou/editor/plugins/dragresizetable/fckplugin.js
===================================================================
--- /FCKeditor/branches/developers/martinkou/editor/plugins/dragresizetable/fckplugin.js (revision 460)
+++ /FCKeditor/branches/developers/martinkou/editor/plugins/dragresizetable/fckplugin.js (revision 461)
@@ -213,13 +213,21 @@
colElements[i].parentNode.removeChild( colElements[i] ) ;
- // Find the place for adding new
elements.
- colParent = table ;
-
- // Generate elements.
- for ( var i = colArray.length - 1 ; i >= 0 ; i-- )
- {
- var col = FCK.EditorDocument.createElement( "col" ) ;
- col.width = colArray[i].width ;
- colParent.insertBefore( col, colParent.childNodes[0] ) ;
+ // Set new cell widths.
+ for ( var r = 0 ; r < table.rows.length ; r++ )
+ {
+ var row = table.rows.item( r ) ;
+ var colIndex = 0 ;
+ for ( var c = 0 ; c < row.cells.length ; c++ )
+ {
+ var cell = row.cells.item( c ) ;
+ var colSpan = parseInt( cell.colSpan ) ;
+ if ( colSpan != colSpan )
+ colSpan = 1 ;
+ var cellWidth = 0 ;
+ for ( var i = colIndex ; i < colIndex + colSpan ; i++ )
+ cellWidth += colArray[i].width ;
+ cell.width = cellWidth ;
+ colIndex += colSpan ;
+ }
}
},
@@ -395,5 +403,4 @@
var paddingBar = FCKDragTableHandler._ResizeBar ;
paddingBar.style.position = "absolute" ;
- paddingBar.style.backgroundColor = "transparent" ;
paddingBar.style.cursor = "e-resize" ;
if ( FCKBrowserInfo.IsIE )
@@ -406,4 +413,25 @@
FCKTools.AddEventListener( document, "mouseup", FCKDragTableHandler._ResizeBarMouseUpListener ) ;
FCKTools.AddEventListener( FCK.EditorDocument, "mouseup", FCKDragTableHandler._ResizeBarMouseUpListener ) ;
+
+ // IE doesn't let the tranparent part of the padding block to receive mouse events unless there's something inside.
+ // So we need to create a spacer image to fill the block up.
+ var filler = document.createElement( "img" ) ;
+ filler.border = 0 ;
+ filler.src = FCKConfig.EditorPath + "/editor/images/spacer.gif" ;
+ filler.style.position = "absolute" ;
+ paddingBar.appendChild( filler ) ;
+
+ // Disable drag and drop, and selection for the filler image.
+ var disabledListener = function( evt )
+ {
+ if ( ! evt )
+ evt = window.event ;
+ if ( evt.preventDefault )
+ evt.preventDefault() ;
+ else
+ evt.returnValue = false ;
+ }
+ FCKTools.AddEventListener( filler, "dragstart", disabledListener ) ;
+ FCKTools.AddEventListener( filler, "selectstart", disabledListener ) ;
}
@@ -423,10 +451,19 @@
cs = 0 ;
var barWidth = Math.max( bw+100, cs+100 ) ;
- paddingBar.innerHTML = "" ;
paddingBar.style.width = barWidth + "px" ;
paddingBar.style.left = ( offset.x + mouse.x + FCKDragTableHandler._GetWindowScrollX( w ) - barWidth / 2 ) + "px" ;
+ var filler = paddingBar.getElementsByTagName( "img" )[0] ;
+ filler.style.width = paddingBar.offsetWidth + "px" ;
+ filler.style.height = paddingBar.offsetHeight + "px" ;
barWidth = Math.max( bw, cs, 3 ) ;
- var visibleBar = document.createElement( "div" ) ;
+ var visibleBar = null ;
+ if ( paddingBar.getElementsByTagName( "div" ).length < 1 )
+ {
+ visibleBar = document.createElement( "div" ) ;
+ paddingBar.appendChild( visibleBar ) ;
+ }
+ else
+ visibleBar = paddingBar.getElementsByTagName( "div" )[0] ;
visibleBar.style.position = "absolute" ;
visibleBar.style.backgroundColor = "blue" ;
@@ -435,5 +472,4 @@
visibleBar.style.left = "50px" ;
visibleBar.style.top = "0px" ;
- paddingBar.appendChild( visibleBar ) ;
},
"_HideResizeBar" : function()