Sophie

Sophie

distrib > Mandriva > 2009.0 > i586 > by-pkgid > 901b66721cd8b67ee1adbc6604574c15 > files > 49

kdebase-3.5.10-6mdv2009.0.src.rpm

diff -u -r --exclude='*~' kdebase-3.5.8.kick/kcontrol/kicker/menutab.ui kdebase-3.5.8/kcontrol/kicker/menutab.ui
--- kdebase-3.5.8.kick/kcontrol/kicker/menutab.ui	2007-12-14 15:49:43.000000000 -0200
+++ kdebase-3.5.8/kcontrol/kicker/menutab.ui	2007-12-14 15:53:09.000000000 -0200
@@ -41,7 +41,7 @@
                 <widget class="QComboBox">
                     <item>
                         <property name="text">
-                            <string>SUSE</string>
+                            <string>Mandriva Kickoff</string>
                         </property>
                     </item>
                     <item>
diff -u -r --exclude='*~' kdebase-3.5.8.kick/kicker/kicker/ui/appletop_mnu.cpp kdebase-3.5.8/kicker/kicker/ui/appletop_mnu.cpp
--- kdebase-3.5.8.kick/kicker/kicker/ui/appletop_mnu.cpp	2007-12-14 15:49:40.000000000 -0200
+++ kdebase-3.5.8/kicker/kicker/ui/appletop_mnu.cpp	2007-12-14 15:54:26.000000000 -0200
@@ -169,7 +169,7 @@
         }
 
         if (KickerSettings::legacyKMenu()) 
-          insertItem(SmallIcon("suse"), i18n("Switch to SUSE Menu Style"), this, SLOT(toggleLegacy()));
+          insertItem(SmallIcon("menuk-mdk"), i18n("Switch to Kickoff Menu Style"), this, SLOT(toggleLegacy()));
         else
           insertItem(SmallIcon("about_kde"), i18n("Switch to KDE Menu Style"), this, SLOT(toggleLegacy()));
     }
diff -u -r --exclude='*~' kdebase-3.5.8.kick/kicker/kicker/ui/k_new_mnu.cpp kdebase-3.5.8/kicker/kicker/ui/k_new_mnu.cpp
--- kdebase-3.5.8.kick/kicker/kicker/ui/k_new_mnu.cpp	2007-12-14 15:49:40.000000000 -0200
+++ kdebase-3.5.8/kicker/kicker/ui/k_new_mnu.cpp	2007-12-14 15:55:30.000000000 -0200
@@ -1405,7 +1405,7 @@
 void KMenu::slotOpenHomepage()
 {
     accept();
-    kapp->invokeBrowser("http://opensuse.org");
+    kapp->invokeBrowser("http://www.mandriva.com");
 }
 
 void KMenu::slotLogout()
diff -u -r --exclude='*~' kdebase-3.5.8.kick/kicker/libkicker/kickerSettings.kcfg kdebase-3.5.8/kicker/libkicker/kickerSettings.kcfg
--- kdebase-3.5.8.kick/kicker/libkicker/kickerSettings.kcfg	2007-12-14 15:49:40.000000000 -0200
+++ kdebase-3.5.8/kicker/libkicker/kickerSettings.kcfg	2007-12-14 15:54:41.000000000 -0200
@@ -104,12 +104,12 @@
    </entry>
 
 <entry name="OpenOnHover" type="Bool" >
-      <label>When this option is enabled, the SUSE Menu does open on mouse hover.</label>
+      <label>When this option is enabled, the Kickoff Menu does open on mouse hover.</label>
       <default>true</default>
    </entry>
 
 <entry name="ScrollFlipView" type="Bool" >
-      <label>When this option is enabled, the SUSE Menu application view switching will scroll.</label>
+      <label>When this option is enabled, the Kickoff Menu application view switching will scroll.</label>
       <default>true</default>
    </entry>
 
--- kdebase-3.5.8/kicker/kicker/ui/kmenubase.ui	2007-12-17 17:33:01.000000000 -0200
+++ kdebase-3.5.8/kicker/kicker/ui/kmenubase.ui.new.ui	2007-12-17 17:45:17.000000000 -0200
@@ -180,22 +180,16 @@
         </property>
         <property name="geometry">
             <rect>
-                <x>20</x>
+                <x>25</x>
                 <y>110</y>
-                <width>407</width>
-                <height>34</height>
+                <width>321</width>
+                <height>26</height>
             </rect>
         </property>
         <hbox>
             <property name="name">
                 <cstring>unnamed</cstring>
             </property>
-            <property name="margin">
-                <number>4</number>
-            </property>
-            <property name="spacing">
-                <number>4</number>
-            </property>
             <widget class="QLabel">
                 <property name="name">
                     <cstring>m_userInfo</cstring>
@@ -224,7 +218,7 @@
                 </property>
                 <property name="sizeHint">
                     <size>
-                        <width>10</width>
+                        <width>70</width>
                         <height>20</height>
                     </size>
                 </property>
@@ -243,7 +237,7 @@
                 </property>
                 <property name="maximumSize">
                     <size>
-                        <width>90</width>
+                        <width>100</width>
                         <height>24</height>
                     </size>
                 </property>
@@ -272,7 +266,7 @@
                 </property>
                 <property name="sizeHint">
                     <size>
-                        <width>14</width>
+                        <width>16</width>
                         <height>20</height>
                     </size>
                 </property>
@@ -280,11 +274,9 @@
         </hbox>
     </widget>
 </widget>
-<customwidgets>
-</customwidgets>
 <images>
     <image name="image0">
