summaryrefslogtreecommitdiffstats
path: root/kdeui/kmenubar.h
diff options
context:
space:
mode:
Diffstat (limited to 'kdeui/kmenubar.h')
-rw-r--r--kdeui/kmenubar.h114
1 files changed, 114 insertions, 0 deletions
diff --git a/kdeui/kmenubar.h b/kdeui/kmenubar.h
new file mode 100644
index 000000000..91309a2a8
--- /dev/null
+++ b/kdeui/kmenubar.h
@@ -0,0 +1,114 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 1997, 1998, 1999, 2000 Sven Radej (radej@kde.org)
+ Copyright (C) 1997, 1998, 1999, 2000 Matthias Ettrich (ettrich@kde.org)
+ Copyright (C) 1999, 2000 Daniel "Mosfet" Duley (mosfet@kde.org)
+
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+//$Id$
+
+#ifndef _KMENUBAR_H
+#define _KMENUBAR_H
+
+#include <qmenubar.h>
+
+#include <kdelibs_export.h>
+
+/**
+ * %KDE Style-able menubar.
+ *
+ * This is required since QMenuBar is currently not handled by
+ * QStyle.
+ *
+ * @author Daniel "Mosfet" Duley.
+ * @version $Id$
+*/
+
+class KDEUI_EXPORT KMenuBar : public QMenuBar
+{
+ Q_OBJECT
+
+public:
+
+ KMenuBar (QWidget *parent=0, const char *name=0);
+ ~KMenuBar ();
+
+ /**
+ * This controls whether or not this menubar will be a top-level
+ * bar similar to the way Macintosh handles menubars. This
+ * overrides any global config settings.
+ *
+ * Keep in mind that it is probably a really bad idea to use this
+ * unless you really know what you're doing. A feature like a
+ * top-level menubar is one that should really be shared by all
+ * applications. If your app is the only one with a top-level
+ * bar, then things might look very... odd.
+ *
+ * This is included only for those people that @p do know that
+ * they need to use it.
+ *
+ * @param top_level If set to true, then this menubar will be a
+ * top-level menu
+ */
+ void setTopLevelMenu(bool top_level = true);
+
+ /**
+ * Is our menubar a top-level (Macintosh style) menubar?
+ *
+ * @return True if it is top-level.
+ */
+ bool isTopLevelMenu() const;
+
+ // TT are overloading virtuals :(
+ virtual void setGeometry( const QRect &r );
+ virtual void setGeometry( int x, int y, int w, int h );
+ virtual void resize( int w, int h );
+ void resize( const QSize& s ) { QMenuBar::resize( s ); }
+
+ virtual void show();
+ virtual void setFrameStyle( int );
+ virtual void setLineWidth( int );
+ virtual void setMargin( int );
+ virtual QSize sizeHint() const;
+protected slots:
+ void slotReadConfig();
+protected:
+ virtual void showEvent( QShowEvent* );
+ virtual void resizeEvent( QResizeEvent* );
+ virtual bool eventFilter(QObject *, QEvent *);
+#ifdef Q_WS_X11
+ virtual bool x11Event( XEvent* );
+#endif
+ virtual void closeEvent( QCloseEvent* );
+ virtual void drawContents( QPainter* );
+private slots:
+ void updateFallbackSize();
+ void selectionTimeout();
+private:
+ void setTopLevelMenuInternal(bool top_level);
+ void updateMenuBarSize();
+ void checkSize( int& w, int& h );
+ static int block_resize;
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ class KMenuBarPrivate;
+ KMenuBarPrivate *d;
+};
+
+#endif