Summary: | kviewerpart exits ungracefully when requested viewer is not installed | ||
---|---|---|---|
Product: | [Frameworks and Libraries] kviewerpart | Reporter: | Jeroen Wijnhout <spam> |
Component: | general | Assignee: | Matthias Hoelzer-Kluepfel <hoelzer> |
Status: | RESOLVED FIXED | ||
Severity: | crash | ||
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | openSUSE | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: |
Description
Jeroen Wijnhout
2003-10-16 21:13:19 UTC
CVS commit by waba: Don't exit when we can't load part. (BR66131) Please report back if this fixes BR66131 so it can be added to KDE_3_2_BRANCH as well. CCMAIL: 66131@bugs.kde.org M +14 -7 kviewpart.cpp 1.89 M +2 -0 kviewpart.h 1.43 --- kdegraphics/kviewshell/kviewpart.cpp #1.88:1.89 @@ -75,5 +75,10 @@ KParts::Part *KViewPartFactory::createPa if (args.count() >= 1) partname = args[0]; - KParts::Part *obj = new KViewPart(partname, parentWidget, widgetName, parent, name); + KViewPart *obj = new KViewPart(partname, parentWidget, widgetName, parent, name); + if (!obj->isValid()) + { + delete obj; + return 0; + } return obj; } @@ -89,5 +94,5 @@ KInstance *KViewPartFactory::instance() KViewPart::KViewPart(QString partname, QWidget *parentWidget, const char *widgetName, QObject *parent, const char *name) - : KViewPart_Iface(parent, name), _partname(partname), _numberOfPages(0), + : KViewPart_Iface(parent, name), _partname(partname), multiPage(0), _numberOfPages(0), _currentPage(0) { @@ -137,7 +142,9 @@ KViewPart::KViewPart(QString partname, Q multiPage = (KMultiPage*) factory->create(mainWidget, QString("k%1").arg(_partname).utf8(), "KPart"); } else { - KMessageBox::error(mainWidget, i18n("No module (%1) found").arg(_partname)); - ::exit(-1); + KMessageBox::error(parentWidget, i18n("No module (%1) found").arg(_partname)); } + if (!multiPage) + return; // Abort + hbox->addWidget(multiPage->widget()); @@ -272,7 +279,7 @@ KViewPart::KViewPart(QString partname, Q KViewPart::~KViewPart() { + if (multiPage) writeSettings(); delete multiPage; - if ( tmpUnzipped != 0L ) delete tmpUnzipped; } --- kdegraphics/kviewshell/kviewpart.h #1.42:1.43 @@ -53,4 +53,6 @@ public: virtual ~KViewPart(); + bool isValid() { return multiPage; } + // Returns a description of the current page size, for use in the // statusbar of the kviewshell that embeds this KViewPart. Thanks for the patch! It indeed fixes this bug. I've tested it against the KDE_3_2_BRANCH, so it is safe to apply it there as well. AFAIC you can close this bug. best, Jeroen Why isn't the patch backported yet? I could do it for you if you want, just give me a go-ahead. best, Jeroen Yes, please, feel free to backport the patch. Bye, Matthias. Done. best, Jeroen The bug is back again, can you please fix it before KDE 3.4.1 is out? best, Jeroen Oops, reopened wrong bug, terribly sorry about that! Oops, reopened wrong bug, terribly sorry about that! |