-        <data format="XPM.GZ" length="2522">789cdd933d6fdb30104077ff0a21de8c82b12d5bb2507448f6021d0b141dc82369d9116d7d50b1ada2ffbdbca3c4444950244032b4b790efce7cd29de8eb59f4fddbd768763d692cb73b8820e7753493ad31971f3fbffc9a5c6d36d17219c5f36871f56972e57e104dd7324be325a2464cd24cc60a5120a6731eaf046241c879b64e113bc44dcc751223da802bc41de16ac092508a753a4754885922440a8892301332a5e79e10f91c169b0cf1963083345b231a423ee0bec78dc71c51c420393578249432e664be2354d2bd17628d0889cc0447bc20cab9d490205601a9df29e142cd3d9e0933b59234ba0321576b49d3d8f69878bc41544b952a6abf218c9590f41a9c70a5c0e33d21e885a2e1b4883ad1a9de2032420ac20f8affde3df5415bdea7f8b8c0fbed507fa59b0bf02119739f9172b46e755fc819dbf55bd07ba15fef0ec7f6b41f728c0dcf84bbc76ebedfbfde0d2042eb8fdd5b801de5b794281e06f716f7ee710f619d5227a1b01b1d0aeedc18e366660ec7b2ac18ab1d1a9745acd1ad3161f28631dbbb716d86c29112c2f86363770ec20a383a89b51a9a06b4b5503a2c10dd771b46d98cdcac180a052528cc13b781b6bd7759506d5b435541ddb6161cba16c0f5a174383872b3729057c19dbfe06ed16ddab642b7324638b77b870add3eaae76e1fb577db17e7fdcc5d586bcd5fddc59bdda7deed7d83db580a81ee93bb906eefd4ee0fa24201ddda53f9d4ad4ce92605fae466713843614ceddd17b83008d1b06618bd2b5e42de3da70b7019dfc1b2eb3af7e140a9ae7342d3d152babb75ee1a76ea7c9478ea5c92bd3bf6c7a870f6677cdc8cdd7d840bf40ef1cc7dfb716efd81eef78c7fd6fdfbf3e40f51236246</data>
+        <data format="PNG" length="3026">89504e470d0a1a0a0000000d49484452000000640000001408060000007bc0989500000b99494441545885ed98695453d716c7ff37b909098429cc2a881040abe084b476d0656ded60abad565db556fbb47615159fadadadae577d6d5d1d7c4e285a04ada82848d5828a38e080d4591102a24010084308810c10484c6eee791f126888a0be2e7d5debbdfebedc75effe9fbdf73927679f73023c0299478ef1f22f5ecedcbe3325f951f47ff1c7e13c4c70e4d871caddc36dfdc8615193dddddce600f0f92fe4f517bd917b366fa146a3650921e4765939090c0c7ae5cfcee9ff9693a7cfbea268549a880db5464bde99367de59f9dd793442a935352995c2c95c9b90fd0784865f2614f223e9df7dbc544a1402036188d0d26b3a98165490380060e45411232609fbf9f2faf53ec2a12412291c4fca741f2aede9c3d3666f8ee0769a432b9a0ae56fec6ebe39e3ff007faf138e103a85df7c3ea9900b27ad1ac0730fbc38f178edf9eb825ef7106a7452e2e83fb06063ecf582ca0b95c5020202c0b4208bcbdc42000a84e31cd45ffe0e011006800cca30490cae42e7a7ddbd6b7a64ebf907930a3f201d2d9b2f2b20500321fd5f7138202c0afada909eb4da0d56a0e5ccc3fff7c5aeaaefe8f3b38ad54a996b8b8ba5e6a3398783c1e0f4e7c1a7c1e0f7c1e0db5ae0d7c9ef59d47d3a0b91cc4c48c0ac83c7c7472605060d6c861431f65e04244225797b7a7cd589a793063414f02a94cee046099a7582c02e00240f7383bf907200f328e891e7a0cc0653c813c693e8f7743ab5627d2ceae712a8d167c1e0d271eaf6b523a9f4e7ceb333c3c022103420ee8f5fab2d23b65492ccbeea228aa65f0a081bdc5903066332b098f98f3e28457bf3f73f2786d0f9a19168b25c4cf2fa09dcbe506582c96ae8e96c8e4140bbc046016807e00ea00ece151ec6933e1acd069b5192f4447554865722f009f25acff71e5a24fbf7806c0870002001402581b25096ab20f2895c93900de02300dd6936315801d36bdbd6e96d160681408855c008b745a4d119feff48b9340306e5878f026a94c3e9e65d9e0e8a7c27e66183371683b86319b878c18149a0880b57d930088051005a01dc07180da0990d7ef198d16ce4be3c6a2c3605829a42985bedd80668d0e4d6a2d541a2d549d4fdbb726b50e2ab516ed46139c9c5d220202faacf3f1f6ae767171d95e2eab8ce86542428b0a6f3699cd66f5fb1fcc5bea6894cae434802f738e66557a8ac5023fff80be9db6c28a6a8a0536188dc663c7b38f8cd99610ef9475f097f0665553a69121df025898b47573e7aaf324847c3920343cb3beaef6f0b684f821495b369bca6e97ce2084e4ffb831c1db2e260fc05ebdbe2dedf0a103a3b625c4f3b2b37e1dd6aad3e5320cb310bf57690078bbae56beaf51d1909e92bc2d70d58a6543158a8698fabadaaf014402a8b730ccd6597f9bfbac7dbf8a64351c006b772627ce03e06d8b3b8910525870fdda7bc95b377bee4df9d9bdec4ee93f0192cb5ad869a74ee4aca701e0c5b12f68af5cbbf1795080776a794d034c66061dc67be07238e0d1dceeab85df7d0539f179221f6fef79e9e9e9130184036873187389a2beaed5cfdfff5f611111eb26bc3671edc99cec3a3bfbd4966655ffa42d9bbf7d63f2946f060d1e12dc506f357328cebc76bd3e7649ecfcac2b972e7c07a00800993c757ad8f2555fa7393bbbf803a46bf0288ac2e0a8a1cfcd9e3e2551d5a45c0340add5aa5d3f5bfed5251717d12a007136e98a9666d5a4d8b973f6dd292df9114039007cb470f1f0f9b18bf6d3344ddb7720b07fb078ce8c29bb4a4b8a9701d06edc9a3ca5565e633572d83b3c3e3f67fc84573f4949de76a12b175063dbda5aa3d2f7ee5e09a0492a93870248dd96105ffed3a60dab092139008c3ebe7e1ebb330e7ddfa76fbff920a4baeb624851d42fee4241134559fb47080163b1c070cf84567d3bd4ba36346b7450a96d2b48ad85c9ccc06c3460c5f2e5864f3f599204eb12742454d5a4545ecc3fbfcbcddda37efa7bef2fee34d88e965f1ccad85fa651b7ec01a0088b18180a00d20a3907c067fbf7edb97de5d285cf011400b00060b30e66940904c20fd043ad4fddb9e3aaaa49b91a80daf6dec6e17072689afb1200be5426170258bc3d71cbb53ba525cb00dc81b59cb0495b36dde0f3f98b1c7dde921635979614ff04a0c59643175121c100b03e2c7ce0c409af4d1c0800453219002c3d917db446a5541eb44917949614df4bdcbcf13b42c82100060044d5a4d4f0f94e8b288a920176377581c069bcaec3e84bc8fdfb1901606159dc339ba1ef30c06466d0c7478cf3b927c8ab135e3e1a1fbf71a84ea75b65eb581752999c0210daa45456af5eb9c20ce0fbf088411f8d7a66b4af4df28656a319949ab263af4eabad0750e5e7ef1f6a8be90e20fc52fef91c58eb7b37282ea704407db73c094189b4e82400bd835ccde3f1dd013803086118c6e3dce9538700a8eef3cbe19c0160b2ffa668a8d70128bb6f603adb10e43bbbb8144e9b396b110050e00f31994c2fa7ed49c90270d7268bbe7ef5720dcbb2d98eedc73f1bcd00380dd826e4d6ed32b88a5c1737346b7a8bd985bfb7182e302176fedcf205b11f4faaa8a89804a0a217b908805f7555656752fb3d3c3d95f317c42db66daacb330fecafd0a85bf6dbec77dddc3d4201c0b65021100aeb1c9d0200c5b0043dac906695b2b107b999a6690e0021000a20a0b9748f7e6d3ebbf96518a61d80b1173d22c382088075611103678d888ef107b0e4b7bcb38a8ab23bfbed7c5142a1b005d695d11316c036215c2e6760879999a0efe84dfb3bee22676cdcb0fecce9dcdce18490a38ec93bd08765596151414115004449824c00d684470cfab8b2a2fcddd656ddb0bdbb76a6c17a7202802a2f2f6f3f00ae005a01544d9af2cee01e3d733903603d4575a3bdbdfdde03f2a100dca5699e7ece871ff5762c1c05ebe5b00b8661183894aa1e1c6789c55eaa854b967ec5b2ecbb697b52ce02b86927291c1c3954221008f98e6d4befd601c073806d428442619ca245db55be381c0a9e6eaee8ebebedd8167c9a86d96c2e05d0f1a0046d846ad42d06bdbeadc1eedb1eb197575bdf7e81c9477e3d2853362ad2ec6c953e7e7e6e007ca3244116009b9e7b61eccc5f737225f64e8b2be54e003602e0a13b0484b078005192a00e0049af4c7c3336ebc4193f7b9b54267705b016dd4f5956bf0fb99b444a82cc00e247c63c1d5b5870bdedeaa58ba9e85ec213070d1ed2273d2bfb7dfb76b7aaaac0b0ec4200c30180aeaaa911b9b9bacee4d12d9004f581ab50006d7313ae5cbec4ba7bb8ab473d3bc6bb58568dcebd85cfa3a152a91e5edbac489a948d1d00baca489424c82495c9d7582c968dbb77246700a8b6d35779fbf83a8b44a200bd5e5f69347624b0841d132a09cb97cae41b60fdc5051182d8bc33b9be2346c538ae06c781ec91f676fd4a2e97fbf48050c945a94cbe11d68d3d8c101277ec7026ffb537273f70f07b8302765114b53263ef9e2b84907c7b9b49db546ae4382dee1f3c20412a938f04900d806fb1605a437dddebca46452300d01c8ac3debc59a02c2c2c742f2c2cac2e2828c8bb5d5a9a67b158f22323236b939222d68d7c4ab2e8e6ed4a5858163c9a8642a1503f4a823aadb6e554ceb17ad84d888d5da9293bc6291aeaf7397c2f2f2d29bee1e5edd34fafd72366c840cb5b53a7cf7c61dc8babfc03023ef1f0143bb734ab0cc78f1ea9ce484b5dbeef40d6d4aacacacedade7af3fab5eb6686b96f30cd6653c9f5ab97959defa3873e65983d77fec411a362d6f807f4f9cad5cdcda951d1d071f8d081b233a74ec4078784febd51d1c000405dadfcfaade22257079755d72e5fac768c1329096adbb177ff8ae3d947b47038184447470340f2373facd5f60b0cfac6d7df7fa6d168b05cbb7ca9e9e76d3f6ddeb035495f5c74735aa75e0ceb2db827a8737979ffa8a957580e9e3a4f2aee5613b1583ca717ad235c00bee8f9972be8a58d1bac870147bc013c0320daa601aca726773b4de749ca110ad6db784fffe00600180d60845d5b11acfb18602d8bf7d76ec00b0e7b8d5d2cc752ea8800d612351a40e745b873ac1ecef0e1c371f6dcb9f92d1a8da9aaba9a080482371fa9e15f3c59d2d3d327c7c5c529000cfab373f95fe5dfa0b20f2d047058ae0000000049454e44ae426082</data>
     </image>
 </images>
 <includes>
