static gint target_event_cb(GtkWidget *widget, GdkEvent *event, gpointer data) { BalloonEval *beval = (BalloonEval *)data; switch (event->type) { case GDK_ENTER_NOTIFY: pointer_event(beval, (int)event->crossing.x, (int)event->crossing.y, event->crossing.state); break; case GDK_MOTION_NOTIFY: if (event->motion.is_hint) { int x; int y; GdkModifierType state; /* * GDK_POINTER_MOTION_HINT_MASK is set, thus we cannot obtain * the coordinates from the GdkEventMotion struct directly. */ gdk_window_get_pointer(widget->window, &x, &y, &state); pointer_event(beval, x, y, (unsigned int)state); } else { pointer_event(beval, (int)event->motion.x, (int)event->motion.y, event->motion.state); } break; case GDK_LEAVE_NOTIFY: /* * Ignore LeaveNotify events that are not "normal". * Apparently we also get it when somebody else grabs focus. */ if (event->crossing.mode == GDK_CROSSING_NORMAL) cancelBalloon(beval); break; case GDK_BUTTON_PRESS: case GDK_SCROLL: cancelBalloon(beval); break; case GDK_KEY_PRESS: key_event(beval, event->key.keyval, TRUE); break; case GDK_KEY_RELEASE: key_event(beval, event->key.keyval, FALSE); break; default: break; } return FALSE; /* continue emission */ }
void WindowView_Impl::on_mouse_up(const clan::InputEvent &e) { PointerEventType type = PointerEventType::release; PointerButton button = decode_id(e.id); const Pointf pos = to_root_pos(e.mouse_pos); bool alt_down = e.alt; bool shift_down = e.shift; bool ctrl_down = e.ctrl; bool cmd_down = false; PointerEvent pointer_event(type, button, pos, alt_down, shift_down, ctrl_down, cmd_down); window_pointer_event(pointer_event); }
static int glw_slider_callback(glw_t *w, void *opaque, glw_signal_t signal, void *extra) { glw_slider_t *s = (glw_slider_t *)w; glw_t *c; switch(signal) { case GLW_SIGNAL_LAYOUT: glw_slider_layout(w, extra); break; case GLW_SIGNAL_EVENT: if(w->glw_class == &glw_slider_x) return glw_slider_event_x(w, extra); else return glw_slider_event_y(w, extra); case GLW_SIGNAL_POINTER_EVENT: return pointer_event(w, extra); case GLW_SIGNAL_DESTROY: slider_unbind(s); break; case GLW_SIGNAL_CHILD_CONSTRAINTS_CHANGED: c = extra; if(w->glw_class == &glw_slider_y) { glw_set_constraints(w, c->glw_req_size_x, 0, 0, GLW_CONSTRAINT_X); } else { glw_set_constraints(w, 0, c->glw_req_size_y, 0, GLW_CONSTRAINT_Y); } return 1; default: break; } return 0; }
static gint target_event_cb(GtkWidget *widget, GdkEvent *event, gpointer data) { BalloonEval *beval = (BalloonEval *)data; switch (event->type) { case GDK_ENTER_NOTIFY: pointer_event(beval, (int)event->crossing.x, (int)event->crossing.y, event->crossing.state); break; case GDK_MOTION_NOTIFY: if (event->motion.is_hint) { int x; int y; GdkModifierType state; /* * GDK_POINTER_MOTION_HINT_MASK is set, thus we cannot obtain * the coordinates from the GdkEventMotion struct directly. */ # if GTK_CHECK_VERSION(3,0,0) { GdkWindow * const win = gtk_widget_get_window(widget); GdkDisplay * const dpy = gdk_window_get_display(win); # if GTK_CHECK_VERSION(3,20,0) GdkSeat * const seat = gdk_display_get_default_seat(dpy); GdkDevice * const dev = gdk_seat_get_pointer(seat); # else GdkDeviceManager * const mngr = gdk_display_get_device_manager(dpy); GdkDevice * const dev = gdk_device_manager_get_client_pointer(mngr); # endif gdk_window_get_device_position(win, dev , &x, &y, &state); } # else gdk_window_get_pointer(widget->window, &x, &y, &state); # endif pointer_event(beval, x, y, (unsigned int)state); } else { pointer_event(beval, (int)event->motion.x, (int)event->motion.y, event->motion.state); } break; case GDK_LEAVE_NOTIFY: /* * Ignore LeaveNotify events that are not "normal". * Apparently we also get it when somebody else grabs focus. */ if (event->crossing.mode == GDK_CROSSING_NORMAL) cancelBalloon(beval); break; case GDK_BUTTON_PRESS: case GDK_SCROLL: cancelBalloon(beval); break; case GDK_KEY_PRESS: key_event(beval, event->key.keyval, TRUE); break; case GDK_KEY_RELEASE: key_event(beval, event->key.keyval, FALSE); break; default: break; } return FALSE; /* continue emission */ }