/* $Id: QtBookmarkButton.cpp,v 1.1 1998/09/25 18:01:27 ramiro%netscape.com Exp $ * * The contents of this file are subject to the Netscape Public License * Version 1.0 (the "NPL"); you may not use this file except in * compliance with the NPL. You may obtain a copy of the NPL at * http://www.mozilla.org/NPL/ * * Software distributed under the NPL is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL * for the specific language governing rights and limitations under the * NPL. * * The Initial Developer of this code under the NPL is Eirik Eng. * Further developed by Warwick Allison, Kalle Dalheimer, Eirik Eng, * Matthias Ettrich, Arnt Gulbrandsen, Haavard Nord and Paul Olav * Tvete. Copyright (C) 1998 Warwick Allison, Kalle Dalheimer, Eirik * Eng, Matthias Ettrich, Arnt Gulbrandsen, Haavard Nord and Paul Olav * Tvete. All Rights Reserved. */ #include "QtBookmarkButton.h" #include "QtBookmarkMenu.h" #include "QtContext.h" #include "qtoolbar.h" QtBookmarkButton::QtBookmarkButton( const QPixmap & pm, const char * textLabel, QtContext *context, QToolBar * parent, const char * name ) : QToolButton( parent, name ) { setPixmap( pm ); setUsesBigPixmap( FALSE ); setToggleButton( TRUE ); setTextLabel( textLabel ); if ( context->inherits( "QtBrowserContext" ) ) menu = new QtBookmarkMenu( (QtBrowserContext*)context ); else menu = new QtBookmarkMenu(); connect( this, SIGNAL(toggled(bool)), SLOT(beenToggled(bool)) ); menu->installEventFilter( this ); connect( menu, SIGNAL(destroyed()), this, SLOT(menuDied()) ); } QtBookmarkButton::~QtBookmarkButton() { delete menu; } void QtBookmarkButton::beenToggled( bool up ) { if ( up ) menu->popup( mapToGlobal( rect().bottomLeft())); else menu->hide(); } bool QtBookmarkButton::eventFilter( QObject *o, QEvent *e ) { if ( o->inherits("QPopupMenu") && e->type() == Event_Hide ) setOn( FALSE ); if ( o->inherits("QLabel") && e->type() == Event_MouseButtonPress ) toggle(); return FALSE; } void QtBookmarkButton::menuDied() { menu = 0; }