Index: src/playlist/view/graphic/PlaylistGraphicsView.cpp
===================================================================
--- src/playlist/view/graphic/PlaylistGraphicsView.cpp	(revision 940152)
+++ src/playlist/view/graphic/PlaylistGraphicsView.cpp	(working copy)
@@ -60,7 +60,6 @@
     //make background transparent
     QPalette p = palette();
     QColor c = p.color( QPalette::Base );
-    c.setAlpha( 0 );
     p.setColor( QPalette::Base, c );
     setPalette( p );
 
Index: src/PaletteHandler.cpp
===================================================================
--- src/PaletteHandler.cpp	(revision 940152)
+++ src/PaletteHandler.cpp	(working copy)
@@ -62,7 +62,6 @@
     QPalette p = m_palette;
 
     QColor c = p.color( QPalette::Base );
-    c.setAlpha( 0 );
     p.setColor( QPalette::Base, c );
 
     c = p.color( QPalette::AlternateBase );
Index: src/context/ContextView.cpp
===================================================================
--- src/context/ContextView.cpp	(revision 940152)
+++ src/context/ContextView.cpp	(working copy)
@@ -57,16 +57,17 @@
     setInteractive( true );
     setAcceptDrops( true );
     setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOff );
-   // setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff );
+    setVerticalScrollBarPolicy( Qt::ScrollBarAsNeeded );
     setMouseTracking( true );
     setScreen( -1 );
+    setAttribute(Qt::WA_NoSystemBackground, false);
 
     scene()->setItemIndexMethod( QGraphicsScene::NoIndex );
     
     //make background transparent
     QPalette p = palette();
     QColor c = p.color( QPalette::Base );
-    c.setAlpha( 0 );
+    //c.setAlpha( 0 );
     p.setColor( QPalette::Base, c );
     setPalette( p );
 
@@ -240,8 +241,8 @@
     
     debug() << "resizing containment to: " << rect();
 
-    containment()->resize( rect().size() );
-    containment()->setPos( rect().topLeft() );
+    containment()->resize( viewport()->rect().size() );
+    containment()->setPos( viewport()->rect().topLeft() );
 
 }
 
Index: src/scriptengine/generator/generator/typesystem_core.xml
===================================================================
--- src/scriptengine/generator/generator/typesystem_core.xml	(revision 940152)
+++ src/scriptengine/generator/generator/typesystem_core.xml	(working copy)
@@ -1346,8 +1346,14 @@
   </object-type>
 
   <interface-type name="QTextCodecFactoryInterface" java-name="QAbstractTextCodecFactory"/>
-  <object-type name="QTextCodecPlugin"/>
+  <!--<object-type name="QTextCodecPlugin"/> -->
+  <object-type name="QTextCodecPlugin">
+      <inject-code class="shell" position="beginning">
+  Q_DECLARE_METATYPE(QList&lt;int>)
+      </inject-code>
+     </object-type>
 
+
   <object-type name="QTextDecoder">
     <modify-function signature="toUnicode(const char*,int)">
         <remove/>
Index: src/scriptengine/generator/generator/shellimplgenerator.cpp
===================================================================
--- src/scriptengine/generator/generator/shellimplgenerator.cpp	(revision 940152)
+++ src/scriptengine/generator/generator/shellimplgenerator.cpp	(working copy)
@@ -106,6 +106,8 @@
         s << endl;
     }
 
+    writeInjectedCode(s, meta_class);
+
     // write constructors
     foreach (const AbstractMetaFunction *ctor, ctors) {
         s << "QtScriptShell_" << meta_class->name() << "::";
Index: src/MainWindow.cpp
===================================================================
--- src/MainWindow.cpp	(revision 940152)
+++ src/MainWindow.cpp	(working copy)
@@ -60,6 +60,7 @@
 #include <QList>
 #include <QSizeGrip>
 #include <QVBoxLayout>
+#include <QDockWidget>
 
 #include <KAction>          //m_actionCollection
 #include <KActionCollection>
@@ -98,10 +99,10 @@
     public:
         ContextWidget( QWidget *parent ) : KVBox( parent ) {}
 
-        QSize sizeHint() const
+        /*QSize sizeHint() const
         {
             return QSize( static_cast<QWidget*>( parent() )->size().width() / 3, 300 );
-        }
+        }*/
 };
 
 QPointer<MainWindow> MainWindow::s_instance = 0;
