Changeset 688910a2 in vaadin


Ignore:
Timestamp:
Mar 23, 2012 8:35:19 AM (3 years ago)
Author:
Leif Åstrand <leif@…>
Branches:
master, 7.0, 7.1, 7.2, 7.3, 7.4
Children:
144072f8
Parents:
14b4b323
git-author:
Leif Åstrand <leif@…> (03/23/12 08:35:11)
git-committer:
Leif Åstrand <leif@…> (03/23/12 08:35:19)
Message:

Force more reflows in IE8 to detect icon style (#8313)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/com/vaadin/terminal/gwt/client/ui/VFilterSelect.java

    re43fe0d9 r688910a2  
    11511151            if (selectedItemIcon.isAttached()) { 
    11521152                panel.remove(selectedItemIcon); 
     1153                if (BrowserInfo.get().isIE8()) { 
     1154                    forceReflow(); 
     1155                } 
    11531156                updateRootWidth(); 
    11541157            } 
    11551158        } else { 
     1159            selectedItemIcon.setUrl(iconUri); 
    11561160            panel.insert(selectedItemIcon, 0); 
    1157             selectedItemIcon.setUrl(iconUri); 
     1161            if (BrowserInfo.get().isIE8()) { 
     1162                forceReflow(); 
     1163            } 
    11581164            updateRootWidth(); 
    11591165            updateSelectedIconPosition(); 
    11601166        } 
     1167    } 
     1168 
     1169    private void forceReflow() { 
     1170        Style style = tb.getElement().getStyle(); 
     1171 
     1172        String oldZoom = style.getProperty("zoom"); 
     1173        style.setProperty("zoom", "1"); 
     1174 
     1175        // Forces reflow because style has changed 
     1176        tb.getOffsetWidth(); 
     1177 
     1178        // Restore old style 
     1179        style.setProperty("zoom", oldZoom); 
    11611180    } 
    11621181 
     
    16061625             * locked 
    16071626             */ 
    1608             Style style = tb.getElement().getStyle(); 
    1609             if (!style.getWidth().endsWith("px")) { 
    1610                 boolean isIE8 = BrowserInfo.get().isIE8(); 
    1611                 if (isIE8) { 
    1612                     // Must do something to make IE8 realize that it should 
    1613                     // reflow the component when the offset width is read 
    1614                     style.setProperty("zoom", "1"); 
    1615                 } 
     1627            if (!tb.getElement().getStyle().getWidth().endsWith("px")) { 
    16161628                tb.setWidth((tb.getOffsetWidth() - selectedItemIcon 
    16171629                        .getOffsetWidth()) + "px"); 
    1618                 if (isIE8) { 
    1619                     // Restore old style property value 
    1620                     style.clearProperty("zoom"); 
    1621                 } 
    16221630            } 
    16231631        } 
Note: See TracChangeset for help on using the changeset viewer.