/* This file is part of the KDE project Copyright (C) 2003 Alexander Dymo 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. */ #include "resizablecombo.h" #include "kcomboview.h" #include #include #include #include #include #include static const char * resize_xpm[] = { "9 18 2 1", " c None", ". c #000000", " . ", " ", " . ", " ", " . ", " ", " . . . ", " .. .. ", ".........", " .. .. ", " . . . ", " ", " . ", " ", " . ", " ", " . ", " "}; ResizableCombo::ResizableCombo(KComboView *view, TQWidget *parent, const char *name): TQWidget(parent, name), m_sizer(0), m_combo(view) { TQHBoxLayout *l = new TQHBoxLayout(this); view->reparent(this, TQPoint(0,0)); l->addWidget(view); m_sizer = new MyPushButton(this); m_sizer->setPixmap(TQPixmap(resize_xpm)); TQWhatsThis::add(m_sizer, i18n("Drag this to resize the combobox.")); l->addWidget(m_sizer); } void MyPushButton::mousePressEvent( TQMouseEvent * e ) { m_resizing = true; m_pressedPos = e->globalPos(); m_width = m_combo->m_combo->width(); TQPushButton::mousePressEvent(e); } void MyPushButton::mouseReleaseEvent( TQMouseEvent * e ) { m_resizing = false; TQPushButton::mouseReleaseEvent(e); } void MyPushButton::mouseMoveEvent( TQMouseEvent * e ) { if (m_resizing) m_combo->m_combo->setMinimumWidth(m_width + e->globalPos().x() - pressedPos().x()); TQPushButton::mouseMoveEvent(e); } MyPushButton::MyPushButton( ResizableCombo * parent, const char * name ) :TQPushButton(parent, name), m_resizing(false), m_combo(parent) { setFocusPolicy(TQ_NoFocus); setFlat(true); m_width = m_combo->m_combo->width(); } #include "resizablecombo.moc"