@@ -296,5 +288,6 @@
 <layoutdefaults spacing="6" margin="11"/>
 <includehints>
     <includehint>kcombobox.h</includehint>
+    <includehint>klineedit.h</includehint>
 </includehints>
 </UI>
diff -u -r -N kdebase-3.5.8.orig/kicker/kicker/ui/k_mnu.cpp kdebase-3.5.8/kicker/kicker/ui/k_mnu.cpp
--- kdebase-3.5.8.orig/kicker/kicker/ui/k_mnu.cpp	2007-03-07 15:46:02.000000000 -0400
+++ kdebase-3.5.8/kicker/kicker/ui/k_mnu.cpp	2008-01-07 14:24:27.000000000 -0400
@@ -44,6 +44,7 @@
 #include <kmessagebox.h>
 #include <kstandarddirs.h>
 #include <kwin.h>
+#include <popupmenutop.h>
 
 #include "client_mnu.h"
 #include "container_base.h"
@@ -106,7 +107,7 @@
 
 bool PanelKMenu::loadSidePixmap()
 {
-    if (!KickerSettings::useSidePixmap())
+    if (!KickerSettings::useSidePixmap() || KickerSettings::useTopSide())
     {
         return false;
     }
@@ -601,6 +602,10 @@
         bool bSeparator = KickerSettings::showMenuTitles();
         int nId = serviceMenuEndId() + 1;
         int nIndex = KickerSettings::showMenuTitles() ? 1 : 0;
+		bool bTitleTop = KickerSettings::useTopSide();
+		
+		if( bTitleTop )
+			nIndex = KickerSettings::showMenuTitles() ? 2 : 0;
 
         for (QValueList<QString>::ConstIterator it =
              RecentApps.fromLast(); /*nop*/; --it)
@@ -620,6 +625,12 @@
                             RecentlyLaunchedApps::the().caption(), font()),
                         serviceMenuEndId(), 0);
                     setItemEnabled( id, false );
+		
+					if( bTitleTop)
+					{
+						id = insertItem(new PopupMenuTop(),serviceMenuEndId(),0);
+						setItemEnabled( id, false );
+					}
                 }
                 insertMenuItem(s, nId++, nIndex);
                 RecentlyLaunchedApps::the().m_nNumMenuItems++;
@@ -635,6 +646,11 @@
         {
             insertSeparator(RecentlyLaunchedApps::the().m_nNumMenuItems);
         }
+		} 
+       else if(KickerSettings::useTopSide()) {
+			int id = insertItem(new PopupMenuTop(),serviceMenuEndId(),0);
+			setItemEnabled( id, false );
+		
     }
 }
 
@@ -666,6 +682,7 @@
     }
 
     RecentlyLaunchedApps::the().m_bNeedToUpdate = false;
+    bool bTitleTop = KickerSettings::useTopSide();
 
     int nId = serviceMenuEndId() + 1;
 
@@ -674,6 +691,8 @@
     {
         // -1 --> menu title
         int i = KickerSettings::showMenuTitles() ? -1 : 0;
+	if(bTitleTop)
+		i = KickerSettings::showMenuTitles() ? -2 : 0;
         for (; i < RecentlyLaunchedApps::the().m_nNumMenuItems; i++)
         {
             removeItem(nId + i);
@@ -687,6 +706,9 @@
         }
     }
 
+    if(bTitleTop)
+		removeItemAt(0);
+
     // insert new items
     QStringList RecentApps;
     RecentlyLaunchedApps::the().getRecentApps(RecentApps);
@@ -711,9 +733,16 @@
                         RecentlyLaunchedApps::the().caption(),
                             font()), nId - 1, 0);
                     setItemEnabled( id, false );
