Changeset 577


Ignore:
Timestamp:
12/30/09 09:14:19 (2 years ago)
Author:
octorian
Message:

Fix for status-related IllegalStateException on OS 4.5 and under.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LogicMail/src/org/logicprobe/LogicMail/ui/StandardScreen.java

    r508 r577  
    101101    public void setStatus(Field status) { 
    102102        originalStatusField = status; 
    103         super.setStatus(status); 
    104     } 
    105  
     103        superSetStatusImpl(status); 
     104    } 
     105 
     106    /** 
     107     * Wrapper for internal calls to {@link MainScreen#setStatus(Field)} 
     108     * that makes sure <code>IllegalStateException</code>s don't appear 
     109     * if the field had previously been added. 
     110     *  
     111     * @param status the new status field 
     112     */ 
     113    private void superSetStatusImpl(Field status) { 
     114        if(status != null && status.getManager() != null) { 
     115            status.getManager().delete(status); 
     116        } 
     117        super.setStatus(status); 
     118    } 
     119     
    106120    /** 
    107121     * Update status text, showing or hiding the status bar as necessary. 
     
    112126        statusBarField.setStatusText(statusText); 
    113127        if(statusBarField.hasStatus()) { 
    114                 super.setStatus(statusBarField); 
     128                superSetStatusImpl(statusBarField); 
    115129        } 
    116130        else { 
    117                 super.setStatus(originalStatusField); 
     131                superSetStatusImpl(originalStatusField); 
    118132        } 
    119133    } 
     
    134148    protected void onUndisplay() { 
    135149        screenProvider.onUndisplay(); 
    136         super.setStatus(originalStatusField); 
     150        superSetStatusImpl(originalStatusField); 
    137151                statusBarField.setStatusText(null); 
    138152        NotificationHandler.getInstance().cancelNotification(); 
     
    153167    protected void onObscured() { 
    154168        super.onObscured(); 
    155         super.setStatus(originalStatusField); 
     169        superSetStatusImpl(originalStatusField); 
    156170                statusBarField.setStatusText(null); 
    157171    } 
Note: See TracChangeset for help on using the changeset viewer.