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

List:       kde-commits
Subject:    [calligra/kexi-frameworks7-staniek] kexi: Kexi: Fix crashes related to style proxies: just pass the 
From:       Jaroslaw Staniek <staniek () kde ! org>
Date:       2015-06-30 20:24:25
Message-ID: E1ZA24v-0006Ps-II () scm ! kde ! org
[Download RAW message or body]

Git commit cbbdacea471764fd7f443df5eb1a29f285c97cf0 by Jaroslaw Staniek.
Committed on 30/06/2015 at 20:16.
Pushed by staniek into branch 'kexi-frameworks7-staniek'.

Kexi: Fix crashes related to style proxies: just pass the style name instead of a \
pointer

M  +2    -2    kexi/formeditor/form.cpp
M  +2    -2    kexi/formeditor/form_p.cpp
M  +1    -1    kexi/formeditor/form_p.h
M  +4    -4    kexi/main/KexiMainWindow_p.cpp
M  +1    -1    kexi/main/KexiMainWindow_p.h
M  +3    -3    kexi/plugins/forms/widgets/kexidblineedit.cpp
M  +4    -4    kexi/widget/tableview/KexiTableScrollAreaHeader.cpp
M  +6    -3    kexi/widget/utils/kexicomboboxdropdownbutton.cpp
M  +4    -3    kexi/widget/utils/kexidropdownbutton.cpp

http://commits.kde.org/calligra/cbbdacea471764fd7f443df5eb1a29f285c97cf0