+
+		    if(bTitleTop)
+		    {
+                    id = insertItem(new PopupMenuTop(),nId - 1,0);
+                    setItemEnabled( id, false );
+		    }
+
                 }
                 insertMenuItem(s, nId++, KickerSettings::showMenuTitles() ?
-                    1 : 0);
+                    2 : 0);
                 RecentlyLaunchedApps::the().m_nNumMenuItems++;
             }
 
@@ -726,6 +755,12 @@
             insertSeparator(RecentlyLaunchedApps::the().m_nNumMenuItems);
         }
     }
+    else if(bTitleTop)
+    {
+            int id = insertItem(new PopupMenuTop(),serviceMenuEndId(),0);
+            setItemEnabled( id, false );
+    }
+
 }
 
 void PanelKMenu::clearRecentMenuItems()
diff -u -r -N kdebase-3.5.8.orig/kicker/kicker/ui/Makefile.am kdebase-3.5.8/kicker/kicker/ui/Makefile.am
--- kdebase-3.5.8.orig/kicker/kicker/ui/Makefile.am	2008-01-07 13:44:54.000000000 -0400
+++ kdebase-3.5.8/kicker/kicker/ui/Makefile.am	2008-01-07 14:17:17.000000000 -0400
@@ -14,7 +14,7 @@
         addextension_mnu.cpp extensionop_mnu.cpp k_mnu_stub.cpp \
         recentapps.cpp browser_dlg.cpp itemview.cpp kickoff_bar.cpp \
         removeapplet_mnu.cpp removeextension_mnu.cpp removecontainer_mnu.cpp \
-        removebutton_mnu.cpp popupmenutitle.cpp hidebutton.cpp \
+        removebutton_mnu.cpp popupmenutitle.cpp hidebutton.cpp popupmenutop.cpp \
         addappletvisualfeedback.cpp flipscrollview.cpp \
 	media_watcher.cpp media_watcher.skel mykickoffsearchinterface.cpp query.cpp
 
diff -u -r -N kdebase-3.5.8.orig/kicker/kicker/ui/popupmenutop.cpp kdebase-3.5.8/kicker/kicker/ui/popupmenutop.cpp
--- kdebase-3.5.8.orig/kicker/kicker/ui/popupmenutop.cpp	1969-12-31 20:00:00.000000000 -0400
+++ kdebase-3.5.8/kicker/kicker/ui/popupmenutop.cpp	2008-01-07 14:15:42.000000000 -0400
@@ -0,0 +1,86 @@
+/*****************************************************************
+
+Copyright (c) 2007 Montel Laurent <lmontel@mandriva.com>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+******************************************************************/
+
+#include "popupmenutop.h"
+#include "kickerSettings.h"
+#include <kstandarddirs.h>
+#include <qimage.h>
+#include <kdebug.h>
+
+PopupMenuTop::PopupMenuTop() : 
+        QCustomMenuItem()
+{
+  init();
+}
+
+void PopupMenuTop::init()
+{
+  QString sideName = KickerSettings::sideTopPixmapName();
+  QString sideTileName = KickerSettings::sideTopTileName();
+  //kdDebug()<<" sideName :"<<sideName<<endl;
+  //kdDebug()<<" sideTileName : "<<sideTileName<<endl;
+  QImage image;
+  image.load(locate("data", "kicker/pics/" + sideName));
+
+  sidePixmap.convertFromImage(image);
+  image.load(locate("data", "kicker/pics/" + sideTileName));
+  
+  if (image.isNull())
+    {
+      kdDebug(1210) << "Can't find a side tile pixmap" << endl;
+      return;
+    }
+  sideTilePixmap.convertFromImage(image);
+  
+  if (sidePixmap.height() != sideTilePixmap.height())
+    {
+      kdDebug(1210) << "Pixmaps have to be the same size" << endl;
+      return;
+    }
+  if (sideTilePixmap.width() < 100)
+    {
+      int tiles = (int)(100 / sideTilePixmap.width()) + 1;
+      QPixmap preTiledPixmap(sideTilePixmap.width()*tiles, sideTilePixmap.height());
+      QPainter p2(&preTiledPixmap);
+      p2.drawTiledPixmap(preTiledPixmap.rect(), sideTilePixmap);
+      sideTilePixmap = preTiledPixmap;
+    }
+}
+
+void PopupMenuTop::paint(QPainter* p, const QColorGroup& cg, 
+	   bool /* act */, bool /*enabled*/, 
+	   int x, int y, int w, int h)
+{
+  //kdDebug()<<" PopupMenuTop::paint\n";
+  p->save();
+  p->drawPixmap( x,y, sidePixmap );
+  p->drawTiledPixmap(QRect(x+sidePixmap.width(),y,w,h),sideTilePixmap);
+  p->restore();
+}
+
+QSize PopupMenuTop::sizeHint()
+{
+  QSize size = QSize(50,sideTilePixmap.height());
+  return size;
+}
+
diff -u -r -N kdebase-3.5.8.orig/kicker/kicker/ui/popupmenutop.h kdebase-3.5.8/kicker/kicker/ui/popupmenutop.h
--- kdebase-3.5.8.orig/kicker/kicker/ui/popupmenutop.h	1969-12-31 20:00:00.000000000 -0400
+++ kdebase-3.5.8/kicker/kicker/ui/popupmenutop.h	2008-01-07 14:16:31.000000000 -0400
@@ -0,0 +1,54 @@
+/*****************************************************************
+
+Copyright (c) 2007 Montel Laurent <lmontel@mandriva.com>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+******************************************************************/
+
+#ifndef POPUPMENUTOP_H
+#define POPUPMENUTOP_H
+
+#include <qfont.h>
+#include <qstring.h>
+#include <qstyle.h>
+#include <qpainter.h>
+#include <qmenudata.h>
+
+#include <kapplication.h>
+
+class PopupMenuTop : public QCustomMenuItem
+{
+public:
+    PopupMenuTop();
+
+    bool fullSpan () const { return true; }
+
+    QSize sizeHint();
+
+    void paint(QPainter* p, const QColorGroup& cg, 
+	   bool /* act */, bool /*enabled*/, 
+	       int x, int y, int w, int h);
+ private:
+    void init();
+     QPixmap sidePixmap;
+     QPixmap sideTilePixmap;
+};
+
+#endif
+
diff -u -r -N kdebase-3.5.8.orig/kicker/libkicker/kickerSettings.kcfg kdebase-3.5.8/kicker/libkicker/kickerSettings.kcfg
--- kdebase-3.5.8.orig/kicker/libkicker/kickerSettings.kcfg	2008-01-07 13:44:54.000000000 -0400
+++ kdebase-3.5.8/kicker/libkicker/kickerSettings.kcfg	2008-01-07 14:14:50.000000000 -0400
@@ -331,6 +331,21 @@
       <label>Use side image in Kmenu</label>
       <default>true</default>
    </entry>
