Estou construindo um aplicativo que em certos pontos precisa saber a localização do ponteiro do usuário. Estou usando GTK4 e C.
- Encontrei esta resposta ( Como usar gdk_device_get_position()? ) que apontava para a função
gdk_device_get_position
, mas não consigo encontrá-la nos documentos do GTK4, o que sugere que ela não é mais suportada. Se houver algum equivalente que esteja faltando, adoraria saber. - Seguindo outro caminho, implementei com sucesso um controlador de eventos para o widget em questão, assim:
GtkEventController *my_controller = gtk_event_controller_motion_new ();
gtk_widget_add_controller (my_widget, my_controller);
g_signal_connect(my_controller, "motion", my_function, NULL);
Isso dispara e roda com sucesso my_function
quando movo o mouse dentro do widget. Lendo a assinatura para o sinal de movimento ( https://docs.gtk.org/gtk4/signal.EventControllerMotion.motion.html ) abaixo, parece que ele deve anunciar as coordenadas x e y. Como, por assim dizer, eu "chego" a elas?
void
motion (
GtkEventControllerMotion* self,
gdouble x,
gdouble y,
gpointer user_data
)
Desculpe se estou esquecendo de algo óbvio! Não estaria perguntando se não tivesse feito a devida diligência com meus documentos/SO.
Obrigado!
O assunto sempre surgiu na seguinte questão: Como girar o círculo do Cairo (botão de volume) no evento de movimento do mouse no GTK4?
Aqui está um resumo de como isso pode ser resolvido:
Divirta-se programando.