Il 05/11/2013 01:07, Thiago Macieira ha scritto:
Pastebin URL (expires in 24 hours):
http://paste.fedoraproject.org/51643/61145013

---
diff --git a/src/widgets/dialogs/qcolordialog.h 
b/src/widgets/dialogs/qcolordialog.h
index 80a31c4..c7a1d6f 100644
--- a/src/widgets/dialogs/qcolordialog.h
+++ b/src/widgets/dialogs/qcolordialog.h
@@ -112,6 +112,9 @@ Q_SIGNALS:

  protected:
      void changeEvent(QEvent *event);
+    virtual void mouseMoveEvent(QMouseEvent *);
+    virtual void mouseReleaseEvent(QMouseEvent *);
+    virtual void keyPressEvent(QKeyEvent *);
      void done(int result);

This is ""dangerous"" -- if a subclass overrode those methods, they won't be called :(

Need to carefully examine the code (d928dbbc) to figure out if it's OK to not invoke those methods, or not doing so will break the class. Cf.

http://techbase.kde.org/Policies/Binary_Compatibility_Issues_With_C++#Adding_a_reimplemented_virtual_function
http://marcmutz.wordpress.com/2010/07/25/bcsc-gotcha-reimplementing-a-virtual-function/



  class Q_WIDGETS_EXPORT QFileDialog : public QDialog
  {
@@ -90,7 +90,8 @@ public:
          DontUseSheet                = 0x00000008,
          DontUseNativeDialog         = 0x00000010,
          ReadOnly                    = 0x00000020,
-        HideNameFilterDetails = 0x00000040
+        HideNameFilterDetails       = 0x00000040,
+        DontUseCustomDirectoryIcons = 0x00000080
      };
      Q_DECLARE_FLAGS(Options, Option)

@@ -105,9 +106,15 @@ public:
      inline void setDirectory(const QDir &directory);
      QDir directory() const;

+    void setDirectoryUrl(const QUrl &directory);
+    QUrl directoryUrl() const;
+
      void selectFile(const QString &filename);
      QStringList selectedFiles() const;

+    void selectUrl(const QUrl &url);
+    QList<QUrl> selectedUrls() const;

Is this by design? Why one is allowed to select *one* URL, but then retrieve a list of selected ones? Should selectUrl get the same kind of modifiers of QItemSelectionModel::select?

+
+    void setCheckBox(QCheckBox *cb);
+    QCheckBox* checkBox() const;
+

Minor, style violation

+
+    void setResizeContentsPrecision(int precision, bool resizeNow = true);
+    int  resizeContentsPrecision() const;

Boolean trap, and style violation

diff --git a/src/widgets/itemviews/qtableview.h 
b/src/widgets/itemviews/qtableview.h
index 824348d..db95648 100644
--- a/src/widgets/itemviews/qtableview.h
+++ b/src/widgets/itemviews/qtableview.h
@@ -118,6 +118,8 @@ public:

      void sortByColumn(int column, Qt::SortOrder order);

+    QSize viewportSizeHint() const;
+

Style violation (Q_DECL_OVERRIDE). Same issue with introducing a virtual method override in the middle of a hierarchy. Also, this is protected in QAbstractScrollArea, not public.

diff --git a/src/widgets/itemviews/qtreeview.h 
b/src/widgets/itemviews/qtreeview.h
index 73f11f1..a29e9b6 100644
--- a/src/widgets/itemviews/qtreeview.h
+++ b/src/widgets/itemviews/qtreeview.h
@@ -128,6 +128,9 @@ public:
      void setWordWrap(bool on);
      bool wordWrap() const;

+    void setTreePosition(int logicalIndex);
+    int treePosition() const;
+
      void keyboardSearch(const QString &search);

      QRect visualRect(const QModelIndex &index) const;
@@ -144,6 +147,8 @@ public:
      void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const 
QVector<int> &roles = QVector<int>());
      void selectAll();

+    QSize viewportSizeHint() const;
+

