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" >