+   
+<entry name="UseTopSide" type="Bool" >
+      <label>Use side image on top of Kmenu</label>
+      <default>true</default>
+   </entry>
+
+<entry name="SideTopPixmapName" key="SideTopName" type="String" >
+      <label>The name of the file to use as the side image in the K Menu</label>
+      <default>kside_top.png</default>
+   </entry>
+
+<entry name="SideTopTileName" key="SideTopTileName" type="String" >
+      <label>The name of the file used as a tile to fill the height of K Menu that SidePixmapName does not cover</label>
+      <default>kside_top_tile.png</default>
+   </entry>
 
 <entry name="SidePixmapName" key="SideName" type="String" >
       <label>The name of the file to use as the side image in the K Menu</label>
diff -u -r -N kdebase-3.5.8.orig/kicker/kicker/buttons/kbutton.cpp kdebase-3.5.8/kicker/kicker/buttons/kbutton.cpp
--- kdebase-3.5.8.orig/kicker/kicker/buttons/kbutton.cpp	2008-01-07 14:27:59.000000000 -0400
+++ kdebase-3.5.8/kicker/kicker/buttons/kbutton.cpp	2008-01-07 14:38:05.000000000 -0400
@@ -26,7 +26,15 @@
 #include <klocale.h>
 #include <kapplication.h>
 #include <kdebug.h>
-
+#include <kiconloader.h>
+#include <qimage.h>
+#include <qpixmap.h>
+#include <krootpixmap.h>
+#include <qcolor.h>
+#include <qpainter.h>
+#include <qdragobject.h>
+#include <kglobalsettings.h>
+ 
 #include "kickerSettings.h"
 
 #include "config.h"
@@ -46,13 +54,21 @@
 
     setPopup(MenuManager::the()->kmenu()->widget());
     MenuManager::the()->registerKButton(this);
-    setIcon("kmenu");
 
+    KConfig* config = KGlobal::config();
+    config->setGroup("KMenu");
+    QString iconname = config->readEntry( "KMenuIcon", "kmenu" );
+    //if( QApplication::reverseLayout() && orientation() == Horizontal )
+    //      iconname += iconname.append( "-rtl" );
+    setIcon( iconname,
+          config->readBoolEntry( "KMenuButtonScale", true ) );
+    setButtonRotation( config->readBoolEntry( "KMenuButtonRotate", false ) );
+ 
     if (KickerSettings::showKMenuText())
     {
         setButtonText(KickerSettings::kMenuText());
-        setFont(KickerSettings::buttonFont());
-        setTextColor(KickerSettings::buttonTextColor());
+        setTextColor( KickerSettings::kMenuTextColor() );
+        setTextFont( KickerSettings::kMenuTextFont() );
     }
 }
 
diff -u -r -N kdebase-3.5.8.orig/kicker/kicker/core/container_button.cpp kdebase-3.5.8/kicker/kicker/core/container_button.cpp
--- kdebase-3.5.8.orig/kicker/kicker/core/container_button.cpp	2008-01-07 14:27:59.000000000 -0400
+++ kdebase-3.5.8/kicker/kicker/core/container_button.cpp	2008-01-07 14:38:34.000000000 -0400
@@ -387,9 +387,6 @@
 
 int KMenuButtonContainer::heightForWidth( int width ) const
 {
-    if ( width < 32 )
-        return width + 10;
-    else
         return ButtonContainer::heightForWidth(width);
 }
 
diff -u -r -N kdebase-3.5.8.orig/kicker/libkicker/global.cpp kdebase-3.5.8/kicker/libkicker/global.cpp
--- kdebase-3.5.8.orig/kicker/libkicker/global.cpp	2006-03-16 22:14:46.000000000 -0400
+++ kdebase-3.5.8/kicker/libkicker/global.cpp	2008-01-07 14:39:08.000000000 -0400
@@ -156,7 +156,7 @@
 
 int maxButtonDim()
 {
-    return (2 * KickerSettings::iconMargin()) + KIcon::SizeLarge;
+    return (2 * KickerSettings::iconMargin()) + KIcon::SizeHuge;
 }
 
 QString newDesktopFile(const KURL& url)
diff -u -r -N kdebase-3.5.8.orig/kicker/libkicker/kickerSettings.kcfg kdebase-3.5.8/kicker/libkicker/kickerSettings.kcfg
--- kdebase-3.5.8.orig/kicker/libkicker/kickerSettings.kcfg	2008-01-07 14:27:59.000000000 -0400
+++ kdebase-3.5.8/kicker/libkicker/kickerSettings.kcfg	2008-01-07 14:41:19.000000000 -0400
@@ -367,6 +367,26 @@
       <default code="true">i18n("Applications")</default>
    </entry>
 
+<entry name="KMenuTextRelativeXPos" key="TextRelativeXPos" type="UInt" >
+      <label>Relative horizontal position of text</label>
+      <default>0</default>
+</entry>
+
+<entry name="KMenuTextRelativeYPos" key="TextRelativeYPos" type="UInt" >
+      <label>Relative Vertical position of text</label>
+      <default>0</default>
+</entry>
+
+<entry name="KMenuTextFont" key="TextFont" type="Font" >
+      <label>Font for the buttons with text.</label>
+      <default code="true">KGlobalSettings::generalFont()</default>
+</entry>
+
+<entry name="KMenuTextColor" key="TextColor" type="Color" >
+      <label>Text color for the buttons.</label>
+      <default code="true">KGlobalSettings::textColor()</default>
+</entry>
+ 
 </group>
 
 <group name="buttons" >
@@ -421,6 +441,12 @@
       <label>Font for the buttons with text.</label>
       <default code="true">KGlobalSettings::generalFont()</default>
    </entry>
+   
+   <entry name="ButtonTextFont" key="TextFont" type="Font" >
+      <label>Font for the buttons with text.</label>
+      <default code="true">KGlobalSettings::generalFont()</default>
+   </entry>
+
 
 <entry name="ButtonTextColor" key="TextColor" type="Color" >
       <label>Text color for the buttons.</label>
diff -u -r -N kdebase-3.5.8.orig/kicker/libkicker/panelbutton.cpp kdebase-3.5.8/kicker/libkicker/panelbutton.cpp
--- kdebase-3.5.8.orig/kicker/libkicker/panelbutton.cpp	2008-01-07 14:27:59.000000000 -0400
+++ kdebase-3.5.8/kicker/libkicker/panelbutton.cpp	2008-01-07 15:18:17.000000000 -0400
@@ -41,6 +41,7 @@
 #include <kicontheme.h>
 #include <kipc.h>
 #include <kstandarddirs.h>
+#include <kiconeffect.h>
 #include <klocale.h>
 #include <kdebug.h>
 
@@ -64,12 +65,13 @@
       m_highlight(false),
       m_changeCursorOverItem(true),
       m_hasAcceptedDrag(false),
+      m_scaleButton(false),
+      m_rotateButton(false),
       m_arrowDirection(KPanelExtension::Bottom),
       m_popupDirection(KPanelApplet::Up),
       m_iconAlignment(AlignCenter),
       m_orientation(Horizontal),