Ditto

  Q_SIGNALS:
      void expanded(const QModelIndex &index);
      void collapsed(const QModelIndex &index);
@@ -219,6 +224,7 @@ private:
      friend class QAccessibleTree;
      friend class QAccessibleTableCell;
      int visualIndex(const QModelIndex &index) const;
+    int accessibleTree2Index(const QModelIndex &index) const;

Not happy with the function name. Why is this even here? Can't it go into the private?

diff --git a/src/widgets/kernel/qlayout.h b/src/widgets/kernel/qlayout.h
index 6f43c2b..ca5f6d4 100644
--- a/src/widgets/kernel/qlayout.h
+++ b/src/widgets/kernel/qlayout.h
@@ -130,6 +130,7 @@ public:
      virtual int count() const = 0;
      bool isEmpty() const;
      QSizePolicy::ControlTypes controlTypes() const;
+    QLayoutItem* replaceWidget(QWidget *from, QWidget *to, bool recursive = 
true);

Style violation + boolean trap

diff --git a/src/widgets/util/qsystemtrayicon.h 
b/src/widgets/util/qsystemtrayicon.h
index 278efae..d6ba553 100644
--- a/src/widgets/util/qsystemtrayicon.h
+++ b/src/widgets/util/qsystemtrayicon.h
@@ -94,8 +94,6 @@ public:
      static bool supportsMessages();

      enum MessageIcon { NoIcon, Information, Warning, Critical };
-    void showMessage(const QString &title, const QString &msg,
-                     MessageIcon icon = Information, int msecs = 10000);

      QRect geometry() const;
      bool isVisible() const;
@@ -104,6 +102,8 @@ public Q_SLOTS:
      void setVisible(bool visible);
      inline void show() { setVisible(true); }
      inline void hide() { setVisible(false); }
+    void showMessage(const QString &title, const QString &msg,
+                     QSystemTrayIcon::MessageIcon icon = 
QSystemTrayIcon::Information, int msecs = 10000);

Probably more useful as a Q_INVOKABLE rather than a slot? Not sure who's going to emit signals matching this signature...

diff --git a/src/widgets/widgets/qdialogbuttonbox.h 
b/src/widgets/widgets/qdialogbuttonbox.h
index 6715c59..d8e1a99 100644
--- a/src/widgets/widgets/qdialogbuttonbox.h
+++ b/src/widgets/widgets/qdialogbuttonbox.h
@@ -115,7 +115,8 @@ public:

      QDialogButtonBox(QWidget *parent = 0);
      QDialogButtonBox(Qt::Orientation orientation, QWidget *parent = 0);
