[gtkmm] Add Gdk::DeviceTool
- From: Kjell Ahlstedt <kjellahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtkmm] Add Gdk::DeviceTool
- Date: Fri, 9 Feb 2018 18:26:49 +0000 (UTC)
commit 442619a338fa409e7dc91561272029271ab1bb16
Author: Kjell Ahlstedt <kjellahlstedt gmail com>
Date: Fri Feb 9 19:23:49 2018 +0100
Add Gdk::DeviceTool
* .gitignore:
* gdk/gdkmm.h:
* gdk/src/filelist.am: Add new filenames.
* gdk/src/devicetool.[ccg|hg]: New files.
* gdk/src/device.[ccg|hg]: Add signal_tool_changed() and property_tool().
* gdk/src/gdk_docs_override.xml: Add substitution for GdkDeviceToolType.
* gdk/src/gdk_extra_objects.defs: Add GdkDeviceTool.
* gdk/src/gdk_signals.defs: Add GdkDeviceTool's properties.
* gdk/src/seat.[ccg|hg]: Add get_master_pointers(), signal_tool_added()
and signal_tool_removed().
* tools/extra_defs_gen/generate_defs_gdk.cc: Add GDK_TYPE_DEVICE_TOOL.
* tools/m4/convert_gdk.m4: Add conversions for GdkDeviceToolType.
.gitignore | 2 +
gdk/gdkmm.h | 1 +
gdk/src/device.ccg | 1 +
gdk/src/device.hg | 7 ++--
gdk/src/devicetool.ccg | 17 ++++++++++
gdk/src/devicetool.hg | 50 +++++++++++++++++++++++++++++
gdk/src/filelist.am | 1 +
gdk/src/gdk_docs_override.xml | 1 +
gdk/src/gdk_extra_objects.defs | 6 +++
gdk/src/gdk_signals.defs | 42 ++++++++++++++++++++++++
gdk/src/seat.ccg | 1 +
gdk/src/seat.hg | 7 ++++
tools/extra_defs_gen/generate_defs_gdk.cc | 1 +
tools/m4/convert_gdk.m4 | 1 +
14 files changed, 135 insertions(+), 3 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index bb9adf1..6e3b3ae 100644
--- a/.gitignore
+++ b/.gitignore
@@ -63,6 +63,8 @@ gdk/gdkmm/cursor.cc
gdk/gdkmm/cursor.h
gdk/gdkmm/device.cc
gdk/gdkmm/device.h
+gdk/gdkmm/devicetool.cc
+gdk/gdkmm/devicetool.h
gdk/gdkmm/display.cc
gdk/gdkmm/display.h
gdk/gdkmm/displaymanager.cc
diff --git a/gdk/gdkmm.h b/gdk/gdkmm.h
index 0e948ef..88c8981 100644
--- a/gdk/gdkmm.h
+++ b/gdk/gdkmm.h
@@ -35,6 +35,7 @@
#include <gdkmm/frameclock.h>
#include <gdkmm/glcontext.h>
#include <gdkmm/rectangle.h>
+#include <gdkmm/devicetool.h>
#include <gdkmm/display.h>
#include <gdkmm/displaymanager.h>
#include <gdkmm/seat.h>
diff --git a/gdk/src/device.ccg b/gdk/src/device.ccg
index 63fd6b9..1300fd1 100644
--- a/gdk/src/device.ccg
+++ b/gdk/src/device.ccg
@@ -17,6 +17,7 @@
#include <gdk/gdk.h>
#include <gdkmm/cursor.h>
+#include <gdkmm/devicetool.h>
#include <gdkmm/display.h>
#include <gdkmm/seat.h>
#include <gdkmm/window.h>
diff --git a/gdk/src/device.hg b/gdk/src/device.hg
index 9b7bd59..3d7f34f 100644
--- a/gdk/src/device.hg
+++ b/gdk/src/device.hg
@@ -37,6 +37,7 @@ _WRAP_ENUM(InputSource, GdkInputSource)
//_WRAP_ENUM(GrabOwnership, GdkGrabOwnership)
_WRAP_ENUM(GrabStatus, GdkGrabStatus)
+class DeviceTool;
class Display;
class Seat;
class Window;
@@ -180,10 +181,9 @@ public:
// We use no_default_handler because _GdkDeviceClass is private.
_WRAP_SIGNAL(void changed(), "changed", no_default_handler, newin "3,22")
+#m4 _CONVERSION(`GdkDeviceTool*',`const Glib::RefPtr<DeviceTool>&', Glib::wrap($3, true))
+ _WRAP_SIGNAL(void tool_changed(const Glib::RefPtr<DeviceTool>& tool), "tool-changed", no_default_handler,
newin "3,94")
- //TODO: Wrap or ignore the "tool" property and the "tool-changed" signal.
- // GdkDeviceTool is not fully documented. It's not clear if it's meant to
- // be used outside gtk+.
_WRAP_PROPERTY("display", Glib::RefPtr<Display>, newin "3,22")
_WRAP_PROPERTY("name", Glib::ustring, newin "3,22")
_WRAP_PROPERTY("type", Type, newin "3,22")
@@ -197,6 +197,7 @@ public:
_WRAP_PROPERTY("seat", Glib::RefPtr<Seat>, newin "3,22")
_WRAP_PROPERTY("num-touches", guint, newin "3,22")
_WRAP_PROPERTY("axes", AxisFlags)
+ _WRAP_PROPERTY("tool", Glib::RefPtr<DeviceTool>, newin "3,94")
};
} // namespace Gdk
diff --git a/gdk/src/devicetool.ccg b/gdk/src/devicetool.ccg
new file mode 100644
index 0000000..4e3ae20
--- /dev/null
+++ b/gdk/src/devicetool.ccg
@@ -0,0 +1,17 @@
+/* Copyright (C) 2018 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+using Type = Gdk::DeviceTool::Type;
diff --git a/gdk/src/devicetool.hg b/gdk/src/devicetool.hg
new file mode 100644
index 0000000..9eb31a1
--- /dev/null
+++ b/gdk/src/devicetool.hg
@@ -0,0 +1,50 @@
+/* Copyright (C) 2018 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <glibmm/object.h>
+#include <gdkmm/enums.h>
+
+_DEFS(gdkmm,gdk)
+_PINCLUDE(glibmm/private/object_p.h)
+
+_CC_INCLUDE(gdk/gdk.h)
+
+namespace Gdk
+{
+//TODO: Add class documentation when GdkDeviceTool is documented.
+/**
+ * @newin{3,94}
+ */
+class DeviceTool : public Glib::Object
+{
+ _CLASS_GOBJECT(DeviceTool, GdkDeviceTool, GDK_DEVICE_TOOL, Glib::Object, GObject)
+
+public:
+ _WRAP_ENUM(Type, GdkDeviceToolType)
+
+ _WRAP_METHOD(guint64 get_serial() const, gdk_device_tool_get_serial)
+ _WRAP_METHOD(guint64 get_hardware_id() const, gdk_device_tool_get_hardware_id)
+ _WRAP_METHOD(Type get_tool_type() const, gdk_device_tool_get_tool_type)
+
+ _WRAP_PROPERTY("serial", guint64)
+ _WRAP_PROPERTY("tool-type", Type)
+ _WRAP_PROPERTY("axes", AxisFlags)
+ _WRAP_PROPERTY("hardware-id", guint64)
+
+ // There are no signals or vfuncs.
+};
+
+} // namespace Gdk
diff --git a/gdk/src/filelist.am b/gdk/src/filelist.am
index eb7e959..a26545e 100644
--- a/gdk/src/filelist.am
+++ b/gdk/src/filelist.am
@@ -20,6 +20,7 @@ gdkmm_files_any_hg = \
contentprovider.hg \
cursor.hg \
device.hg \
+ devicetool.hg \
display.hg \
displaymanager.hg \
dragcontext.hg \
diff --git a/gdk/src/gdk_docs_override.xml b/gdk/src/gdk_docs_override.xml
index 74c914b..c9418c6 100644
--- a/gdk/src/gdk_docs_override.xml
+++ b/gdk/src/gdk_docs_override.xml
@@ -19,6 +19,7 @@
<substitute_enumerator_name from_prefix="CAIRO_FORMAT_" to_prefix="Cairo::Surface::Format::" />
<substitute_enumerator_name from_prefix="GDK_TOUCH_" to_prefix="Gdk::Event::Type::TOUCH_" />
<substitute_enumerator_name from_prefix="GDK_DEVICE_TYPE_" to_prefix="Gdk::Device::Type::" />
+<substitute_enumerator_name from_prefix="GDK_DEVICE_TOOL_TYPE_" to_prefix="Gdk::DeviceTool::Type::" />
<substitute_enumerator_name from_prefix="GDK_ACTION_" to_prefix="Gdk::DragAction::" />
<substitute_enumerator_name from_prefix="GDK_WINDOW_" to_prefix="Gdk::Window::Type::" />
<substitute_enumerator_name from_prefix="GDK_WINDOW_STATE_" to_prefix="Gdk::Window::State::" />
diff --git a/gdk/src/gdk_extra_objects.defs b/gdk/src/gdk_extra_objects.defs
index b179599..4ac1214 100644
--- a/gdk/src/gdk_extra_objects.defs
+++ b/gdk/src/gdk_extra_objects.defs
@@ -42,6 +42,12 @@
(gtype-id "GDK_TYPE_DEVICE")
)
+(define-object DeviceTool
+ (in-module "Gdk")
+ (c-name "GdkDeviceTool")
+ (gtype-id "GDK_TYPE_DEVICE_TOOL")
+)
+
(define-object Display
(in-module "Gdk")
(c-name "GdkDisplay")
diff --git a/gdk/src/gdk_signals.defs b/gdk/src/gdk_signals.defs
index 8da5020..a30e89c 100644
--- a/gdk/src/gdk_signals.defs
+++ b/gdk/src/gdk_signals.defs
@@ -345,6 +345,48 @@
(construct-only #f)
)
+;; From GdkDeviceTool
+
+(define-property serial
+ (of-object "GdkDeviceTool")
+ (prop-type "GParamUInt64")
+ (docs "Serial number")
+ (readable #t)
+ (writable #t)
+ (construct-only #t)
+ (default-value "0")
+)
+
+(define-property tool-type
+ (of-object "GdkDeviceTool")
+ (prop-type "GParamEnum")
+ (docs "Tool type")
+ (readable #t)
+ (writable #t)
+ (construct-only #t)
+ (default-value "GDK_DEVICE_TOOL_TYPE_UNKNOWN")
+)
+
+(define-property axes
+ (of-object "GdkDeviceTool")
+ (prop-type "GParamFlags")
+ (docs "Tool axes")
+ (readable #t)
+ (writable #t)
+ (construct-only #t)
+ (default-value "0")
+)
+
+(define-property hardware-id
+ (of-object "GdkDeviceTool")
+ (prop-type "GParamUInt64")
+ (docs "Hardware ID")
+ (readable #t)
+ (writable #t)
+ (construct-only #t)
+ (default-value "0")
+)
+
;; From GdkDisplay
(define-signal opened
diff --git a/gdk/src/seat.ccg b/gdk/src/seat.ccg
index ff5107f..4f293c9 100644
--- a/gdk/src/seat.ccg
+++ b/gdk/src/seat.ccg
@@ -14,6 +14,7 @@
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
+#include <gdkmm/devicetool.h>
#include <gdkmm/display.h>
#include <gdkmm/window.h>
diff --git a/gdk/src/seat.hg b/gdk/src/seat.hg
index 540245e..d0e02c0 100644
--- a/gdk/src/seat.hg
+++ b/gdk/src/seat.hg
@@ -26,6 +26,7 @@ _PINCLUDE(glibmm/private/object_p.h)
namespace Gdk
{
+class DeviceTool;
class Display;
class Window;
@@ -78,12 +79,18 @@ public:
_WRAP_METHOD(Glib::RefPtr<const Device> get_pointer() const, gdk_seat_get_pointer, refreturn, constversion)
_WRAP_METHOD(Glib::RefPtr<Device> get_keyboard(), gdk_seat_get_keyboard, refreturn)
_WRAP_METHOD(Glib::RefPtr<const Device> get_keyboard() const, gdk_seat_get_keyboard, refreturn,
constversion)
+ _WRAP_METHOD(std::vector<Glib::RefPtr<Device>> get_master_pointers(Capabilities capabilities),
gdk_seat_get_master_pointers)
+ _WRAP_METHOD(std::vector<Glib::RefPtr<const Device>> get_master_pointers(Capabilities capabilities) const,
gdk_seat_get_master_pointers)
// We use no_default_handler because GdkSeatClass is private.
#m4 _CONVERSION(`GdkDevice*',`const Glib::RefPtr<Device>&', Glib::wrap($3, true))
_WRAP_SIGNAL(void device_added(const Glib::RefPtr<Device>& device), "device-added", no_default_handler)
_WRAP_SIGNAL(void device_removed(const Glib::RefPtr<Device>& device), "device-removed", no_default_handler)
+#m4 _CONVERSION(`GdkDeviceTool*',`const Glib::RefPtr<DeviceTool>&', Glib::wrap($3, true))
+ _WRAP_SIGNAL(void tool_added(const Glib::RefPtr<DeviceTool>& device), "tool-added", no_default_handler,
newin "3,94")
+ _WRAP_SIGNAL(void tool_removed(const Glib::RefPtr<DeviceTool>& device), "tool-removed",
no_default_handler, newin "3,94")
+
_WRAP_PROPERTY("display", Glib::RefPtr<Display>)
};
diff --git a/tools/extra_defs_gen/generate_defs_gdk.cc b/tools/extra_defs_gen/generate_defs_gdk.cc
index b130a2f..fc9b7ab 100644
--- a/tools/extra_defs_gen/generate_defs_gdk.cc
+++ b/tools/extra_defs_gen/generate_defs_gdk.cc
@@ -41,6 +41,7 @@ int main(int /* argc */, char** /* argv */)
<< get_defs( GDK_TYPE_DRAG_CONTEXT )
<< get_defs( GDK_TYPE_CURSOR )
<< get_defs( GDK_TYPE_DEVICE )
+ << get_defs( GDK_TYPE_DEVICE_TOOL )
<< get_defs( GDK_TYPE_DISPLAY )
#if !defined(G_OS_WIN32)
<< get_defs( GDK_TYPE_DISPLAY_MANAGER )
diff --git a/tools/m4/convert_gdk.m4 b/tools/m4/convert_gdk.m4
index 9fb7f64..b0f2d26 100644
--- a/tools/m4/convert_gdk.m4
+++ b/tools/m4/convert_gdk.m4
@@ -33,6 +33,7 @@ _CONV_ENUM(Gdk,CapStyle)
_CONV_ENUM(Gdk,Colorspace)
_CONV_ENUM(Gdk,CrossingMode)
_CONV_INCLASS_ENUM(Gdk,Device,Type)
+_CONV_INCLASS_ENUM(Gdk,DeviceTool,Type)
_CONV_ENUM(Gdk,DragAction)
_CONV_ENUM(Gdk,DragProtocol)
_CONV_ENUM(Gdk,EventMask)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]