title: Ext.List Only Rendering on Orientation Change
body: <p>Ext.List  and Ext.Panel Code Code</p>
  
  <pre><code>Ext.namespace('Envato.AudioJungle.Previewer');
  var lastItemClicked = null; // Stores the last 'play' or 'pause' item clicked on
  Envato.AudioJungle.Previewer.audioPreview = new Ext.Audio({}); // Blank audio player used to preview the items
  Envato.AudioJungle.Previewer.popularItemList = new Ext.List({ // The list of popular items
      store: 'popularItemStore',
      emptyText: 'No popular items found',
      loadingText: 'Loading Items',
      itemTpl: new Ext.XTemplate( // How we format the items when they come back
          '&lt;div class = "audio_jungle_item"&gt;',
              '&lt;img src = "{thumbnail}" class = \"thumbnail\"&gt;',
              '&lt;span class = "item_title"&gt;{[fm.ellipsis(values.item, 20, false)]}&lt;/span&gt;',
              '&lt;span class = "item_author"&gt; by {user} ({sales} sales)&lt;/span&gt;',
              '&lt;div class = "x-button play_pause_button"&gt;Play&lt;/div&gt;',
          '&lt;/div&gt;'
      ),
      listeners: {
          itemtap: function(self, index, item, e) {
              var selectedItem = self.getRecord(item);
              var tapTarget = e.getTarget(); // Stores what we clicked on
              if(tapTarget.innerHTML == 'Play') { // We clicked on a 'Play button'
                  if(lastItemClicked &amp;&amp; lastItemClicked.innerHTML == 'Pause') { // Another item is currently playing
                      lastItemClicked.innerHTML = 'Play'; // Switch the button to 'Play'
                  }
                  lastItemClicked = tapTarget; // Store the currently clicked item as the last clicked item
                  lastItemClicked.innerHTML = 'Pause'; // Set the button we clicked on to 'Pause'
                  if(Envato.AudioJungle.Previewer.audioPreview.url) { // Check to see that the audio previewer is not empty
                      Envato.AudioJungle.Previewer.audioPreview.pause(); // Pause it
                  }
                  // Reset the audio previewer to play the item clicked
                  Envato.AudioJungle.Previewer.audioPreview = new Ext.Audio({
                      id: 'audioPreview',
                      hidden: true,
                      url: selectedItem.get('preview_url'),
                      renderTo: Ext.getBody()
                  });
                  // Play the audio
                  Envato.AudioJungle.Previewer.audioPreview.play();
              } else if (tapTarget.innerHTML == 'Pause') { // We clicked a pause button
                  Envato.AudioJungle.Previewer.audioPreview.pause(); // Pause playback
                  tapTarget.innerHTML = 'Play'; // Set the button to say 'Play'
              } else {
                  Ext.Msg.confirm("Audio Jungle", "View this item at AudioJungle.com?", function(btn) {
                      if(btn == 'yes') {
                          location.href = selectedItem.get('url');
                      }
                  });
              }
          }
      }
  });
  Envato.AudioJungle.Previewer.optionToolbar = {
      dock: 'top',
      xtype: 'toolbar',
      title: 'AudioJungle - Popular Items'
  };
  Envato.AudioJungle.Previewer.displayPanel = new Ext.Panel({
      layout: 'fit',
      fullscreen: true,
      dockedItems: Envato.AudioJungle.Previewer.optionToolbar,
      items: Envato.AudioJungle.Previewer.popularItemList
  });
  </code></pre>
  
  <p>Store Code</p>
  
  <pre><code>var popularItemFields = [{
      name: 'preview_url',
      type: 'string'
  },{
      name: 'sales',
      type: 'integer'
  },{
      name: 'user',
      type: 'string'
  },{
      name: 'cost',
      type: 'float'
  },{
      name: 'url',
      type: 'string'
  },{
      name: 'uploaded_on',
      type: 'date',
      dateFormat: 'r'
  },{
      name: 'rating',
      type: 'integer'
  },{
      name: 'tags',
      type: 'string'
  },{
      name: 'thumbnail',
      type: 'string'
  },{
      name: 'id',
      type: 'integer'
  },{
      name: 'item',
      type: 'string'
  },{
      name: 'preview_type',
      type: 'string'
  },{
      name: 'length',
      type: 'string'
  }];
  Ext.regModel('PopularItem', {
      fields: popularItemFields
  });
  Envato.Stores.popularItemsStore = new Ext.data.JsonStore({
      sorters: 'item',
      model: 'PopularItem',
      storeId: 'popularItemStore',
      autoLoad: true,
      proxy: {
          type: 'ajax',
          url: 'php/scripts/envato.php',
          extraParams: {
              site: 'audiojungle'
          },
          reader: {
              type: 'json',
              root: 'root',
              idProperty: 'id'
          }
      },
      getGroupString: function(record) {
          return record.get('item')[0];
      }
  });
  </code></pre>
  
  <p>Main.js code</p>
  
  <pre><code>    Ext.namespace('Envato', 'Envato.AudioJungle', 'Envato.AudioJungle.Previewer', 'Envato.Stores');
      Ext.setup({
          onReady: function() {
              Envato.AudioJungle.Previewer.displayPanel.render(Ext.getBody()).doComponentLayout();
          }
      })
  </code></pre>
  
  <p>on mobile devices (iphone and ipad), the toolbar will render just fine but the list won't render until I change the device's orientation.</p>
  
  <p>On chrome, it renders just fine. Does anyone see anything glaring that would cause this?</p>