You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
358 lines
12 KiB
358 lines
12 KiB
This patch puts back external contributions to dbusmenu-qt and will hopefully
|
|
go away when copyright issues in upstream project are resolved.
|
|
|
|
Index: libdbusmenu-qt-0.6.3/.gitattributes
|
|
===================================================================
|
|
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
|
+++ libdbusmenu-qt-0.6.3/.gitattributes 2010-09-16 17:11:42.000000000 +0200
|
|
@@ -0,0 +1 @@
|
|
+org.ayatana.dbusmenu.xml -crlf
|
|
Index: libdbusmenu-qt-0.6.3/.krazy
|
|
===================================================================
|
|
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
|
+++ libdbusmenu-qt-0.6.3/.krazy 2010-09-16 17:11:42.000000000 +0200
|
|
@@ -0,0 +1 @@
|
|
+SKIP /tests/
|
|
Index: libdbusmenu-qt-0.6.3/CMakeLists.txt
|
|
===================================================================
|
|
--- libdbusmenu-qt-0.6.3.orig/CMakeLists.txt 2010-09-16 17:10:25.000000000 +0200
|
|
+++ libdbusmenu-qt-0.6.3/CMakeLists.txt 2010-09-16 17:11:42.000000000 +0200
|
|
@@ -36,7 +36,7 @@
|
|
set(dbusmenu_qt_lib_PATCH_VERSION 3)
|
|
set(dbusmenu_qt_lib_VERSION ${dbusmenu_qt_lib_SOVERSION}.${dbusmenu_qt_lib_API_VERSION}.${dbusmenu_qt_lib_PATCH_VERSION})
|
|
|
|
-find_package(Qt4 REQUIRED)
|
|
+find_package(Qt4 4.6.0 REQUIRED)
|
|
|
|
include_directories(
|
|
${QT_INCLUDE_DIR}
|
|
@@ -52,6 +52,10 @@
|
|
DESTINATION lib${LIB_SUFFIX}/pkgconfig
|
|
)
|
|
|
|
+option(BUILD_TESTS "Build tests" ON)
|
|
+
|
|
add_subdirectory(src)
|
|
-add_subdirectory(tests)
|
|
+if (BUILD_TESTS)
|
|
+ add_subdirectory(tests)
|
|
+endif (BUILD_TESTS)
|
|
add_subdirectory(tools)
|
|
Index: libdbusmenu-qt-0.6.3/cmake/modules/FindQJSON.cmake
|
|
===================================================================
|
|
--- libdbusmenu-qt-0.6.3.orig/cmake/modules/FindQJSON.cmake 2010-09-16 17:10:25.000000000 +0200
|
|
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
|
|
@@ -1,44 +0,0 @@
|
|
-# Find QJSON - JSON handling library for Qt
|
|
-#
|
|
-# This module defines
|
|
-# QJSON_FOUND - whether the qsjon library was found
|
|
-# QJSON_LIBRARIES - the qjson library
|
|
-# QJSON_INCLUDE_DIR - the include path of the qjson library
|
|
-#
|
|
-
|
|
-if (QJSON_INCLUDE_DIR AND QJSON_LIBRARIES)
|
|
-
|
|
- # Already in cache
|
|
- set (QJSON_FOUND TRUE)
|
|
-
|
|
-else (QJSON_INCLUDE_DIR AND QJSON_LIBRARIES)
|
|
-
|
|
- if (NOT WIN32)
|
|
- # use pkg-config to get the values of QJSON_INCLUDE_DIRS
|
|
- # and QJSON_LIBRARY_DIRS to add as hints to the find commands.
|
|
- include (FindPkgConfig)
|
|
- pkg_check_modules (QJSON QJson>=0.5)
|
|
- endif (NOT WIN32)
|
|
-
|
|
- find_library (QJSON_LIBRARIES
|
|
- NAMES
|
|
- qjson
|
|
- PATHS
|
|
- ${QJSON_LIBRARY_DIRS}
|
|
- ${LIB_INSTALL_DIR}
|
|
- ${KDE4_LIB_DIR}
|
|
- )
|
|
-
|
|
- find_path (QJSON_INCLUDE_DIR
|
|
- NAMES
|
|
- qjson/parser.h
|
|
- PATHS
|
|
- ${QJSON_INCLUDE_DIRS}
|
|
- ${INCLUDE_INSTALL_DIR}
|
|
- ${KDE4_INCLUDE_DIR}
|
|
- )
|
|
-
|
|
- include(FindPackageHandleStandardArgs)
|
|
- find_package_handle_standard_args(QJSON DEFAULT_MSG QJSON_LIBRARIES QJSON_INCLUDE_DIR)
|
|
-
|
|
-endif (QJSON_INCLUDE_DIR AND QJSON_LIBRARIES)
|
|
Index: libdbusmenu-qt-0.6.3/cmake/modules/FindQJson.cmake
|
|
===================================================================
|
|
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
|
+++ libdbusmenu-qt-0.6.3/cmake/modules/FindQJson.cmake 2010-09-16 17:11:42.000000000 +0200
|
|
@@ -0,0 +1,39 @@
|
|
+# - Try to find the QJson library
|
|
+# Once done this will define
|
|
+#
|
|
+# QJSON_FOUND - system has the QJson library
|
|
+# QJSON_INCLUDE_DIR - the QJson include directory
|
|
+# QJSON_LIBRARY - Link this to use the QJson library
|
|
+#
|
|
+# Copyright (c) 2010, Pino Toscano, <toscano.pino@tiscali.it>
|
|
+#
|
|
+# Redistribution and use is allowed according to the terms of the BSD license.
|
|
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
|
+
|
|
+if (QJSON_INCLUDE_DIR AND QJSON_LIBRARY)
|
|
+
|
|
+ # in cache already
|
|
+ set(QJSON_FOUND TRUE)
|
|
+
|
|
+else (QJSON_INCLUDE_DIR AND QJSON_LIBRARY)
|
|
+ if (NOT WIN32)
|
|
+ find_package(PkgConfig)
|
|
+ pkg_check_modules(PC_QJSON QJson)
|
|
+ endif(NOT WIN32)
|
|
+
|
|
+ find_path(QJSON_INCLUDE_DIR qjson/parser.h
|
|
+ HINTS
|
|
+ ${PC_QJSON_INCLUDE_DIRS}
|
|
+ )
|
|
+
|
|
+ find_library(QJSON_LIBRARY NAMES qjson
|
|
+ HINTS
|
|
+ ${PC_QJSON_LIBRARY_DIRS}
|
|
+ )
|
|
+
|
|
+ include(FindPackageHandleStandardArgs)
|
|
+ find_package_handle_standard_args(QJson DEFAULT_MSG QJSON_LIBRARY QJSON_INCLUDE_DIR)
|
|
+
|
|
+ mark_as_advanced(QJSON_INCLUDE_DIR QJSON_LIBRARY)
|
|
+
|
|
+endif (QJSON_INCLUDE_DIR AND QJSON_LIBRARY)
|
|
Index: libdbusmenu-qt-0.6.3/dbusmenu-qt.pc.in
|
|
===================================================================
|
|
--- libdbusmenu-qt-0.6.3.orig/dbusmenu-qt.pc.in 2010-09-16 17:10:25.000000000 +0200
|
|
+++ libdbusmenu-qt-0.6.3/dbusmenu-qt.pc.in 2010-09-16 17:11:42.000000000 +0200
|
|
@@ -1,6 +1,6 @@
|
|
prefix=@CMAKE_INSTALL_PREFIX@
|
|
exec_prefix=@CMAKE_INSTALL_PREFIX@
|
|
-libdir=@CMAKE_INSTALL_PREFIX@/lib
|
|
+libdir=@CMAKE_INSTALL_PREFIX@/lib@LIB_SUFFIX@
|
|
includedir=@CMAKE_INSTALL_PREFIX@/include/dbusmenu-qt
|
|
|
|
Name: libdbusmenu-qt
|
|
Index: libdbusmenu-qt-0.6.3/src/CMakeLists.txt
|
|
===================================================================
|
|
--- libdbusmenu-qt-0.6.3.orig/src/CMakeLists.txt 2010-09-16 17:10:25.000000000 +0200
|
|
+++ libdbusmenu-qt-0.6.3/src/CMakeLists.txt 2010-09-16 17:11:42.000000000 +0200
|
|
@@ -17,6 +17,10 @@
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
|
|
endif (__DBUSMENU_HAVE_W_ALL)
|
|
|
|
+if (MSVC)
|
|
+ add_definitions(-D__PRETTY_FUNCTION__=__FUNCTION__)
|
|
+endif (MSVC)
|
|
+
|
|
# Check whether QIcon::name() exists. It was added in late Qt 4.7 cycle, and is
|
|
# not present in betas.
|
|
set(CMAKE_REQUIRED_INCLUDES "${QT_INCLUDE_DIR}")
|
|
@@ -34,6 +38,7 @@
|
|
endif()
|
|
configure_file(dbusmenu_config.h.in ${CMAKE_CURRENT_BINARY_DIR}/dbusmenu_config.h @ONLY)
|
|
|
|
+
|
|
set(dbusmenu_qt_SRCS
|
|
dbusmenu_p.cpp
|
|
dbusmenuexporter.cpp
|
|
@@ -74,7 +79,10 @@
|
|
)
|
|
|
|
install(TARGETS dbusmenu-qt
|
|
- LIBRARY DESTINATION lib${LIB_SUFFIX})
|
|
+ LIBRARY DESTINATION lib${LIB_SUFFIX}
|
|
+ ARCHIVE DESTINATION lib
|
|
+ RUNTIME DESTINATION bin
|
|
+)
|
|
|
|
install(DIRECTORY .
|
|
DESTINATION include/dbusmenu-qt
|
|
Index: libdbusmenu-qt-0.6.3/src/dbusmenuexporter.cpp
|
|
===================================================================
|
|
--- libdbusmenu-qt-0.6.3.orig/src/dbusmenuexporter.cpp 2010-09-16 17:10:25.000000000 +0200
|
|
+++ libdbusmenu-qt-0.6.3/src/dbusmenuexporter.cpp 2010-09-16 17:11:42.000000000 +0200
|
|
@@ -79,6 +79,7 @@
|
|
{
|
|
QVariantMap map;
|
|
map.insert("enabled", false);
|
|
+ map.insert("x-kde-title", true);
|
|
|
|
const QWidgetAction *widgetAction = qobject_cast<const QWidgetAction *>(action_);
|
|
DMRETURN_VALUE_IF_FAIL(widgetAction, map);
|
|
Index: libdbusmenu-qt-0.6.3/src/dbusmenuimporter.cpp
|
|
===================================================================
|
|
--- libdbusmenu-qt-0.6.3.orig/src/dbusmenuimporter.cpp 2010-09-16 17:10:25.000000000 +0200
|
|
+++ libdbusmenu-qt-0.6.3/src/dbusmenuimporter.cpp 2010-09-16 17:11:42.000000000 +0200
|
|
@@ -32,6 +32,8 @@
|
|
#include <QSignalMapper>
|
|
#include <QTime>
|
|
#include <QTimer>
|
|
+#include <QToolButton>
|
|
+#include <QWidgetAction>
|
|
|
|
// Local
|
|
#include "dbusmenuitem_p.h"
|
|
@@ -41,7 +43,6 @@
|
|
|
|
//#define BENCHMARK
|
|
#ifdef BENCHMARK
|
|
-#include <QTime>
|
|
static QTime sChrono;
|
|
#endif
|
|
|
|
@@ -66,6 +67,29 @@
|
|
DBusMenuImporterMethod m_method;
|
|
};
|
|
|
|
+class EventSniffer : public QObject
|
|
+{
|
|
+public:
|
|
+ EventSniffer(QObject *parent = 0)
|
|
+ : QObject(parent) { }
|
|
+
|
|
+ ~EventSniffer() { }
|
|
+
|
|
+ bool eventFilter(QObject *object, QEvent *event)
|
|
+ {
|
|
+ Q_UNUSED(object);
|
|
+
|
|
+ if (event->type() == QEvent::Paint ||
|
|
+ event->type() == QEvent::KeyPress ||
|
|
+ event->type() == QEvent::KeyRelease) {
|
|
+ return false;
|
|
+ }
|
|
+
|
|
+ event->accept();
|
|
+ return true;
|
|
+ }
|
|
+};
|
|
+
|
|
class DBusMenuImporterPrivate
|
|
{
|
|
public:
|
|
@@ -143,8 +167,30 @@
|
|
group->addAction(action);
|
|
}
|
|
}
|
|
+
|
|
+ bool isMenuTitle = map.take("x-kde-title").toBool();
|
|
+
|
|
updateAction(action, map, map.keys());
|
|
|
|
+ if (isMenuTitle) {
|
|
+ QAction *buttonAction = action;
|
|
+ QFont font = buttonAction->font();
|
|
+ font.setBold(true);
|
|
+ buttonAction->setFont(font);
|
|
+ buttonAction->setEnabled(true);
|
|
+
|
|
+ QWidgetAction *action = new QWidgetAction(parent);
|
|
+ action->setObjectName("kmenu_title");
|
|
+ QToolButton *titleButton = new QToolButton(0);
|
|
+ EventSniffer *eventSniffer = new EventSniffer(titleButton);
|
|
+ titleButton->installEventFilter(eventSniffer); // prevent clicks on the title of the menu
|
|
+ titleButton->setDefaultAction(buttonAction);
|
|
+ titleButton->setDown(true); // prevent hover style changes in some styles
|
|
+ titleButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
|
+ action->setDefaultWidget(titleButton);
|
|
+ return action;
|
|
+ }
|
|
+
|
|
return action;
|
|
}
|
|
|
|
Index: libdbusmenu-qt-0.6.3/src/dbusmenuimporter.h
|
|
===================================================================
|
|
--- libdbusmenu-qt-0.6.3.orig/src/dbusmenuimporter.h 2010-09-16 17:10:25.000000000 +0200
|
|
+++ libdbusmenu-qt-0.6.3/src/dbusmenuimporter.h 2010-09-16 17:11:42.000000000 +0200
|
|
@@ -109,12 +109,12 @@
|
|
void dispatch(QDBusPendingCallWatcher *);
|
|
void sendClickedEvent(int);
|
|
void slotItemUpdated(int id);
|
|
+ void slotLayoutUpdated(uint revision, int parentId);
|
|
void slotMenuAboutToShow();
|
|
void slotAboutToShowDBusCallFinished(QDBusPendingCallWatcher *);
|
|
void slotItemPropertyUpdated(int id, const QString &key, const QDBusVariant &value);
|
|
void slotItemActivationRequested(int id, uint timestamp);
|
|
void processPendingLayoutUpdates();
|
|
- void slotLayoutUpdated(uint revision, int parentId);
|
|
|
|
private:
|
|
Q_DISABLE_COPY(DBusMenuImporter)
|
|
Index: libdbusmenu-qt-0.6.3/src/dbusmenushortcut_p.cpp
|
|
===================================================================
|
|
--- libdbusmenu-qt-0.6.3.orig/src/dbusmenushortcut_p.cpp 2010-09-16 17:10:25.000000000 +0200
|
|
+++ libdbusmenu-qt-0.6.3/src/dbusmenushortcut_p.cpp 2010-09-16 17:11:42.000000000 +0200
|
|
@@ -29,6 +29,11 @@
|
|
static const int QT_COLUMN = 0;
|
|
static const int DM_COLUMN = 1;
|
|
|
|
+#ifdef _MSC_VER
|
|
+// dummy implementation to make MSVC happy (due to QList::toSet())
|
|
+uint qHash( const QStringList& key ) { return 0; }
|
|
+#endif
|
|
+
|
|
static void processKeyTokens(QStringList* tokens, int srcCol, int dstCol)
|
|
{
|
|
struct Row {
|
|
Index: libdbusmenu-qt-0.6.3/src/dbusmenushortcut_p.h
|
|
===================================================================
|
|
--- libdbusmenu-qt-0.6.3.orig/src/dbusmenushortcut_p.h 2010-09-16 17:10:25.000000000 +0200
|
|
+++ libdbusmenu-qt-0.6.3/src/dbusmenushortcut_p.h 2010-09-16 17:11:42.000000000 +0200
|
|
@@ -38,6 +38,10 @@
|
|
static DBusMenuShortcut fromKeySequence(const QKeySequence&);
|
|
};
|
|
|
|
+#ifdef _MSC_VER
|
|
+uint qHash( const QStringList& key );
|
|
+#endif
|
|
+
|
|
Q_DECLARE_METATYPE(DBusMenuShortcut)
|
|
|
|
#endif /* DBUSMENUSHORTCUT_H */
|
|
Index: libdbusmenu-qt-0.6.3/tools/CMakeLists.txt
|
|
===================================================================
|
|
--- libdbusmenu-qt-0.6.3.orig/tools/CMakeLists.txt 2010-09-16 17:10:25.000000000 +0200
|
|
+++ libdbusmenu-qt-0.6.3/tools/CMakeLists.txt 2010-09-16 17:11:42.000000000 +0200
|
|
@@ -1,7 +1,11 @@
|
|
-find_package(QJSON)
|
|
-if (QJSON_FOUND)
|
|
- message(STATUS "QJSON found, testapp will be built")
|
|
- add_subdirectory(testapp)
|
|
-else (QJSON_FOUND)
|
|
- message(STATUS "QJSON not found, testapp will not be built")
|
|
-endif (QJSON_FOUND)
|
|
+if (BUILD_TESTS)
|
|
+ find_package(QJson)
|
|
+ if (QJSON_FOUND)
|
|
+ message(STATUS "QJSON found and tests enabled, testapp will be built")
|
|
+ add_subdirectory(testapp)
|
|
+ else (QJSON_FOUND)
|
|
+ message(STATUS "QJSON not found, testapp will not be built")
|
|
+ endif (QJSON_FOUND)
|
|
+else (BUILD_TESTS)
|
|
+ message(STATUS "Tests disabled, testapp will not be built")
|
|
+endif (BUILD_TESTS)
|
|
Index: libdbusmenu-qt-0.6.3/tools/testapp/CMakeLists.txt
|
|
===================================================================
|
|
--- libdbusmenu-qt-0.6.3.orig/tools/testapp/CMakeLists.txt 2010-09-16 17:10:25.000000000 +0200
|
|
+++ libdbusmenu-qt-0.6.3/tools/testapp/CMakeLists.txt 2010-09-16 17:11:42.000000000 +0200
|
|
@@ -19,5 +19,5 @@
|
|
${QT_QTGUI_LIBRARY}
|
|
${QT_QTCORE_LIBRARY}
|
|
${QT_QTDBUS_LIBRARY}
|
|
- ${QJSON_LIBRARIES}
|
|
+ ${QJSON_LIBRARY}
|
|
)
|