-      m_size((KIcon::StdSizes)-1),
-      m_fontPercent(0.40)
+      m_size((KIcon::StdSizes)-1)
 {
     KGlobal::locale()->insertCatalogue("libkicker");
     calculateIconSize();
@@ -77,6 +79,8 @@
 
     m_textColor = KGlobalSettings::textColor();
 
+	m_textFont = KickerSettings::kMenuTextFont();
+
     updateSettings(KApplication::SETTINGS_MOUSE);
 
     kapp->addKipcEventMask(KIPC::SettingsChanged | KIPC::IconChanged);
@@ -272,7 +276,26 @@
 // return the dimension that the button wants to be for a given panel dimension (panelDim)
 int PanelButton::preferredDimension(int panelDim) const
 {
-    // determine the upper limit on the size.  Normally, this is panelDim,
+    QString nm = m_iconName;
+	
+	if (nm != "menuk-mdk")
+	{
+	 	int newSize = panelDim;
+	 
+		if ( KickerSettings::conserveSpace() )
+	 	{
+	  		int preferred = preferredIconSize( panelDim );
+	  		if ( preferred > 0 )
+	   			newSize = QMIN( panelDim, preferred + ( KDialog::spacingHint() * 2 ) );
+	 	}
+	 	
+		if ( m_rotateButton )
+	 		return QMAX( newSize, QMAX( m_icon.width(), m_icon.height() ) );
+	 	else
+	 		return QMAX( newSize, orientation() == Horizontal ? m_icon.width() : m_icon.height() ) ;
+	}	
+
+	// determine the upper limit on the size.  Normally, this is panelDim,
     // but if conserveSpace() is true, we restrict size to comfortably fit the icon
     if (KickerSettings::conserveSpace())
     {
@@ -288,7 +311,12 @@
 
 int PanelButton::widthForHeight(int height) const
 {
-    int rc = preferredDimension(height);
+    QString nm = m_iconName;
+	
+	if (nm != "menuk-mdk")
+	 	return preferredDimension(height);
+
+	int rc = preferredDimension(height);
 
     // we only paint the text when horizontal, so make sure we're horizontal
     // before adding the text in here
@@ -331,6 +359,17 @@
     m_title = t;
 }
 
+void PanelButton::setButtonRotation( bool r )
+{
+   m_rotateButton = r;
+}
+
+void PanelButton::setIcon(const QString& icon, bool scale )
+{
+    m_scaleButton = scale;
+    setIcon( icon );
+}
+
 void PanelButton::setIcon(const QString& icon)
 {
     if (icon == m_iconName)
@@ -356,7 +395,7 @@
 
 void PanelButton::setButtonText(const QString& text)
 {
-    m_buttonText = text;
+    m_buttonText = i18n( text.latin1() );
     update();
 }
 
@@ -375,14 +414,14 @@
     return m_textColor;
 }
 
-void PanelButton::setFontPercent(double p)
+void PanelButton::setTextFont(const QFont& f)
 {
-    m_fontPercent = p;
+    m_textFont = f;
 }
 
-double PanelButton::fontPercent() const
+QFont PanelButton::textFont() const
 {
-    return m_fontPercent;
+    return m_textFont;
 }
 
 KPanelExtension::Orientation PanelButton::orientation() const
@@ -554,62 +593,144 @@
     QPixmap icon = labelIcon();
     bool active = isDown() || isOn();
 
+    QString nm = m_iconName;
+	
     if (active)
-    {
         icon = icon.convertToImage().smoothScale(icon.width() - 2,
                                                  icon.height() - 2);
-    }
 
     int y = 0;
-    if (m_iconAlignment & AlignVCenter) 
-        y = (height() - icon.height()) / 2;
-    else if (m_iconAlignment & AlignBottom)
-        y = (height() - icon.height());
+    int w = width();
+    int h = height();
+    int x = (w - icon.width()) / 2;
 
-    if (!m_buttonText.isEmpty() && orientation() == Horizontal)
+    if ( nm=="menuk-mdk" )
     {
-        int h = height();
-        int w = width();
-        p->save();
-        QFont f = font();
+        if ( m_iconAlignment & AlignVCenter )
+			y = ( height() - icon.height() ) / 2;
+		else if ( m_iconAlignment & AlignBottom )
+			y = ( height() - icon.height() );
+	}
 
-        double fontPercent = m_fontPercent;
-        if (active)
+	if ( ! m_scaleButton )
+        y = ( h - icon.height() ) / 2;
+
+	int relx = KickerSettings::kMenuTextRelativeXPos();
+    int rely = KickerSettings::kMenuTextRelativeYPos();
+
+    if ( !m_buttonText.isEmpty() )
+    {
+        // We always rotate button when apply text
+        m_rotateButton = true;
+        if ( orientation() == Vertical)
         {
-            fontPercent *= .8;
+            x = 0;
+            y = m_scaleButton ? 
+                0 - icon.height() :
+                0 - w + ( ( w - icon.height() ) / 2 ) + 2; 
+            p->rotate( 90 );
         }
-        f.setPixelSize(KMIN(h, KMAX(int(float(h) * m_fontPercent), 16)));
+        p->save();
+        
+        QFont f = m_textFont;
         QFontMetrics fm(f);
+
+        // Test possible text size to see if fits on bitmap size plus 
+        // possible relx diference. If not reduce font size
+        if ( orientation() == Horizontal )
+        {
+            while ( fm.width( m_buttonText, m_buttonText.length() ) > ( w - relx - 8 ) )
+            {
+                if ( ( f.pointSize() -1 ) <= 0  )
+                {
+                    break;
+                }
+                f.setPointSize( f.pointSize() - 1 );
+                fm = QFontMetrics( f );
+            }
+        }
+        else
+        {
+            while ( fm.width( m_buttonText, m_buttonText.length() ) > ( h - relx - 8 ) )
+            {
+                if ( ( f.pointSize() -1 ) <= 0  )
+                {
+                    break;
+                }
+                f.setPointSize( f.pointSize() -1 );
+                fm = QFontMetrics( f );
+            }
+        }
+
         p->setFont(f);
 
         /* Draw shadowed text */
         bool reverse = QApplication::reverseLayout();
         QPainter::TextDirection rtl = reverse ? QPainter::RTL : QPainter::LTR;
 
-        if (!reverse && !icon.isNull())
+        if ( !icon.isNull() )
         {
-            /* Draw icon */
-            p->drawPixmap(3, y, icon);
+   			if ( !reverse || orientation() == Vertical )
+   				p->drawPixmap(x, y, icon);
+   			else
+   				p->drawPixmap(w - icon.width(), y, icon);
+		}
+
+        int tX = icon.width() + KMIN( 25, KMAX( 5, fm.width( 'm' ) / 2 ) );
+        if ( relx > 0 )
+        {
+            tX = orientation() == Vertical ?
+                ( ( h * relx ) / 100 ) + 2 :
+                ( ( w * relx ) / 100 ) + 2;
         }
 
-        int tX = reverse ? 3 : icon.width() + KMIN(25, KMAX(5, fm.width('m') / 2));
-        int tY = fm.ascent() + ((h - fm.height()) / 2);
+        int tY = fm.ascent() + ( ( h - fm.height() ) / 2 );
+        if ( orientation() == Vertical)
+        {
+            tY = m_scaleButton ?
+                0 - ( w / 2 ) + ( fm.height() /4 ) : 
+                0 - ( w - icon.height() ) /2 - ( icon.height() - fm.height() ) / 2 - fm.height()/4;
+        }
+       
+        if ( rely > 0 )
+        {
+            tY = orientation() == Vertical ?
+                0 - w + ( w * rely ) /100 + fm.height() / 2:
+                ( ( h * rely ) /100 ) + fm.height() / 2;
+        }
 
         QColor shadCol = KickerLib::shadowColor(m_textColor);
 
         // get a transparent pixmap
         QPainter pixPainter;
-        QPixmap textPixmap(w, h);
+        QPixmap textPixmap;
 
+        if ( ! m_scaleButton && orientation() == Horizontal )
+        {
+            textPixmap = QPixmap( icon.width(), icon.height() );
+        }
+        else if ( ! m_scaleButton )
+        {
+            textPixmap = QPixmap( icon.height(), icon.width() );
+        }
+        else if ( orientation() == Horizontal )
+        {
+            textPixmap = QPixmap(w, h);
+        }
+        else 
+        {
+            textPixmap = QPixmap(h, w);
+        }
+ 
         textPixmap.fill(QColor(0,0,0));
         textPixmap.setMask(textPixmap.createHeuristicMask(true));
 
         // draw text
         pixPainter.begin(&textPixmap);
-        pixPainter.setPen(m_textColor);
-        pixPainter.setFont(p->font()); // get the font from the root painter
-        pixPainter.drawText(tX, tY, m_buttonText, -1, rtl);
-        pixPainter.end();
+        pixPainter.setPen( m_textColor );
+        pixPainter.setFont( f ); // get the font from the root painter
+        pixPainter.drawText( tX, orientation() == Horizontal ? tY : width() + tY + 1, m_buttonText, -1, rtl);
+		pixPainter.end();
 
         if (!s_textShadowEngine)
         {
@@ -617,32 +738,45 @@
             shadset->setOffsetX(0);
             shadset->setOffsetY(0);
             shadset->setThickness(1);
-            shadset->setMaxOpacity(96);
+            shadset->setMaxOpacity(64);
             s_textShadowEngine = new KShadowEngine(shadset);
         }
 
         // draw shadow
         QImage img = s_textShadowEngine->makeShadow(textPixmap, shadCol);
-        p->drawImage(0, 0, img);
+        p->drawImage( 0, orientation() == Horizontal ? 0 : 0 - w, img);
         p->save();
-        p->setPen(m_textColor);
-        p->drawText(tX, tY, m_buttonText, -1, rtl);
+        p->setPen( m_textColor );
+        p->setFont( f );
+        p->drawText( tX, tY, m_buttonText, -1, rtl);
         p->restore();
 
-        if (reverse && !icon.isNull())
-        {
-            p->drawPixmap(w - icon.width() - 3, y, icon);
-        }
-
         p->restore();
     }
     else if (!icon.isNull())
     {
-        int x = 0;
-        if (m_iconAlignment & AlignHCenter)
-           x = (width()  - icon.width()) / 2;
-        else if (m_iconAlignment & AlignRight)
-           x = (width() - icon.width());
+        if ( orientation() == Vertical && m_rotateButton )
+        {
+            if (  m_scaleButton )
+            {
+                x = 0;
+                y = 0 - icon.height();
+            }
+            else
+            {
+                y = 0 - (  w / 2 ) - (  icon.height() /2 ) + 1;
+            }
+            p->rotate( 90 );
+        }
+
+        if ( nm=="menuk-mdk" )
+        {
+            if ( m_iconAlignment & AlignVCenter )
+                y = ( height() - icon.height() ) / 2;
+            else if ( m_iconAlignment & AlignBottom )
+                y = ( height() - icon.height() );
+        }
+ 
         p->drawPixmap(x, y, icon);
     }
 
@@ -804,7 +938,11 @@
     QString nm = m_iconName;
     KIcon::States defaultState = isEnabled() ? KIcon::DefaultState :
                                                KIcon::DisabledState;
-    if (nm=="kmenu-suse")
+    QSize ref;
+    QImage img;
+    KIconEffect * kfx = new KIconEffect();
+
+	if (nm=="menuk-mdk")
     {
         QString pth = locate( "data", "kicker/pics/kmenu_basic.mng" );
         if (!pth.isEmpty())
@@ -816,7 +954,42 @@
         }
     }
     else
-        m_icon = ldr->loadIcon(nm, KIcon::Panel, m_size, defaultState, 0L, true);
+    {
+        ref = KGlobal::iconLoader()->loadIcon( defaultIcon(), KIcon::Panel, m_size, defaultState).size();
+        img = QImage( KGlobal::iconLoader()->iconPath( nm, KIcon::Panel ) );
+        // Try load default image if bitmap is invalid
+        if ( img.isNull() )
+            img = KGlobal::iconLoader()->loadIcon( defaultIcon(), KIcon::Panel, m_size, defaultState );
+        
+        // again null ? return empty;
+        if ( img.isNull() )
+            return;
+        
+        if ( m_scaleButton )
+        {
+            int h = KMAX( height(), ref.height() );
+            int w = KMAX( width(), ref.width() );
+            
+            if ( img.height() == img.width() )
+            {
+                m_icon = img.smoothScale( h, h );
+            }
+            else
+            {
+                orientation() == Horizontal ? 
+                    m_icon = img.smoothScale( ( img.width() * h ) / img.height(), h ) :
+                    m_icon = img.smoothScale( ( img.width() * w ) / img.height(), w ) ;
+            }
+        }
+        else
+        {
+            orientation() == Horizontal ? 
+                m_icon = img.smoothScale( ( img.width() * ref.height() ) / img.height(), ref.height() ) :
+                m_icon = img.smoothScale( ( img.width() * ref.width() ) / img.height(), ref.width() ) ;
+        }
+    }
+
+
 
     if (m_icon.isNull())
     {
@@ -830,12 +1003,18 @@
     }
     else
     {
-        m_iconh = ldr->loadIcon(nm, KIcon::Panel, m_size,
-                                KIcon::ActiveState, 0L, true);
-    }
-
-    m_iconz = ldr->loadIcon(nm, KIcon::Panel, KIcon::SizeHuge,
-                            defaultState, 0L, true );
+        m_iconh = kfx->apply( 
+                m_icon,
+                KIcon::Panel,
+                KIcon::ActiveState );
+    }
+    
+    m_iconz = kfx->apply( 
+            QPixmap( KGlobal::iconLoader()->iconPath( nm, KIcon::SizeHuge ) ),
+            KIcon::Panel,
+            defaultState );
+    
+    delete kfx;
 }
 
 // (re)calculates the icon sizes and report true if they have changed.
