In the HelloWolrd example. I’ve added a GestureClick controller to the Gtk::Button to get ‘pressed’ and ‘released’ events. In addition I’ve added ‘begin’, ‘end’, ‘state_changed’ signal handers. The results are very erratic. On the first click I get the start and end events, but after that nothing for a while. I get one or two ‘pressed’ events, but never a released event. The standard ‘clicked’ events seem to work fine.
I’m linking with: libglibmm-2.68.1.dylib,
libglibmm_generate_extra_defs-2.68.1.dylib,
libgiomm-2.68.1.dylib,
libgtk-4.0.0.dylib,
libcairomm.1.16.1.dylib,
libsigc-3.0.0.dylib.
Any clues?
#include “hello.hpp”
#include
HelloWorld::HelloWorld()
: m_button(“Hello World”)
{
Gtk::Fixed fixed;
fixed.set_size_request(200, 100);
Glib::RefPtr<Gtk::GestureClick> button_click_events(Gtk::GestureClick::create());
// Sets the border width of the window.
m_button.set_has_frame(true);
m_button.set_margin(10);
m_button.set_size_request(100,30);
fixed.put(m_button, 50, 35);
// When the button receives the "clicked" signal, it will call the
// on_button_clicked() method defined below.
m_button.signal_clicked().connect(sigc::mem_fun(*this,&HelloWorld::on_button_clicked));
m_button.add_controller(button_click_events);
button_click_events->signal_pressed().connect(sigc::mem_fun(*this, &HelloWorld::hello_button_pressed));
button_click_events->signal_released().connect(sigc::mem_fun(*this, &HelloWorld::hello_button_released));
// This packs the button into the Window (a container).
set_child(fixed);
}
HelloWorld::~HelloWorld()
{
}
void HelloWorld::on_button_clicked()
{
std::cout << “Hello World” << std::endl;
}
void HelloWorld::hello_button_pressed(int, double, double) {
std::cout << “Hello World PRESSED” << std::endl;
}
void HelloWorld::hello_button_released(int, double, double) {
std::cout << “Hello World RELEASED” << std::endl;
}