[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-core-devel
Subject: [Patch] Re: KDockWidget'S
From: Andreas Zehender <zehender () kde ! org>
Date: 2002-09-10 17:38:05
[Download RAW message or body]
Hi!
On Tuesday 10 September 2002 19:12, Lubos Lunak wrote:
> I guess we need a new rule in the keep-BC paper, saying that classes
> willing to stay BC shouldn't have inline destructor.
>
> You can destroy the private data by inheriting class
> KDockWidgetHeader::KDockWidgetHeaderPrivate from QObject and passing the
> KDockWidgetHeader instance that created it as its parent (so it will delete
> it automatically). *shrug*
>
> BTW, if you want, you can just use KDockWidgetHeaderPrivate instead of
> KDockWidgetHeader::KDockWidgetHeaderPrivate , if you move the forward
> declaration out of the class (lazy people ... including me :-/ ). It won't
> break BC, the 'd' member is just a pointer.
This new patch fixes the inline constructor issue and should be now fully
binary conpatible.
Can I commit?
--
--------------------------------------------------
Andreas Zehender, Dipl. Ing. (BA)
Student, 10th semester computer science
http://www.azweb.de
az@azweb.de | zehender@kde.org
--------------------------------------------------
["dockwidget.patch" (text/x-diff)]
? dockwidget.patch
? kdockwidget.loT
Index: kdockwidget.cpp
===================================================================
RCS file: /home/kde/kdelibs/kdeui/kdockwidget.cpp,v
retrieving revision 1.109
diff -u -r1.109 kdockwidget.cpp
--- kdockwidget.cpp 2002/08/29 14:58:57 1.109
+++ kdockwidget.cpp 2002/09/10 17:23:31
@@ -51,14 +51,25 @@
#define DOCK_CONFIG_VERSION "0.0.5"
static const char* const dockback_xpm[]={
+"6 6 2 1",
+"# c black",
+". c None",
+"......",
+".#....",
+"..#..#",
+"...#.#",
+"....##",
+"..####"};
+
+static const char* const todesktop_xpm[]={
"5 5 2 1",
"# c black",
". c None",
-"#....",
-".#...",
-"..#.#",
-"...##",
-"..###"};
+"####.",
+"##...",
+"#.#..",
+"#..#.",
+"....#"};
static const char* const not_close_xpm[]={
"5 5 2 1",
@@ -196,6 +207,8 @@
KDockWidgetHeader::KDockWidgetHeader( KDockWidget* parent, const char* name )
:KDockWidgetAbstractHeader( parent, name )
{
+ d = new KDockWidgetHeaderPrivate( this );
+
layout = new QHBoxLayout( this );
layout->setResizeMode( QLayout::Minimum );
@@ -219,10 +232,16 @@
connect( dockbackButton, SIGNAL(clicked()), parent, SIGNAL(headerDockbackButtonClicked()));
connect( dockbackButton, SIGNAL(clicked()), parent, SLOT(dockBack()));
+ d->toDesktopButton = new KDockButton_Private( this, "ToDesktopButton" );
+ d->toDesktopButton->setPixmap( const_cast< const char** >(todesktop_xpm));
+ d->toDesktopButton->setFixedSize(closeButton->pixmap()->width(),closeButton->pixmap()->height());
+ connect( d->toDesktopButton, SIGNAL(clicked()), parent, SLOT(toDesktop()));
+
stayButton->hide();
layout->addWidget( drag );
layout->addWidget( dockbackButton );
+ layout->addWidget( d->toDesktopButton );
layout->addWidget( stayButton );
layout->addWidget( closeButton );
layout->activate();
@@ -241,11 +260,13 @@
}
stayButton->hide();
closeButton->hide();
+ d->toDesktopButton->hide();
drag->setEnabled( true );
} else {
dockbackButton->hide();
stayButton->hide();
closeButton->show();
+ d->toDesktopButton->show();
}
layout->activate();
updateGeometry();
@@ -264,6 +285,7 @@
layout->addWidget( drag );
layout->addWidget( dockbackButton );
+ layout->addWidget( d->toDesktopButton );
layout->addWidget( stayButton );
layout->addWidget( closeButton );
layout->activate();
@@ -873,8 +895,16 @@
if (parent()->inherits("KDockSplitter"))
static_cast<KDockSplitter*>(parent()->qt_cast("KDockSplitter"))->restoreFromForcedFixedSize(this);
}
-
+void KDockWidget::toDesktop()
+{
+ QPoint p = mapToGlobal( QPoint( -30, -30 ) );
+ if( p.x( ) < 0 )
+ p.setX( 0 );
+ if( p.y( ) < 0 )
+ p.setY( 0 );
+ manualDock( 0, DockDesktop, 50, p );
+}
void KDockWidget::undock()
{
Index: kdockwidget.h
===================================================================
RCS file: /home/kde/kdelibs/kdeui/kdockwidget.h,v
retrieving revision 1.67
diff -u -r1.67 kdockwidget.h
--- kdockwidget.h 2002/07/04 21:03:17 1.67
+++ kdockwidget.h 2002/09/10 17:23:31
@@ -72,6 +72,7 @@
class KDockWidget;
class KDockButton_Private;
class KDockWidgetPrivate;
+class KDockWidgetHeaderPrivate;
class KDockArea;
class QObjectList;
@@ -318,7 +319,6 @@
protected:
virtual void virtual_hook( int id, void* data );
private:
- class KDockWidgetHeaderPrivate;
KDockWidgetHeaderPrivate *d;
};
@@ -651,6 +651,11 @@
* another dockwidget by mouse (docking).
*/
void undock();
+
+ /**
+ * Docks the widget to the desktop (as a toplevel widget)
+ */
+ void toDesktop( );
protected:
Index: kdockwidget_private.h
===================================================================
RCS file: /home/kde/kdelibs/kdeui/kdockwidget_private.h,v
retrieving revision 1.22
diff -u -r1.22 kdockwidget_private.h
--- kdockwidget_private.h 2002/07/04 21:03:17 1.22
+++ kdockwidget_private.h 2002/09/10 17:23:31
@@ -154,4 +154,16 @@
QGuardedPtr<QWidget> container;
};
+class KDockWidgetHeaderPrivate
+ : public QObject
+{
+public:
+ KDockWidgetHeaderPrivate( QObject* parent )
+ : QObject( parent )
+ {
+ toDesktopButton = 0;
+ }
+ KDockButton_Private* toDesktopButton;
+};
+
#endif
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic