Index: mythplugins/mythweather/mythweather/weather.cpp
===================================================================
--- mythplugins/mythweather/mythweather/weather.cpp	(revision 21063)
+++ mythplugins/mythweather/mythweather/weather.cpp	(working copy)
@@ -304,8 +304,6 @@
 {
     m_srcMan->stopTimers();
     m_nextpage_Timer->stop();
-    m_srcMan->clearSources();
-    m_srcMan->findScripts();
 
     MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack();
 
Index: mythplugins/mythweather/mythweather/weatherSetup.cpp
===================================================================
--- mythplugins/mythweather/mythweather/weatherSetup.cpp	(revision 21063)
+++ mythplugins/mythweather/mythweather/weatherSetup.cpp	(working copy)
@@ -598,30 +598,34 @@
 
         if (resultid == "options")
         {
-            MythUIButtonListItem *item = qVariantValue<MythUIButtonListItem *>(dce->GetData());
-            ScreenListInfo *si = qVariantValue<ScreenListInfo *>(item->GetData());
+            if (buttonnum > -1)
+            {
+                MythUIButtonListItem *item = qVariantValue<MythUIButtonListItem *>(dce->GetData());
+				        
+                ScreenListInfo *si = qVariantValue<ScreenListInfo *>(item->GetData());
 
-            if (buttonnum == 0)
-            {
-                m_activeList->MoveItemUpDown(item, true);
+                if (buttonnum == 0)
+                {
+                    m_activeList->MoveItemUpDown(item, true);
+                }
+                else if (buttonnum == 1)
+                {
+                    m_activeList->MoveItemUpDown(item, false);
+                }
+                else if (buttonnum == 2)
+                {
+                    deleteScreen();
+                }
+                else if (buttonnum == 3)
+                {
+                    doLocationDialog(si);
+                }
+                else if (si->hasUnits && buttonnum == 4)
+                {
+                    showUnitsPopup(item->GetText(), si);
+                    updateHelpText();
+                }
             }
-            else if (buttonnum == 1)
-            {
-                m_activeList->MoveItemUpDown(item, false);
-            }
-            else if (buttonnum == 2)
-            {
-                deleteScreen();
-            }
-            else if (buttonnum == 3)
-            {
-                doLocationDialog(si);
-            }
-            else if (si->hasUnits && buttonnum == 4)
-            {
-                showUnitsPopup(item->GetText(), si);
-                updateHelpText();
-            }
         }
         else if (resultid == "units")
         {
Index: mythplugins/mythweather/mythweather/main.cpp
===================================================================
--- mythplugins/mythweather/mythweather/main.cpp	(revision 21063)
+++ mythplugins/mythweather/mythweather/main.cpp	(working copy)
@@ -67,6 +67,12 @@
 {
     MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack();
 
+    if (!srcMan)
+    {
+        srcMan = new SourceManager();
+        srcMan->startTimers();
+        srcMan->doUpdate();
+    }
     Weather *weather = new Weather(mainStack, "mythweather", srcMan);
 
     if (weather->Create())