@@ -168,15 +169,15 @@
 
     QList<int> sPanels;
 
-    foreach( int a, m_splitter->saveState() )
-        sPanels.append( a );
+    //foreach( int a, m_splitter->saveState() )
+      //  sPanels.append( a );
 
     AmarokConfig::setPanelsSavedState( sPanels );
 
     delete m_playlistFiles;
     delete m_contextView;
     delete m_corona;
-    delete m_splitter;
+    //delete m_splitter;
     delete The::statusBar();
     delete m_controlBar;
     delete The::svgHandler();
@@ -197,16 +198,23 @@
     layout()->setContentsMargins( 0, 0, 0, 0 );
     layout()->setSpacing( 0 );
 
-    QBoxLayout * toolbarSpacer = new QHBoxLayout( this );
-    toolbarSpacer->setContentsMargins( 0, 0, 0, 10 );
+    //QBoxLayout * toolbarSpacer = new QHBoxLayout( this );
+    //toolbarSpacer->setContentsMargins( 0, 0, 0, 10 );
 
+    //setDockOptions(ForceTabbedDocks);
+    setDockNestingEnabled ( false);
     m_controlBar = new MainToolbar( 0 );
     m_controlBar->layout()->setContentsMargins( 0, 0, 0, 0 );
     m_controlBar->layout()->setSpacing( 0 );
+    QDockWidget *toolbarDock = new QDockWidget(QString(), this);
+    toolbarDock->setAllowedAreas(Qt::TopDockWidgetArea);
+    toolbarDock->setFeatures(0);
+    addDockWidget(Qt::TopDockWidgetArea, toolbarDock);
+    toolbarDock->setWidget(m_controlBar);
 
-    toolbarSpacer->addSpacing( 3 );
+    /*toolbarSpacer->addSpacing( 3 );
     toolbarSpacer->addWidget( m_controlBar, 20);
-    toolbarSpacer->addSpacing( 3 );
+    toolbarSpacer->addSpacing( 3 );*/
 
     PERF_LOG( "Create sidebar" )
     m_browsers = new SideBar( this, new KVBox );
@@ -225,8 +233,13 @@
     PERF_LOG( "ContextWidget created" )
     m_contextWidget->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Maximum );
     m_contextWidget->setSpacing( 0 );
-    m_contextWidget->setFrameShape( QFrame::NoFrame );
+    //m_contextWidget->setFrameShape( QFrame::NoFrame );
     m_contextWidget->setFrameShadow( QFrame::Sunken );
+    //m_browsers->addWidget(KIcon("plasma"), i18n("Context"), m_contextWidget);
+    QDockWidget *contextDock = new QDockWidget(i18n("Context"), this);
+    contextDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
+    addDockWidget(Qt::LeftDockWidgetArea, contextDock);
+    contextDock->setWidget(m_contextWidget);
     PERF_LOG( "Creating ContexScene" )
 
     m_corona = new Context::ContextScene( this );
@@ -254,15 +267,17 @@
     QWidget *centralWidget = new QWidget( this );
     centralWidget->setLayout( mainLayout );
 
-    m_splitter = new Amarok::Splitter( Qt::Horizontal, centralWidget );
+    /*m_splitter = new Amarok::Splitter( Qt::Horizontal, centralWidget );
     m_splitter->setHandleWidth( 0 );
     m_splitter->addWidget( m_browsers );
     m_splitter->addWidget( m_contextWidget );
     m_splitter->addWidget( m_playlistWidget );
 
 
-    mainLayout->addLayout( toolbarSpacer );
-    mainLayout->addWidget( m_splitter );
+    //mainLayout->addLayout( toolbarSpacer );
+    mainLayout->addWidget( m_splitter );*/
+
+    mainLayout->addWidget(m_playlistWidget);
     mainLayout->addWidget( m_statusbarArea);
 
     setCentralWidget( centralWidget );
@@ -278,30 +293,57 @@
 
 
         PERF_LOG( "Creating CollectionWidget" )
-        addBrowserMacro( CollectionWidget, "CollectionBrowser", i18n("Collection"), "collection-amarok" )
+        //addBrowserMacro( CollectionWidget, "CollectionBrowser", i18n("Collection"), "collection-amarok" )
         PERF_LOG( "Created CollectionWidget" )
 
