[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-bugs-dist
Subject:    [Bug 71391] New: KMdiMainFrm resize problem and crash
From:       Ravikiran Rajagopal <ravi () kde ! org>
Date:       2003-12-28 20:52:00
[Download RAW message or body]

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
     
http://bugs.kde.org/show_bug.cgi?id=71391     
           Summary: KMdiMainFrm resize problem and crash
           Product: kdelibs
           Version: unspecified
          Platform: Compiled Sources
        OS/Version: Linux
            Status: NEW
          Severity: crash
          Priority: NOR
         Component: kmdi
        AssignedTo: kwrite-devel@kde.org
        ReportedBy: ravi@kde.org


Version:            (using KDE Devel)
Installed from:    Compiled sources
Compiler:          gcc version 3.3.2 20031022 (Red Hat Linux 3.3.2-1) Stock Fedora \
                Core 1
OS:          Linux

In the following program, when there is only one KDockWidget, the associated \
QListView spans the whole child window. However, when there are multiple \
KDockWidgets, the associated KDockTabGroup does not span the whole child window. Try \
compiling with #if 0 and #if 1 and notice the difference when you run the resulting \
executables. I think the problem may be in line 1126 of kdockwidget.cpp, but I am not \
sure:  newDock->setGeometry(geom);

The second issue is that the program crashes on exit. There are several messages on \
console about QApplication finding an unexpected null receiver whenever we switch \
tabs. I think there is a dangling pointer in kmdi.

This might be related to 67270 but I highly doubt it. Here is the test program:

#include <kaboutdata.h>
#include <kapplication.h>
#include <kcmdlineargs.h>
#include <kdockwidget.h>
#include <kiconloader.h>
#include <kmdimainfrm.h>

#include <qlistview.h>

int main( int argc, char **argv )
{
  KAboutData aboutData("test", 0, "0.0" );
  aboutData.addAuthor("Random Guy" );

  KCmdLineArgs::init(argc,argv,&aboutData);
  KApplication a;

  KMdiMainFrm h( 0, "hbox", KMdi::ChildframeMode );

  // Add the dockwidget as a window.
  KDockWidget *w1 = h.createDockWidget( "First Widget", UserIcon( "go" ), 0, "A1", \
"A2" );  QListView *l = new QListView;
  w1->setWidget( l );
  h.addWindow( h.createWrapper( w1, "L", "L" ) );

#if 1
  // Second dockwidget.
  KDockWidget *w2 = h.createDockWidget( "Second Widget", UserIcon( "go" ), 0, "A1", \
"A2" );  l = new QListView;
  w2->setWidget( l );
  w2->manualDock( w1, KDockWidget::DockCenter );
#endif

  a.setMainWidget( &h );
  h.show();
  return a.exec();
}


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic