119 lines
2.6 KiB
C
119 lines
2.6 KiB
C
|
/*
|
||
|
* $Id$
|
||
|
*
|
||
|
* KWin client button tooltip support module
|
||
|
*
|
||
|
* Copyright (c) 2001
|
||
|
* Karol Szwed <gallium@kde.org>
|
||
|
*
|
||
|
* Uses portions of QToolTip code
|
||
|
* Copyright (c) TrollTech AS
|
||
|
*
|
||
|
* Since Qt installs its own internal event filter when using
|
||
|
* a QToolTip, kwin doesn't obtain the necessary events and hence
|
||
|
* focus problems and loss of window frames occur if they are used
|
||
|
* for kwin styles. Thus, this small class implements a bare subset
|
||
|
* of QToolTip designed especially for kwin client buttons without
|
||
|
* installing any event filters that confuse kwin.
|
||
|
*
|
||
|
* For all normal clients, simply use the KWinButton class instead
|
||
|
* of QButton, which will use a KWinToolTip internally. Other clients
|
||
|
* which rely on QToolButton or QWidget for client buttons may use the
|
||
|
* KWinToolButton and KWinWidgetButton classes to automatically take
|
||
|
* care of tooltips.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
#ifndef _KWIN_BUTTON_H
|
||
|
#define _KWIN_BUTTON_H
|
||
|
|
||
|
#include <qlabel.h>
|
||
|
#include <qtimer.h>
|
||
|
#include <qtoolbutton.h>
|
||
|
|
||
|
namespace KWinInternal {
|
||
|
|
||
|
|
||
|
class KWinToolTip: public QLabel
|
||
|
{
|
||
|
Q_OBJECT
|
||
|
|
||
|
public:
|
||
|
KWinToolTip( QWidget* parent, const QString& tip );
|
||
|
~KWinToolTip();
|
||
|
void setTipText( const QString& tip );
|
||
|
void enterTip();
|
||
|
void leaveTip();
|
||
|
private slots:
|
||
|
void showTip();
|
||
|
void hideTip();
|
||
|
private:
|
||
|
void positionTip();
|
||
|
QTimer showTimer;
|
||
|
QTimer hideTimer;
|
||
|
QWidget* btn;
|
||
|
};
|
||
|
|
||
|
|
||
|
class KWinButton: public QButton
|
||
|
{
|
||
|
Q_OBJECT
|
||
|
|
||
|
public:
|
||
|
KWinButton( QWidget *parent, const char *name,
|
||
|
const QString& tip );
|
||
|
~KWinButton();
|
||
|
void setTipText(const QString& newTip);
|
||
|
protected:
|
||
|
/* Ensure you call these event handlers from derived classes */
|
||
|
void enterEvent(QEvent *);
|
||
|
void leaveEvent(QEvent *);
|
||
|
void mousePressEvent( QMouseEvent* e );
|
||
|
private:
|
||
|
KWinToolTip* buttonTip;
|
||
|
};
|
||
|
|
||
|
|
||
|
class KWinToolButton: public QToolButton
|
||
|
{
|
||
|
Q_OBJECT
|
||
|
|
||
|
public:
|
||
|
KWinToolButton( QWidget *parent, const char *name,
|
||
|
const QString& tip );
|
||
|
~KWinToolButton();
|
||
|
void setTipText(const QString& newTip);
|
||
|
protected:
|
||
|
/* Ensure you call these event handlers from derived classes */
|
||
|
void enterEvent(QEvent *);
|
||
|
void leaveEvent(QEvent *);
|
||
|
void mousePressEvent( QMouseEvent* e );
|
||
|
private:
|
||
|
KWinToolTip* buttonTip;
|
||
|
};
|
||
|
|
||
|
|
||
|
class KWinWidgetButton: public QWidget
|
||
|
{
|
||
|
Q_OBJECT
|
||
|
|
||
|
public:
|
||
|
KWinWidgetButton( QWidget *parent, const char *name,
|
||
|
WFlags f, const QString& tip );
|
||
|
~KWinWidgetButton();
|
||
|
void setTipText(const QString& newTip);
|
||
|
protected:
|
||
|
/* Ensure you call these event handlers from derived classes */
|
||
|
void enterEvent(QEvent *);
|
||
|
void leaveEvent(QEvent *);
|
||
|
void mousePressEvent( QMouseEvent* e );
|
||
|
private:
|
||
|
KWinToolTip* buttonTip;
|
||
|
};
|
||
|
|
||
|
|
||
|
};
|
||
|
|
||
|
#endif
|
||
|
// vim: ts=4
|