GTK activ_link не работает с меткой URI? gtkmm Gtk :: Label и signal_activate_link ()? - PullRequest
0 голосов
/ 15 марта 2012

У меня есть функция обработчика:

bool test( const Glib::ustring& uri )
{
    MessageBoxA( NULL, "hello", NULL, 0 );
    return true;
}

и я подключаюсь

label2.set_markup( "<a href=\"http://www.google.com\">Google</a>" );
sigc::connection conn = label2.signal_activate_link().connect( sigc::ptr_fun( test ) );

Я не понимаю, почему это не работает. Когда я нажимаю на Google, я вижу, что он использует обработчик URI по умолчанию, а не мой.

1 Ответ

1 голос
/ 15 марта 2012

Я должен был убедиться, что моя функция была вызвана до значения по умолчанию.Я предполагаю, что происходит, если обработчик сигнала по умолчанию возвращает true и, следовательно, сигнал не распространяется?

  /** Connects a signal to a signal handler.
   * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) );
   *
   * @param slot The signal handler, usually created with sigc::mem_fun(), or sigc::ptr_fun().
   * @param after Whether this signal handler should be called before or after the default signal handler.
   */
  sigc::connection connect(const SlotType& slot, bool after = true)
    { return sigc::connection(connect_(slot, after)); }

Вот правильный код:

label2.signal_activate_link().connect( sigc::ptr_fun( test ), false );
...