-    QDialogButtonBox(StandardButtons buttons, Qt::Orientation orientation = 
Qt::Horizontal,
+    explicit QDialogButtonBox(StandardButtons buttons, QWidget *parent = 0);
+    QDialogButtonBox(StandardButtons buttons, Qt::Orientation orientation,
                       QWidget *parent = 0);
      ~QDialogButtonBox();

Change of a default parameter, but totally compatible

diff --git a/src/widgets/widgets/qlineedit.h b/src/widgets/widgets/qlineedit.h
index e2b9443..3d52863 100644
--- a/src/widgets/widgets/qlineedit.h
+++ b/src/widgets/widgets/qlineedit.h
@@ -59,12 +59,14 @@ class QCompleter;
  class QStyleOptionFrame;
  class QAbstractSpinBox;
  class QDateTimeEdit;
+class QIcon;
+class QToolButton;

  class Q_WIDGETS_EXPORT QLineEdit : public QWidget
  {
      Q_OBJECT

-    Q_ENUMS(EchoMode)
+    Q_ENUMS(ActionPosition EchoMode)
      Q_PROPERTY(QString inputMask READ inputMask WRITE setInputMask)
      Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged USER 
true)
      Q_PROPERTY(int maxLength READ maxLength WRITE setMaxLength)
@@ -83,8 +85,13 @@ class Q_WIDGETS_EXPORT QLineEdit : public QWidget
      Q_PROPERTY(bool acceptableInput READ hasAcceptableInput)
      Q_PROPERTY(QString placeholderText READ placeholderText WRITE 
setPlaceholderText)
      Q_PROPERTY(Qt::CursorMoveStyle cursorMoveStyle READ cursorMoveStyle WRITE 
setCursorMoveStyle)
-
+    Q_PROPERTY(bool clearButtonEnabled READ isClearButtonEnabled WRITE 
setClearButtonEnabled)
  public:
+    enum ActionPosition {
+        LeadingPosition,
+        TrailingPosition
+    };
+
      explicit QLineEdit(QWidget* parent=0);
      explicit QLineEdit(const QString &, QWidget* parent=0);
      ~QLineEdit();
@@ -102,6 +109,9 @@ public:
      void setFrame(bool);
      bool hasFrame() const;

+    void setClearButtonEnabled(bool enable);
+    bool isClearButtonEnabled() const;
+
      enum EchoMode { Normal, NoEcho, Password, PasswordEchoOnEdit };
      EchoMode echoMode() const;
      void setEchoMode(EchoMode);
@@ -164,6 +174,16 @@ public:
      void getTextMargins(int *left, int *top, int *right, int *bottom) const;
      QMargins textMargins() const;

+#ifdef Q_NO_USING_KEYWORD
+    inline void addAction(QAction *action)
+    { QWidget::addAction(action); }
+#else
+    using QWidget::addAction;
+#endif
+
+    void addAction(QAction *action, ActionPosition position);
+    QAction *addAction(const QIcon &icon, ActionPosition position);
+

See Thiago's comment about Q_NO_USING_KEYWORD, apparently is never defined any more.

diff --git a/src/widgets/widgets/qmaccocoaviewcontainer_mac.h 
b/src/widgets/widgets/qmaccocoaviewcontainer_mac.h
index b89b796..31172cb 100644
--- a/src/widgets/widgets/qmaccocoaviewcontainer_mac.h
+++ b/src/widgets/widgets/qmaccocoaviewcontainer_mac.h
@@ -44,20 +44,20 @@

  #include <QtWidgets/QWidget>

-QT_BEGIN_NAMESPACE
+Q_FORWARD_DECLARE_OBJC_CLASS(NSView);

+QT_BEGIN_NAMESPACE

  class QMacCocoaViewContainerPrivate;
-
  class Q_WIDGETS_EXPORT QMacCocoaViewContainer : public QWidget
  {
      Q_OBJECT
  public:
-    QMacCocoaViewContainer(void *cocoaViewToWrap, QWidget *parent = 0);
+    QMacCocoaViewContainer(NSView *cocoaViewToWrap, QWidget *parent = 0);
      virtual ~QMacCocoaViewContainer();

-    void setCocoaView(void *cocoaViewToWrap);
-    void *cocoaView() const;
+    void setCocoaView(NSView *view);
+    NSView *cocoaView() const;

  private:
      Q_DECLARE_PRIVATE(QMacCocoaViewContainer)

Isn't this binary and source incompatible?


diff --git a/src/widgets/widgets/qmacnativewidget_mac.h 
b/src/widgets/widgets/qmacnativewidget_mac.h
index 796d7b3..dd433a4 100644
--- a/src/widgets/widgets/qmacnativewidget_mac.h
+++ b/src/widgets/widgets/qmacnativewidget_mac.h
@@ -44,20 +44,23 @@

  #include <QtWidgets/QWidget>

-QT_BEGIN_NAMESPACE
+Q_FORWARD_DECLARE_OBJC_CLASS(NSView);

+QT_BEGIN_NAMESPACE

  class QMacNativeWidgetPrivate;
  class Q_WIDGETS_EXPORT QMacNativeWidget : public QWidget
  {
      Q_OBJECT
  public:
-    QMacNativeWidget(void *parentRef = 0);
+    QMacNativeWidget(NSView *parentView = 0);
      ~QMacNativeWidget();

      QSize sizeHint() const;
+    NSView *nativeView() const;

  protected:
+    void init(NSView *parentView);
      bool event(QEvent *ev);

  private:

Same thing


--- a/src/widgets/widgets/qmenu.h
+++ b/src/widgets/widgets/qmenu.h
@@ -50,6 +50,9 @@
  #ifdef Q_OS_WINCE
  #include <windef.h> // for HMENU
  #endif
+#ifdef Q_OS_OSX
+Q_FORWARD_DECLARE_OBJC_CLASS(NSMenu);
+#endif

  QT_BEGIN_NAMESPACE

@@ -141,6 +144,10 @@ public:
  #ifdef Q_OS_WINCE
      HMENU wceMenu();
  #endif
+#ifdef Q_OS_OSX
+    NSMenu* toNSMenu();
+    void setAsDockMenu();
+#endif

Is it OK to reintroduce platform specific calls in the APIs? I would've expected this kind of functionality to be provided by QtMacExtras. (No, I'm not happy about that wceMenu either).

@@ -204,6 +211,11 @@ private:
      friend void qt_mac_menu_emit_hovered(QMenu *menu, QAction *action);
  };

+#ifdef Q_OS_OSX
+// ### Qt 4 compatibility; remove in Qt 6
+inline QT_DEPRECATED void qt_mac_set_dock_menu(QMenu *menu) { 
menu->setAsDockMenu(); }
+#endif
+

Ditto

  QT_END_NAMESPACE
diff --git a/src/widgets/widgets/qmenubar.h b/src/widgets/widgets/qmenubar.h
index e88a0c0..60eebee 100644
--- a/src/widgets/widgets/qmenubar.h
+++ b/src/widgets/widgets/qmenubar.h
@@ -108,6 +108,9 @@ public:
      static void wceCommands(uint command);
      static void wceRefresh();
  #endif
+#ifdef Q_OS_OSX
+    NSMenu* toNSMenu();
+#endif

Ditto


      bool isNativeMenuBar() const;
      void setNativeMenuBar(bool nativeMenuBar);
diff --git a/src/widgets/widgets/qscrollarea.h 
b/src/widgets/widgets/qscrollarea.h
index 576c9bc..70af5fb 100644
--- a/src/widgets/widgets/qscrollarea.h
+++ b/src/widgets/widgets/qscrollarea.h
@@ -69,6 +69,8 @@ public:
      void setWidgetResizable(bool resizable);

      QSize sizeHint() const;
+    QSize viewportSizeHint() const;
+

Same problems as above (style, override in mid hierarchy, wrong visibility).

diff --git a/src/widgets/widgets/qtabbar.h b/src/widgets/widgets/qtabbar.h
index 72c19ab..1f7b8f6 100644
--- a/src/widgets/widgets/qtabbar.h
+++ b/src/widgets/widgets/qtabbar.h
@@ -173,6 +173,8 @@ Q_SIGNALS:
      void currentChanged(int index);
      void tabCloseRequested(int index);
      void tabMoved(int from, int to);
+    void tabBarClicked(int index);
+    void tabBarDoubleClicked(int index);

  protected:
      virtual QSize tabSizeHint(int index) const;
@@ -186,6 +188,7 @@ protected:
      void showEvent(QShowEvent *);
      void hideEvent(QHideEvent *);
      void paintEvent(QPaintEvent *);
+    void mouseDoubleClickEvent(QMouseEvent *);
      void mousePressEvent (QMouseEvent *);
      void mouseMoveEvent (QMouseEvent *);
      void mouseReleaseEvent (QMouseEvent *);

Same problem with overriding in mid hierarchy.

Thanks,
--
Join us at Qt Developer Days 2013! - https://devdays.kdab.com
Giuseppe D'Angelo | [email protected] | Software Engineer
KDAB (UK) Ltd., a KDAB Group company
Tel. UK +44-1738-450410, Sweden (HQ) +46-563-540090
KDAB - Qt Experts - Platform-independent software solutions

Attachment: smime.p7s
Description: Firma crittografica S/MIME

_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to