+        QDockWidget *collectionDock = new QDockWidget(i18n("Collection"), this);
+        collectionDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
+        addDockWidget(Qt::LeftDockWidgetArea, collectionDock);
+        collectionDock->setWidget(new CollectionWidget("CollectionBrowser", this));
+
         //cant use macros here since we need access to the browsers directly
         PERF_LOG( "Creating ServiceBrowser" )
         ServiceBrowser *internetContentServiceBrowser = ServiceBrowser::instance();
         internetContentServiceBrowser->setParent( this );
-        m_browsers->addWidget( KIcon( "applications-internet" ), i18n("Internet"), internetContentServiceBrowser );
-        m_browserNames.append( "Internet" );
+        //m_browsers->addWidget( KIcon( "applications-internet" ), i18n("Internet"), internetContentServiceBrowser );
+        //m_browserNames.append( "Internet" );
         PERF_LOG( "Created ServiceBrowser" )
 
+        QDockWidget *serviceDock = new QDockWidget(i18n("Internet"), this);
+        serviceDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
+        addDockWidget(Qt::LeftDockWidgetArea, serviceDock);
+        serviceDock->setWidget(internetContentServiceBrowser);
+
+        tabifyDockWidget(collectionDock, serviceDock);
+
         m_playlistFiles = new PlaylistFileProvider();
         The::playlistManager()->addProvider( m_playlistFiles, PlaylistManager::UserPlaylist );
 
         PERF_LOG( "Creating PlaylistBrowser" )
-        addBrowserMacro( PlaylistBrowserNS::PlaylistBrowser, "PlaylistBrowser", i18n("Playlists"), "view-media-playlist-amarok" )
+        //addBrowserMacro( PlaylistBrowserNS::PlaylistBrowser, "PlaylistBrowser", i18n("Playlists"), "view-media-playlist-amarok" )
         PERF_LOG( "CreatedPlaylsitBrowser" )
 
+        QDockWidget *playlistDock = new QDockWidget(i18n("Playlists"), this);
+        playlistDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
+        addDockWidget(Qt::LeftDockWidgetArea, playlistDock);
+        playlistDock->setWidget(new PlaylistBrowserNS::PlaylistBrowser("PlaylistBrowser", this));
+
+        tabifyDockWidget(serviceDock, playlistDock);
+
         PERF_LOG( "Creating FileBrowser" )
-        addBrowserMacro( FileBrowser::Widget, "FileBrowser::Widget",  i18n("Files"), "folder-amarok" )
+        //addBrowserMacro( FileBrowser::Widget, "FileBrowser::Widget",  i18n("Files"), "folder-amarok" )
         PERF_LOG( "Created FileBrowser" )
 
-        sideBar()->sideBarWidget()->restoreSession();
+        QDockWidget *filesDock = new QDockWidget(i18n("Files"), this);
+        filesDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
+        addDockWidget(Qt::LeftDockWidgetArea, filesDock);
+        filesDock->setWidget(new FileBrowser::Widget("FileBrowser::Widget", this));
 
+        tabifyDockWidget(playlistDock, filesDock);
+        collectionDock->raise();
+
+        //sideBar()->sideBarWidget()->restoreSession();
+
         PERF_LOG( "Initialising ServicePluginManager" )
         ServicePluginManager::instance()->init();
         PERF_LOG( "Initialised ServicePluginManager" )
@@ -321,7 +363,7 @@
         foreach( int a, AmarokConfig::panelsSavedState() )
             sPanels.append( a );
 
-        m_splitter->restoreState( sPanels );
+        //m_splitter->restoreState( sPanels );
     }
 
     //Amarok::MessageQueue::instance()->sendMessages();
@@ -354,7 +396,7 @@
 MainWindow::slotShrinkBrowsers( int index )
 {
     DEBUG_BLOCK
-
+return;
     // Because QSplitter sucks and will not recompute sizes if a pane is shrunk and not hidden.
     if( index == -1 )
     {
@@ -966,6 +1008,7 @@
 
 QRect MainWindow::contextRectGlobal()
 {
+    return m_contextWidget->geometry();
     //debug() << "pos of context vidget within main window is: " << m_contextWidget->pos();
     QPoint contextPos = m_splitter->mapToGlobal( m_contextWidget->pos() );
     return QRect( contextPos.x(), contextPos.y(), m_contextWidget->width(), m_contextWidget->height() );
