--- kdebase/kicker/kicker/buttons/knewbutton.cpp.ORI 2011-12-08 21:15:57.551323941 +0100 +++ kdebase/kicker/kicker/buttons/knewbutton.cpp 2011-12-08 21:22:05.216346827 +0100 @@ -55,26 +55,26 @@ : KButton( parent ), m_oldPos(0,0) { + setTitle(i18n("K Menu")); Q_ASSERT( !m_self ); m_self = this; - m_hoverTimer = -1; m_openTimer = -1; - m_active = false; + m_hoverTimer = -1; m_mouseInside = false; m_drag = false; - setIconAlignment((Qt::AlignmentFlags)(AlignTop|AlignRight)); - setAcceptDrops(true); - setIcon("kmenu-suse"); - setDrawArrow(false); - - m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_basic.mng")); - m_movie->connectUpdate(this, TQT_SLOT(updateMovie())); - m_movie->connectStatus(this, TQT_SLOT(slotStatus(int))); - m_movie->connectResize(this, TQT_SLOT(slotSetSize(const TQSize&))); + setIcon("kmenu"); + setIcon(KickerSettings::customKMenuIcon()); TQApplication::desktop()->screen()->installEventFilter(this); - setMouseTracking(true); + if (KickerSettings::showKMenuText()) + { + setButtonText(KickerSettings::kMenuText()); + setFont(KickerSettings::buttonFont()); + setTextColor(KickerSettings::buttonTextColor()); + } + + repaint(); } KNewButton::~KNewButton() @@ -82,28 +82,14 @@ if ( m_self == this ) m_self = 0; setMouseTracking(false); - delete m_movie; -} - -void KNewButton::slotStatus(int status) -{ - if(status == TQMovie::EndOfLoop) - slotStopAnimation(); } -TQColor KNewButton::borderColor() const +void KNewButton::drawButton(TQPainter *p) { - TQImage img = m_active_pixmap.convertToImage(); - - for (int i = 0; i < img.width(); ++i) { - QRgb rgb = img.pixel(orientation() == Qt::Horizontal ? img.width() - i - 1 : - i, 2); - - if (qGreen(rgb) > 0x50) - return rgb; - } - - return img.pixel( orientation() == Qt::Horizontal ? img.width() - 2 : 2, 2); + //if (KickerSettings::showDeepButtons()) + // PanelPopupButton::drawDeepButton(p); + //else + PanelPopupButton::drawButton(p); } void KNewButton::show() @@ -111,103 +97,12 @@ KButton::show(); if (KickerSettings::firstRun()) { - TQTimer::singleShot(500,this,TQT_SLOT(slotExecMenu())); + TQTimer::singleShot(0,this,TQT_SLOT(slotExecMenu())); KickerSettings::setFirstRun(false); KickerSettings::writeConfig(); } } -void KNewButton::updateMovie() -{ - m_oldPos = TQPoint( -1, -1 ); - drawEye(); - - if (!m_active && m_movie->running()) - m_movie->pause(); -} - -void KNewButton::setPopupDirection(KPanelApplet::Direction d) -{ - KButton::setPopupDirection(d); - - delete m_movie; - - switch (d) { - case KPanelApplet::Left: - setIconAlignment((Qt::AlignmentFlags)(AlignTop|AlignLeft)); - m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_vertical.mng")); - break; - case KPanelApplet::Right: - setIconAlignment((Qt::AlignmentFlags)(AlignTop|AlignRight)); - m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_vertical.mng")); - break; - case KPanelApplet::Up: - setIconAlignment((Qt::AlignmentFlags)(AlignTop|AlignHCenter)); - m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_basic.mng")); - break; - case KPanelApplet::Down: - setIconAlignment((Qt::AlignmentFlags)(AlignBottom|AlignHCenter)); - m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_flipped.mng")); - } - - m_movie->connectUpdate(this, TQT_SLOT(updateMovie())); - m_movie->connectStatus(this, TQT_SLOT(slotStatus(int))); - m_movie->connectResize(this, TQT_SLOT(slotSetSize(const TQSize&))); -} - -void KNewButton::slotSetSize(const TQSize& s) -{ - m_iconSize = s; -} - -double KNewButton::buttonScaleFactor(const TQSize& s) const -{ - double sf = 1.0; - - switch (popupDirection()) { - case KPanelApplet::Left: - case KPanelApplet::Right: -// sf = kMin(double(s.width()) / m_iconSize.height(), double(s.height()) / m_iconSize.width()); -// break; - case KPanelApplet::Up: - case KPanelApplet::Down: - sf = kMin(double(s.width()) / m_iconSize.width(), double(s.height()) / m_iconSize.height()); - break; - } - - if (sf > 0.8) sf = 1.0; - return sf; -} - -int KNewButton::widthForHeight(int height) const -{ - int r = m_iconSize.width() * buttonScaleFactor(TQSize(m_iconSize.width(), height)); - - if (!m_movie->running() && height != m_active_pixmap.height()) - { - KNewButton* that = const_cast<KNewButton*>(this); - TQTimer::singleShot(0, that, TQT_SLOT(slotStopAnimation())); - } - - return r; -} - -int KNewButton::preferredDimension(int panelDim) const -{ - return kMax(m_icon.width(), m_icon.height()); -} - -int KNewButton::heightForWidth(int width) const -{ - int r = m_iconSize.width() * buttonScaleFactor(TQSize(width, m_iconSize.height())); - if (!m_movie->running() && width != m_active_pixmap.width()) - { - KNewButton* that = const_cast<KNewButton*>(this); - TQTimer::singleShot(0, that, TQT_SLOT(slotStopAnimation())); - } - return r; -} - bool KNewButton::eventFilter(TQObject *o, TQEvent *e) { if (e->type() == TQEvent::MouseButtonRelease || @@ -223,75 +118,9 @@ } } - if (KickerSettings::kickoffDrawGeekoEye() && e->type() == TQEvent::MouseMove) - { - TQMouseEvent *me = static_cast<TQMouseEvent *>(e); - if ((me->state() & MouseButtonMask) == NoButton) - drawEye(); - } - return KButton::eventFilter(o, e); } -void KNewButton::drawEye() -{ -#define eye_x 62 -#define eye_y 13 - TQPoint mouse = TQCursor::pos(); - TQPoint me = mapToGlobal(TQPoint(eye_x, eye_y)); - double a = atan2(mouse.y() - me.y(), mouse.x() - me.x()); - int dx = int(2.1 * cos(a)); - int dy = int(2.1 * sin(a)); - - TQPoint newpos(eye_x+dx,eye_y+dy); - if (newpos!=m_oldPos) { - m_oldPos = newpos; - TQPixmap pixmap = m_active_pixmap; - - double sf = 1.0; - - if(!m_movie->framePixmap().isNull()) - { - pixmap = m_movie->framePixmap(); - pixmap.detach(); - m_iconSize = pixmap.size(); - sf = buttonScaleFactor(size()); - - if (KickerSettings::kickoffDrawGeekoEye()) { - TQPainter p(&pixmap); - p.setPen(white); - p.setBrush(white); - // p.setPen(TQColor(110,185,55)); - p.drawRect(eye_x+dx, eye_y+dy, 2, 2); - p. end(); - } - } - - TQWMatrix matrix; - switch (popupDirection()) { - case KPanelApplet::Left: - matrix.scale(sf, -sf); - matrix.rotate(90); - break; - case KPanelApplet::Up: - matrix.scale(sf, sf); - break; - case KPanelApplet::Right: - matrix.scale(sf, -sf); - matrix.rotate(90); - break; - case KPanelApplet::Down: - matrix.scale(sf, sf); - break; - } - m_active_pixmap = pixmap.xForm(matrix); - - repaint(false); - } -#undef eye_x -#undef eye_y -} - void KNewButton::enterEvent(TQEvent* e) { KButton::enterEvent(e); @@ -315,14 +144,6 @@ } m_active = true; - m_movie->unpause(); - m_movie->restart(); -} - -void KNewButton::rewindMovie() -{ - m_oldPos = TQPoint( -1, -1 ); - m_movie->unpause(); } void KNewButton::dragEnterEvent(TQDragEnterEvent* /*e*/) @@ -369,31 +190,11 @@ } } -void KNewButton::slotStopAnimation() -{ - m_active = false; - m_movie->pause(); - m_movie->restart(); - TQTimer::singleShot(200, this, TQT_SLOT(rewindMovie())); -} - -const TQPixmap& KNewButton::labelIcon() const -{ - return m_active_pixmap; -} - void KNewButton::slotExecMenu() { - if (m_openTimer != -1) - killTimer(m_openTimer); - - m_openTimer = startTimer(TQApplication::doubleClickInterval() * 3); - if (m_active) { m_active = false; - m_movie->pause(); - m_movie->restart(); } KButton::slotExecMenu(); @@ -401,40 +202,11 @@ assert(!KickerTip::tippingEnabled()); assert(dynamic_cast<KMenu*>(m_popup)); - disconnect(dynamic_cast<KMenu*>(m_popup), TQT_SIGNAL(aboutToHide()), this, - TQT_SLOT(slotStopAnimation())); - connect(dynamic_cast<KMenu*>(m_popup), TQT_SIGNAL(aboutToHide()), - TQT_SLOT(slotStopAnimation())); - m_popup->move(KickerLib::popupPosition(popupDirection(), m_popup, this)); // I wish KMenu would properly done itself when it closes. But it doesn't. - bool useEffect = true; // could be TQApplication::isEffectEnabled() - useEffect = false; // too many TQt bugs to be useful - if (m_drag) - useEffect = false; - m_drag = false; // once is enough - - if (useEffect) - { - switch (popupDirection()) { - case KPanelApplet::Left: - qScrollEffect(m_popup, QEffects::LeftScroll); - break; - case KPanelApplet::Up: - qScrollEffect(m_popup, QEffects::UpScroll); - break; - case KPanelApplet::Right: - qScrollEffect(m_popup, QEffects::RightScroll); - break; - case KPanelApplet::Down: - qScrollEffect(m_popup, QEffects::DownScroll); - break; - } - } - else - static_cast<KMenu*>(m_popup)->show(); + static_cast<KMenu*>(m_popup)->show(); } void KNewButton::timerEvent(TQTimerEvent* e) @@ -447,9 +219,4 @@ killTimer(m_hoverTimer); m_hoverTimer = -1; } - if (e->timerId() == m_openTimer) - { - killTimer(m_openTimer); - m_openTimer = -1; - } } --- kdebase/kicker/kicker/buttons/knewbutton.h.ORI 2011-12-08 21:22:24.273573281 +0100 +++ kdebase/kicker/kicker/buttons/knewbutton.h 2011-12-08 21:24:16.791338762 +0100 @@ -28,7 +28,6 @@ #include "kbutton.h" -#include <tqmovie.h> #include <tqpoint.h> /** @@ -46,23 +45,8 @@ void loadConfig( const KConfigGroup& config ); - virtual const TQPixmap& labelIcon() const; - - virtual int widthForHeight(int height) const; - virtual int preferredDimension(int panelDim) const; - virtual int heightForWidth(int width) const; - TQColor borderColor() const; - virtual void setPopupDirection(KPanelApplet::Direction d); - -private slots: - void slotStatus(int); - void slotSetSize(const TQSize&); - void slotStopAnimation(); - void rewindMovie(); - void updateMovie(); - protected: virtual void show(); virtual void slotExecMenu(); @@ -78,16 +62,13 @@ void timerEvent(TQTimerEvent*); private: - void drawEye(); - double buttonScaleFactor(const TQSize& s) const; - - TQMovie* m_movie; + void drawButton(TQPainter *p); TQPixmap m_active_pixmap; TQPoint m_oldPos; TQSize m_iconSize; TQRect m_sloppyRegion; - int m_hoverTimer; int m_openTimer; + int m_hoverTimer; bool m_active; bool m_mouseInside; bool m_drag; --- kdebase/kicker/kicker/ui/k_new_mnu.cpp.ORI 2011-12-08 21:24:57.071572016 +0100 +++ kdebase/kicker/kicker/ui/k_new_mnu.cpp 2011-12-08 21:25:54.300324465 +0100 @@ -1700,8 +1700,6 @@ TQPixmap pix( 64, footer->height() ); TQPainter p( &pix ); p.fillRect( 0, 0, 64, footer->height(), m_branding->colorGroup().brush( TQColorGroup::Base ) ); - p.fillRect( 0, m_orientation == BottomUp ? footer->height() - 2 : 0, - 64, 3, KNewButton::self()->borderColor() ); p.end(); footer->setPaletteBackgroundPixmap( pix ); } @@ -3501,6 +3499,8 @@ m_systemView->insertItem( iconName, userLabel.isEmpty() ? label : userLabel, descr, "system:/media/" + name, nId++, -1 ); + ++it; + ++it; ++it; // skip separator } }