Make WordPress Core

Ticket #13524: 13524.7.patch

File 13524.7.patch, 1.5 KB (added by polevaultweb, 11 years ago)

Use droppable tolerance of intersect to fix blank sidebar jumpiness

  • src/wp-admin/js/widgets.js

     
    9494                        helper: 'clone',
    9595                        zIndex: 100,
    9696                        containment: '#wpwrap',
     97                        refreshPositions: true,
    9798                        start: function( event, ui ) {
    9899                                var chooser = $(this).find('.widgets-chooser');
    99100
     
    117118                        }
    118119                });
    119120
     121                var $hoveredSidebar = false;
     122
     123                function closeWidgetWrap( widget ) {
     124                        var $widget = $( widget.target );
     125                        $hoveredSidebar.addClass( 'closed' );
     126                        $widget.css( 'min-height', '' );
     127                        $hoveredSidebar = false;
     128                }
     129
     130                sidebars.droppable( {
     131                        tolerance: 'intersect',
     132                        over     : function( e, ui ) {
     133                                var $widget = $( e.target ),
     134                                        $wrap = $widget.parent();
     135
     136                                if ( $hoveredSidebar && ! $wrap.is( $hoveredSidebar ) ) {
     137                                        closeWidgetWrap( e );
     138                                }
     139
     140                                if ( $wrap.hasClass( 'closed' ) ) {
     141                                        $hoveredSidebar = $wrap;
     142                                        $wrap.removeClass( 'closed' );
     143                                }
     144                        },
     145
     146                        out: function( e, ui ) {
     147                                if ( $hoveredSidebar ) {
     148                                        closeWidgetWrap( e );
     149                                }
     150                        },
     151                } );
     152
    120153                sidebars.sortable({
    121154                        placeholder: 'widget-placeholder',
    122155                        items: '> .widget',
     
    147180                                var addNew, widgetNumber, $sidebar, $children, child, item,
    148181                                        $widget = ui.item,
    149182                                        id = the_id;
     183
     184                                // Reset the var to hold a previously closed sidebar
     185                                $hoveredSidebar = false;
    150186
    151187                                if ( $widget.hasClass('deleting') ) {
    152188                                        wpWidgets.save( $widget, 1, 0, 1 ); // delete widget