[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: koffice/kexi
From: Jarosław Staniek <staniek () kde ! org>
Date: 2010-06-11 20:58:54
Message-ID: 20100611210609.F2A10AC8CF () svn ! kde ! org
[Download RAW message or body]
SVN commit 1137173 by staniek:
Main Window
*fix autoopening (--open) for User Mode
*fix possible crash on exit
M +8 -5 core/kexipartmanager.cpp
M +12 -2 main/KexiMainWindow.cpp
M +1 -1 main/KexiMainWindow.h
M +1 -1 main/KexiMainWindow_p.h
--- trunk/koffice/kexi/core/kexipartmanager.cpp #1137172:1137173
@@ -117,6 +117,8 @@
clearError();
if (!i)
return 0;
+ if (!lookup())
+ return 0;
if (i->isBroken()) {
setError(i->errorMessage());
@@ -175,15 +177,14 @@
Part* Manager::partForClass(const QString &className)
{
- const QString realClass = realPartClass(className);
- Part *p = realClass.isEmpty() ? 0 : m_parts.value(realClass);
- if (!p)
- setError(i18n("No plugin for class \"%1\"", realClass));
- return p;
+ Info* info = infoForClass(className);
+ return part(info);
}
Info* Manager::infoForClass(const QString &className)
{
+ if (!lookup())
+ return 0;
const QString realClass = realPartClass(className);
Info *i = realClass.isEmpty() ? 0 : m_partsByClass.value(realClass);
if (i)
@@ -196,6 +197,8 @@
{
if (!part)
return;
+ if (!lookup())
+ return;
// part->info()->setProjectPartID(m_nextTempProjectPartID--); // temp. part id \
are -1, -2, and so on, m_partlist.append(part->info());
if (!part->info()->partClass().isEmpty())
--- trunk/koffice/kexi/main/KexiMainWindow.cpp #1137172:1137173
@@ -2468,6 +2468,7 @@
if (d->nav)
mainWindowGroup.writeEntry("ProjectNavigatorSize", \
d->nav->parentWidget()->size());
+ if (d->propEditorDockableWidget)
mainWindowGroup.writeEntry("PropertyEditorSize", \
d->propEditorDockableWidget->size());
KGlobal::config()->sync();
@@ -4081,12 +4082,21 @@
}
#endif
-bool KexiMainWindow::openingAllowed(KexiPart::Item* item, Kexi::ViewMode viewMode)
+bool KexiMainWindow::openingAllowed(KexiPart::Item* item, Kexi::ViewMode viewMode, \
QString* errorMessage) {
+ kDebug() << viewMode;
//! @todo this can be more complex once we deliver ACLs...
if (!d->userMode)
return true;
KexiPart::Part * part = Kexi::partManager().partForClass(item->partClass());
+ if (!part) {
+ if (errorMessage) {
+ *errorMessage = Kexi::partManager().errorMsg();
+ }
+ }
+ kDebug() << part << item->partClass();
+ if (part)
+ kDebug() << item->partClass() << part->supportedUserViewModes();
return part && (part->supportedUserViewModes() & viewMode);
}
@@ -4104,7 +4114,7 @@
KexiMainWindow::openObject(KexiPart::Item* item, Kexi::ViewMode viewMode, bool \
&openingCancelled,
QMap<QString, QVariant>* staticObjectArgs, QString* \
errorMessage) {
- if (!openingAllowed(item, viewMode)) {
+ if (!openingAllowed(item, viewMode, errorMessage)) {
if (errorMessage)
*errorMessage = i18nc(
"opening is not allowed in \"data view/design \
view/text view\" mode",
--- trunk/koffice/kexi/main/KexiMainWindow.h #1137172:1137173
@@ -173,7 +173,7 @@
/*! \return true if opening of item \a item in \a viewMode mode is allowed.
userMode() is taken into account as well
as KexiPart::Part::supportedUserViewModes() for \a item. */
- bool openingAllowed(KexiPart::Item* item, Kexi::ViewMode viewMode);
+ bool openingAllowed(KexiPart::Item* item, Kexi::ViewMode viewMode, QString* \
errorMessage = 0);
//TODO REMOVE? virtual bool eventFilter( QObject *obj, QEvent * e );
--- trunk/koffice/kexi/main/KexiMainWindow_p.h #1137172:1137173
@@ -949,7 +949,7 @@
KexiDockWidget *navDockWidget;
KTabWidget *propEditorTabWidget;
KexiDockWidget *propEditorDockWidget;
- KexiDockableWidget* propEditorDockableWidget;
+ QPointer<KexiDockableWidget> propEditorDockableWidget;
//! poits to kexi part which has been previously used to setup proppanel's tabs \
using
//! KexiPart::setupCustomPropertyPanelTabs(), in \
updateCustomPropertyPanelTabs(). QPointer<KexiPart::Part> \
partForPreviouslySetupPropertyPanelTabs;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic