[gtkmm-documentation] Fix compilation of cellrenderercustom example.
- From: Krzesimir Nowak <krnowak src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtkmm-documentation] Fix compilation of cellrenderercustom example.
- Date: Thu, 6 Jan 2011 17:21:53 +0000 (UTC)
commit 13dc41fca9d169e92357c9ed626f30efdc94ccb9
Author: Krzesimir Nowak <qdlacz gmail com>
Date: Sat Dec 25 23:49:39 2010 +0100
Fix compilation of cellrenderercustom example.
* examples/others/cellrenderercustom/cellrendererpopup.cc: Don't use
deprecated {pointer,keyboard}_grab() methods in favor of more
complicated Gdk::Device stuff.
ChangeLog | 10 ++++-
.../others/cellrenderercustom/cellrendererpopup.cc | 43 +++++++++++++++++---
2 files changed, 46 insertions(+), 7 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index ac35566..ab5e92b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2011-01-06 Krzesimir Nowak <qdlacz gmail com>
+
+ Fix compilation of cellrenderercustom example.
+
+ * examples/others/cellrenderercustom/cellrendererpopup.cc: Don't use
+ deprecated {pointer,keyboard}_grab() methods in favor of more
+ complicated Gdk::Device stuff.
+
2011-01-04 Murray Cumming <murrayc murrayc com>
Avoid use of deprecated glibmm and giomm API.
@@ -17,7 +25,7 @@
2010-12-23 Murray Cumming <murrayc murrayc com>
- Gtk::Application example: Minor cleanip.
+ Gtk::Application example: Minor cleanup.
* examples/book/application/exampleapplication.[h|cc]:
* examples/book/application/examplewindow.cc:
diff --git a/examples/others/cellrenderercustom/cellrendererpopup.cc b/examples/others/cellrenderercustom/cellrendererpopup.cc
index b2c62bb..ca38559 100644
--- a/examples/others/cellrenderercustom/cellrendererpopup.cc
+++ b/examples/others/cellrenderercustom/cellrendererpopup.cc
@@ -28,14 +28,45 @@ namespace
bool grab_on_window(const Glib::RefPtr<Gdk::Window>& window, guint32 activate_time)
{
- if(window->pointer_grab(true,
- Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK | Gdk::POINTER_MOTION_MASK,
- activate_time) == 0)
+ Glib::RefPtr<Gdk::Device> device (Glib::wrap(gtk_get_current_event_device(), true));
+
+ if(device)
{
- if(window->keyboard_grab(true, activate_time) == 0)
- return true;
+ Glib::RefPtr<Gdk::Device> keyboard_device;
+ Glib::RefPtr<Gdk::Device> pointer_device;
+
+ if (device->get_source() == Gdk::SOURCE_KEYBOARD)
+ {
+ keyboard_device = device;
+ pointer_device = device->get_associated_device();
+ }
else
- Gdk::Window::pointer_ungrab(activate_time);
+ {
+ keyboard_device = device->get_associated_device();
+ pointer_device = device;
+ }
+ if(pointer_device && keyboard_device)
+ {
+ if(pointer_device->grab(window,
+ Gdk::OWNERSHIP_NONE,
+ true,
+ Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK | Gdk::POINTER_MOTION_MASK,
+ activate_time) == Gdk::GRAB_SUCCESS)
+ {
+ if(keyboard_device->grab(window,
+ Gdk::OWNERSHIP_NONE,
+ true,
+ Gdk::KEY_PRESS_MASK | Gdk::KEY_RELEASE_MASK,
+ activate_time) == Gdk::GRAB_SUCCESS)
+ {
+ return true;
+ }
+ else
+ {
+ pointer_device->ungrab(activate_time);
+ }
+ }
+ }
}
return false;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]