Branch: master

1742070b 2014-07-08 08:05:07 Timothy Pearson
Fix kmix abort on startup due to oversized tray icon creation when icon widget has not yet been shown
M kmix/kmixdockwidget.cpp
M kmix/kmixdockwidget.h
diff --git a/kmix/kmixdockwidget.cpp b/kmix/kmixdockwidget.cpp
index eaaf402..ae6bdb2 100644
--- a/kmix/kmixdockwidget.cpp
+++ b/kmix/kmixdockwidget.cpp
@@ -240,12 +240,14 @@
 	TQPixmap scaledpixmap;
 	TQImage newIcon;
 	switch ( newPixmapType ) {
-		case 'e': origpixmap = loadSizedIcon( "kmixdocked_error", width() ); break;
-		case 'm': origpixmap = loadSizedIcon( "kmixdocked_mute" , width() ); break;
-		case 'd': origpixmap = loadSizedIcon( "kmixdocked"      , width() ); break;
+		case 'e': origpixmap = isShown() ? loadSizedIcon( "kmixdocked_error", width() ) : loadIcon( "kmixdocked_error"); break;
+		case 'm': origpixmap = isShown() ? loadSizedIcon( "kmixdocked_mute" , width() ) : loadIcon( "kmixdocked_mute"); break;
+		case 'd': origpixmap = isShown() ? loadSizedIcon( "kmixdocked"      , width() ) : loadIcon( "kmixdocked     "); break;
 	}
 	newIcon = origpixmap;
-	newIcon = newIcon.smoothScale(width(), height());
+	if (isShown()) {
+		newIcon = newIcon.smoothScale(width(), height());
+	}
 	scaledpixmap = newIcon;
 	setPixmap(scaledpixmap);
 
@@ -258,6 +260,11 @@
 	updatePixmap(true);
 }
 
+void KMixDockWidget::showEvent ( TQShowEvent * )
+{
+	updatePixmap(true);
+}
+
 void
 KMixDockWidget::mousePressEvent(TQMouseEvent *me)
 {
diff --git a/kmix/kmixdockwidget.h b/kmix/kmixdockwidget.h
index 2315a08..0899d28 100644
--- a/kmix/kmixdockwidget.h
+++ b/kmix/kmixdockwidget.h
@@ -69,6 +69,7 @@
    void contextMenuAboutToShow( TDEPopupMenu* menu );
    void toggleMinimizeRestore();
    void resizeEvent ( TQResizeEvent * );
+   void showEvent ( TQShowEvent * );
 
  private:
    bool _playBeepOnVolumeChange;