Branch: master

6ee99456 2014-07-07 11:37:01 Timothy Pearson
Fix tderandrtray abort on startup due to oversized tray icon creation when icon widget has not yet been shown
M kcontrol/randr/tderandrtray.cpp
M kcontrol/randr/tderandrtray.h
diff --git a/kcontrol/randr/tderandrtray.cpp b/kcontrol/randr/tderandrtray.cpp
index 31615b3..32f6f39 100644
--- a/kcontrol/randr/tderandrtray.cpp
+++ b/kcontrol/randr/tderandrtray.cpp
@@ -54,9 +54,9 @@
 	, m_popupUp(false)
 	, m_help(new KHelpMenu(this, TDEGlobal::instance()->aboutData(), false, actionCollection()))
 {
-  TDEPopupMenu *help = m_help->menu();
-  help->connectItem(KHelpMenu::menuHelpContents, this, TQT_SLOT(slotHelpContents()));
-  setPixmap(KSystemTray::loadSizedIcon("randr", width()));
+	TDEPopupMenu *help = m_help->menu();
+	help->connectItem(KHelpMenu::menuHelpContents, this, TQT_SLOT(slotHelpContents()));
+	setPixmap(KSystemTray::loadIcon("randr"));
 	setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
 	connect(this, TQT_SIGNAL(quitSelected()), this, TQT_SLOT(_quit()));
 	TQToolTip::add(this, i18n("Screen resize & rotate"));
@@ -113,7 +113,7 @@
 	exit(0);
 }
 
-void KRandRSystemTray::resizeEvent ( TQResizeEvent * )
+void KRandRSystemTray::resizeTrayIcon ()
 {
 	// Honor Free Desktop specifications that allow for arbitrary system tray icon sizes
 	TQPixmap origpixmap;
@@ -126,6 +126,18 @@
 	setPixmap(scaledpixmap);
 }
 
+void KRandRSystemTray::resizeEvent ( TQResizeEvent * )
+{
+	// Honor Free Desktop specifications that allow for arbitrary system tray icon sizes
+	resizeTrayIcon();
+}
+
+void KRandRSystemTray::showEvent ( TQShowEvent * )
+{
+	// Honor Free Desktop specifications that allow for arbitrary system tray icon sizes
+	resizeTrayIcon();
+}
+
 void KRandRSystemTray::mousePressEvent(TQMouseEvent* e)
 {
 	// Popup the context menu with left-click
diff --git a/kcontrol/randr/tderandrtray.h b/kcontrol/randr/tderandrtray.h
index 5425706..09a1b26 100644
--- a/kcontrol/randr/tderandrtray.h
+++ b/kcontrol/randr/tderandrtray.h
@@ -63,6 +63,7 @@
 protected:
 	void mousePressEvent( TQMouseEvent *e );
 	void resizeEvent ( TQResizeEvent * );
+	void showEvent ( TQShowEvent * );
 
 private:
 	void populateMenu(TDEPopupMenu* menu);
@@ -71,6 +72,7 @@
 	int GetHackResolutionParameter();
 	void findPrimaryDisplay();
 	void reloadDisplayConfiguration();
+	void resizeTrayIcon();
 
 	bool m_popupUp;
 	KHelpMenu* m_help;