diff --git a/kexi/formeditor/form.cpp b/kexi/formeditor/form.cpp
index 18167ff..e2c56bd 100644
--- a/kexi/formeditor/form.cpp
+++ b/kexi/formeditor/form.cpp
@@ -299,7 +299,7 @@ void Form::createToplevel(QWidget *container, FormWidget \
*formWidget, const QByt  delete d->designModeStyle;
     d->designModeStyle = 0;
     if (d->mode == DesignMode) {
-        d->designModeStyle = new DesignModeStyle(d->topTree->widget()->style());
+        d->designModeStyle = new \
DesignModeStyle(d->topTree->widget()->style()->objectName());  \
d->designModeStyle->setParent(this);  \
d->topTree->widget()->setStyle(d->designModeStyle);  }
@@ -365,7 +365,7 @@ void Form::setMode(Mode mode)
 {
     d->mode = mode;
     if (d->mode == DesignMode) {
-        d->designModeStyle = new DesignModeStyle(d->widget->style());
+        d->designModeStyle = new DesignModeStyle(d->widget->style()->objectName());
         d->designModeStyle->setParent(this);
         d->widget->setStyle(d->designModeStyle);
         return;
diff --git a/kexi/formeditor/form_p.cpp b/kexi/formeditor/form_p.cpp
index b170db8..c09c453 100644
--- a/kexi/formeditor/form_p.cpp
+++ b/kexi/formeditor/form_p.cpp
@@ -28,8 +28,8 @@
 
 using namespace KFormDesigner;
 
-DesignModeStyle::DesignModeStyle(QStyle* parentStyle)
-    : QProxyStyle(parentStyle)
+DesignModeStyle::DesignModeStyle(const QString &baseStyleName)
+    : QProxyStyle(baseStyleName)
 {
 }
 
diff --git a/kexi/formeditor/form_p.h b/kexi/formeditor/form_p.h
index 50626b4..dcc174f 100644
--- a/kexi/formeditor/form_p.h
+++ b/kexi/formeditor/form_p.h
@@ -50,7 +50,7 @@ class ObjectTree;
 class DesignModeStyle : public QProxyStyle
 {
 public:
-    explicit DesignModeStyle(QStyle* parentStyle);
+    explicit DesignModeStyle(const QString &baseStyleName);
 
     //! Reimplemented to remove handling of the State_MouseOver state.
     virtual void drawControl(ControlElement element, const QStyleOption *option,
diff --git a/kexi/main/KexiMainWindow_p.cpp b/kexi/main/KexiMainWindow_p.cpp
index 6f8f0ce..e82eda1 100644
--- a/kexi/main/KexiMainWindow_p.cpp
+++ b/kexi/main/KexiMainWindow_p.cpp
@@ -231,7 +231,7 @@ void KexiMainMenu::showEvent(QShowEvent * event)
         if (KDE::version() < KDE_MAKE_VERSION(4, 8, 0) // a fix is apparently needed \
for glitch in KDE < 4.8  && styleName == "oxygen")
         {
-            KexiMenuWidgetStyle *customStyle = new \
KexiMenuWidgetStyle(m_menuWidget->style(), this); +            KexiMenuWidgetStyle \
*customStyle = new KexiMenuWidgetStyle(m_menuWidget->style()->objectName(), this);  \
m_menuWidget->setStyle(customStyle);  }
 #endif
@@ -302,8 +302,8 @@ static bool isSpecificTabStyle(const QString &styleName)
     return styleName == "oxygen" || styleName == "qtcurve" || styleName == "gtk+";
 }
 
-KexiTabbedToolBarStyle::KexiTabbedToolBarStyle(QStyle *style)
-  : QProxyStyle(style)
+KexiTabbedToolBarStyle::KexiTabbedToolBarStyle(const QString &baseStyleName)
+  : QProxyStyle(baseStyleName)
 {
 }
 
@@ -455,7 +455,7 @@ KexiTabbedToolBarTabBar::KexiTabbedToolBarTabBar(QWidget *parent)
     : QTabBar(parent)
 {
     setObjectName("tabbar");
-    customStyle = new KexiTabbedToolBarStyle(style());
+    customStyle = new KexiTabbedToolBarStyle(style()->objectName());
     customStyle->setParent(this);
     setStyle(customStyle);
     installEventFilter(parent);
diff --git a/kexi/main/KexiMainWindow_p.h b/kexi/main/KexiMainWindow_p.h
index 2c302ec..d67b424 100644
--- a/kexi/main/KexiMainWindow_p.h
+++ b/kexi/main/KexiMainWindow_p.h
@@ -307,7 +307,7 @@ public:
 class KexiTabbedToolBarStyle : public QProxyStyle
 {
 public:
-    explicit KexiTabbedToolBarStyle(QStyle *style);
+    explicit KexiTabbedToolBarStyle(const QString &baseStyleName);
 
     virtual ~KexiTabbedToolBarStyle();
 
diff --git a/kexi/plugins/forms/widgets/kexidblineedit.cpp \
b/kexi/plugins/forms/widgets/kexidblineedit.cpp index cdb8606..7332778 100644
--- a/kexi/plugins/forms/widgets/kexidblineedit.cpp
+++ b/kexi/plugins/forms/widgets/kexidblineedit.cpp
@@ -56,8 +56,8 @@ public:
 class KexiDBLineEditStyle : public QProxyStyle
 {
 public:
-    explicit KexiDBLineEditStyle(QStyle* parentStyle)
-        : QProxyStyle(parentStyle), indent(0)
+    explicit KexiDBLineEditStyle(const QString &baseStyleName)
+        : QProxyStyle(baseStyleName), indent(0)
     {
     }
     virtual ~KexiDBLineEditStyle() {
@@ -111,7 +111,7 @@ KexiDBLineEdit::KexiDBLineEdit(QWidget *parent)
     connect(this, SIGNAL(cursorPositionChanged(int,int)),
             this, SLOT(slotCursorPositionChanged(int,int)));
 
-    m_internalStyle = new KexiDBLineEditStyle(style());
+    m_internalStyle = new KexiDBLineEditStyle(style()->objectName());
     m_internalStyle->setParent(this);
     m_internalStyle->setIndent(KexiFormUtils::dataSourceTagIcon().width());
     m_inStyleChangeEvent = true; // do not allow QLineEdit::event() to touch the \
                style
diff --git a/kexi/widget/tableview/KexiTableScrollAreaHeader.cpp \
b/kexi/widget/tableview/KexiTableScrollAreaHeader.cpp index 71d6f1c..b7a3e7e 100644
--- a/kexi/widget/tableview/KexiTableScrollAreaHeader.cpp
+++ b/kexi/widget/tableview/KexiTableScrollAreaHeader.cpp
@@ -38,8 +38,8 @@
 class KexiTableScrollAreaHeaderStyle : public QProxyStyle
 {
 public:
-    KexiTableScrollAreaHeaderStyle(QStyle *parentStyle)
-            : QProxyStyle(parentStyle)
+    KexiTableScrollAreaHeaderStyle(const QString &baseStyleName)
+            : QProxyStyle(baseStyleName)
     {
     }
     virtual ~KexiTableScrollAreaHeaderStyle() {}
@@ -123,9 +123,9 @@ KexiTableScrollAreaHeader::KexiTableScrollAreaHeader(Qt::Orientation \
orientation  
 KexiTableScrollAreaHeader::~KexiTableScrollAreaHeader()
 {
+    setModel(0); // avoid referencing deleted model
     setStyle(0);
     delete d->privateStyle;
-    setModel(0); // avoid referencing deleted model
     delete d;
 }
 
@@ -146,7 +146,7 @@ void KexiTableScrollAreaHeader::styleChanged()
         setStyle(0);
         delete static_cast<QStyle*>(d->privateStyle);
     }
-    setStyle(d->privateStyle = new KexiTableScrollAreaHeaderStyle(style()));
+    setStyle(d->privateStyle = new \
KexiTableScrollAreaHeaderStyle(style()->objectName()));  \
d->privateStyle->setParent(this);  d->styleChangeEnabled = true;
 }
diff --git a/kexi/widget/utils/kexicomboboxdropdownbutton.cpp \
b/kexi/widget/utils/kexicomboboxdropdownbutton.cpp index 66004ff..9441a06 100644
--- a/kexi/widget/utils/kexicomboboxdropdownbutton.cpp
+++ b/kexi/widget/utils/kexicomboboxdropdownbutton.cpp
@@ -29,8 +29,8 @@
 class KexiComboBoxDropDownButtonStyle : public QProxyStyle
 {
 public:
-    explicit KexiComboBoxDropDownButtonStyle(QStyle *parentStyle)
-            : QProxyStyle(parentStyle)
+    explicit KexiComboBoxDropDownButtonStyle(const QString &baseStyleName)
+            : QProxyStyle(baseStyleName)
     {
     }
     virtual ~KexiComboBoxDropDownButtonStyle() {}
@@ -65,6 +65,9 @@ KexiComboBoxDropDownButton::KexiComboBoxDropDownButton(QWidget \
*parent)  
 KexiComboBoxDropDownButton::~KexiComboBoxDropDownButton()
 {
+    setStyle(0);
+    delete d->privateStyle;
+    d->privateStyle = 0;
     delete d;
 }
 
@@ -77,7 +80,7 @@ void KexiComboBoxDropDownButton::styleChanged()
         setStyle(0);
         delete static_cast<QStyle*>(d->privateStyle);
     }
-    setStyle(d->privateStyle = new KexiComboBoxDropDownButtonStyle(style()));
+    setStyle(d->privateStyle = new \
KexiComboBoxDropDownButtonStyle(style()->objectName()));  \
d->privateStyle->setParent(this);  d->styleChangeEnabled = true;
 }
diff --git a/kexi/widget/utils/kexidropdownbutton.cpp \
b/kexi/widget/utils/kexidropdownbutton.cpp index de0e27b..507335a 100644
--- a/kexi/widget/utils/kexidropdownbutton.cpp
+++ b/kexi/widget/utils/kexidropdownbutton.cpp
@@ -32,8 +32,8 @@
 class KexiDropDownButtonStyle : public QProxyStyle
 {
 public:
-    explicit KexiDropDownButtonStyle(QStyle *parentStyle)
-            : QProxyStyle(parentStyle)
+    explicit KexiDropDownButtonStyle(const QString &baseStyleName)
+            : QProxyStyle(baseStyleName)
     {
     }
     virtual ~KexiDropDownButtonStyle() {}
@@ -65,7 +65,7 @@ KexiDropDownButton::KexiDropDownButton(QWidget *parent)
         : QToolButton(parent)
 {
     setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
-    KexiDropDownButtonStyle *s = new KexiDropDownButtonStyle(style());
+    KexiDropDownButtonStyle *s = new KexiDropDownButtonStyle(style()->objectName());
     setStyle(s);
     s->setParent(this);
 //! @todo get this from a KStyle
@@ -82,6 +82,7 @@ KexiDropDownButton::KexiDropDownButton(QWidget *parent)
 
 KexiDropDownButton::~KexiDropDownButton()
 {
+    setStyle(0);
 }
 
 QSize KexiDropDownButton::sizeHint() const


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

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