diff -u -r -N kdebase-3.5.8.orig/kicker/libkicker/panelbutton.h kdebase-3.5.8/kicker/libkicker/panelbutton.h
--- kdebase-3.5.8.orig/kicker/libkicker/panelbutton.h	2008-01-07 14:27:59.000000000 -0400
+++ kdebase-3.5.8/kicker/libkicker/panelbutton.h	2008-01-07 15:20:46.000000000 -0400
@@ -132,6 +132,13 @@
      */
     void setIcon(const QString& icon);
 
+	/**
+     * Used to set the icon for this panel button without reescale.
+     * @param icon the path to the button's icon
+     * @param scale tell to scale or not button ( default is scale )
+     */
+    void setIcon(const QString& icon, bool scale);
+
     /**
      * @return the button's icon
      */
@@ -164,6 +171,23 @@
      */
     QColor textColor() const;
 
+	/**
+     * Change the button's text label font
+     * @param f the new text label font
+     */
+    void setTextFont(const QFont& f);
+
+    /**
+     * @return the button's text label font
+     */
+    QFont textFont() const;
+
+
+    /** 
+     * Set button to be rotated on vertical oriented panel
+     */
+    void setButtonRotation( bool r );
+
     /**
      * Change the button's text scale
      * @param p font scale (in percent)
@@ -380,8 +404,11 @@
     bool m_highlight;
     bool m_changeCursorOverItem;
     bool m_hasAcceptedDrag;
+    bool m_scaleButton;
+    bool m_rotateButton;
     QColor m_textColor;
     QColor m_tileColor;
+    QFont m_textFont;
     QString m_buttonText;
     QString m_tile;
     QString m_title;
diff -u -r -N kdebase-3.5.8.orig/kicker/kicker/ui/appletop_mnu.cpp kdebase-3.5.8/kicker/kicker/ui/appletop_mnu.cpp
--- kdebase-3.5.8.orig/kicker/kicker/ui/appletop_mnu.cpp	2008-01-07 17:31:27.000000000 -0400
+++ kdebase-3.5.8/kicker/kicker/ui/appletop_mnu.cpp	2008-01-07 17:36:56.000000000 -0400
@@ -172,6 +172,11 @@
           insertItem(SmallIcon("suse"), i18n("Switch to Kickoff Menu Style"), this, SLOT(toggleLegacy()));
         else
           insertItem(SmallIcon("about_kde"), i18n("Switch to KDE Menu Style"), this, SLOT(toggleLegacy()));
+		if (KickerSettings::defaultKButton())
+		   insertItem(SmallIcon("menuk-mdk"), i18n("Switch to Mandriva Button"), this, SLOT(toggleIcon()));
+	    else
+		   insertItem(SmallIcon("about_kde"), i18n("Switch to Default KDE Button"), this, SLOT(toggleIcon()));
+
     }
 
     if ((actions & PanelAppletOpMenu::KMenuEditor) && kapp->authorizeKAction("menuedit"))
@@ -227,4 +232,22 @@
     Kicker::the()->restart();
 }
 
+void PanelAppletOpMenu::toggleIcon()
+{
+	bool legacy = !KickerSettings::defaultKButton();
+
+
+	KickerSettings::setDefaultKButton(legacy);
+	KickerSettings::setShowKMenuText(!legacy);
+	KickerSettings::setKMenuButtonScale(true);
+	KickerSettings::setKMenuButtonRotate(!legacy);
+	if (legacy)
+		KickerSettings::setKMenuIcon("kmenu");
+	else
+		KickerSettings::setKMenuIcon("mdv_kmenu");
+    KickerSettings::writeConfig();
+    Kicker::the()->restart();
+}
+
+
 #include "appletop_mnu.moc"
diff -u -r -N kdebase-3.5.8.orig/kicker/kicker/ui/appletop_mnu.h kdebase-3.5.8/kicker/kicker/ui/appletop_mnu.h
--- kdebase-3.5.8.orig/kicker/kicker/ui/appletop_mnu.h	2008-01-07 17:31:27.000000000 -0400
+++ kdebase-3.5.8/kicker/kicker/ui/appletop_mnu.h	2008-01-07 17:34:39.000000000 -0400
@@ -49,6 +49,7 @@
 
 protected slots:
     void toggleLegacy();
+    void toggleIcon();
 
 protected:
     void keyPressEvent(QKeyEvent* e);
diff -u -r -N kdebase-3.5.8.orig/kicker/libkicker/kickerSettings.kcfg kdebase-3.5.8/kicker/libkicker/kickerSettings.kcfg
--- kdebase-3.5.8.orig/kicker/libkicker/kickerSettings.kcfg	2008-01-07 17:31:27.000000000 -0400
+++ kdebase-3.5.8/kicker/libkicker/kickerSettings.kcfg	2008-01-07 17:34:07.000000000 -0400
@@ -107,6 +107,11 @@
       <label>When this option is enabled, the Kickoff Menu does open on mouse hover.</label>
       <default>true</default>
    </entry>
+   
+<entry name="DefaultKButton" type="Bool" >
+      <label>When this option is enabled, the classic K Menu button is used.</label>
+      <default>false</default>
+   </entry>
 
 <entry name="ScrollFlipView" type="Bool" >
       <label>When this option is enabled, the Kickoff Menu application view switching will scroll.</label>
@@ -366,6 +371,21 @@
       <label>Text to be shown on K Menu Button</label>
       <default code="true">i18n("Applications")</default>
    </entry>
+   
+<entry name="KMenuIcon" key="KMenuIcon" type="String" >
+      <label>Icon to be shown on K Menu Button</label>
+      <default>kmenu</default>
+</entry>
+
+<entry name="KMenuButtonRotate" key="KMenuButtonRotate" type="Bool" >
+      <label>Enable rotation in the K Menu Button</label>
+      <default>true</default>
+</entry>
+
+<entry name="KMenuButtonScale" key="KMenuButtonScale" type="Bool" >
+      <label>Enable scaling in the K Menu Button</label>
+      <default>true</default>
+</entry>
 
 <entry name="KMenuTextRelativeXPos" key="TextRelativeXPos" type="UInt" >
       <label>Relative horizontal position of text</label>
diff -u -r kdebase-3.5.8.orig/kicker/libkicker/kickerSettings.kcfg kdebase-3.5.8/kicker/libkicker/kickerSettings.kcfg
--- kdebase-3.5.8.orig/kicker/libkicker/kickerSettings.kcfg	2008-01-08 16:37:04.000000000 -0400
+++ kdebase-3.5.8/kicker/libkicker/kickerSettings.kcfg	2008-01-08 16:38:27.000000000 -0400
@@ -100,7 +100,7 @@
 
 <entry name="LegacyKMenu" type="Bool" >
       <label>When this option is enabled, the classic K Menu is used.</label>
-      <default>false</default>
+      <default>true</default>
    </entry>
 
 <entry name="OpenOnHover" type="Bool" >