本文整理汇总了C++中SPDesktop::isWaitingCursor方法的典型用法代码示例。如果您正苦于以下问题:C++ SPDesktop::isWaitingCursor方法的具体用法?C++ SPDesktop::isWaitingCursor怎么用?C++ SPDesktop::isWaitingCursor使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SPDesktop
的用法示例。
在下文中一共展示了SPDesktop::isWaitingCursor方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: sp_selection_move_screen
//.........这里部分代码省略.........
sc->button_press_alt = false;
break;
case GDK_KEY_PRESS: // keybindings for select context
{
{
guint keyval = get_group0_keyval(&event->key);
bool alt = ( MOD__ALT
|| (keyval == GDK_Alt_L)
|| (keyval == GDK_Alt_R)
|| (keyval == GDK_Meta_L)
|| (keyval == GDK_Meta_R));
if (!key_is_a_modifier (keyval)) {
event_context->defaultMessageContext()->clear();
} else if (sc->grabbed || seltrans->isGrabbed()) {
if (Inkscape::Rubberband::get(desktop)->is_started()) {
// if Alt then change cursor to moving cursor:
if (alt) {
Inkscape::Rubberband::get(desktop)->setMode(RUBBERBAND_MODE_TOUCHPATH);
}
} else {
// do not change the statusbar text when mousekey is down to move or transform the object,
// because the statusbar text is already updated somewhere else.
break;
}
} else {
sp_event_show_modifier_tip (event_context->defaultMessageContext(), event,
_("<b>Ctrl</b>: click to select in groups; drag to move hor/vert"),
_("<b>Shift</b>: click to toggle select; drag for rubberband selection"),
_("<b>Alt</b>: click to select under; drag to move selected or select by touch"));
// if Alt and nonempty selection, show moving cursor ("move selected"):
if (alt && !selection->isEmpty() && !desktop->isWaitingCursor()) {
desktop->setCursor(SP_SELECT_D_CURSOR);
}
//*/
break;
}
}
gdouble const nudge = prefs->getDoubleLimited("/options/nudgedistance/value", 2, 0, 1000); // in px
gdouble const offset = prefs->getDoubleLimited("/options/defaultscale/value", 2, 0, 1000);
int const snaps = prefs->getInt("/options/rotationsnapsperpi/value", 12);
switch (get_group0_keyval (&event->key)) {
case GDK_Left: // move selection left
case GDK_KP_Left:
case GDK_KP_4:
if (!MOD__CTRL) { // not ctrl
gint mul = 1 + gobble_key_events(
get_group0_keyval(&event->key), 0); // with any mask
if (MOD__ALT) { // alt
if (MOD__SHIFT) sp_selection_move_screen(desktop, mul*-10, 0); // shift
else sp_selection_move_screen(desktop, mul*-1, 0); // no shift
}
else { // no alt
if (MOD__SHIFT) sp_selection_move(desktop, mul*-10*nudge, 0); // shift
else sp_selection_move(desktop, mul*-nudge, 0); // no shift
}
ret = TRUE;
}
break;
case GDK_Up: // move selection up
case GDK_KP_Up:
case GDK_KP_8:
示例2: switch
static gint
sp_select_context_item_handler(SPEventContext *event_context, SPItem *item, GdkEvent *event)
{
gint ret = FALSE;
SPDesktop *desktop = event_context->desktop;
SPSelectContext *sc = SP_SELECT_CONTEXT(event_context);
Inkscape::SelTrans *seltrans = sc->_seltrans;
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
tolerance = prefs->getIntLimited("/options/dragtolerance/value", 0, 0, 100);
// make sure we still have valid objects to move around
if (sc->item && SP_OBJECT_DOCUMENT( SP_OBJECT(sc->item))==NULL) {
sp_select_context_abort(event_context);
}
switch (event->type) {
case GDK_BUTTON_PRESS:
if (event->button.button == 1 && !event_context->space_panning) {
/* Left mousebutton */
// save drag origin
xp = (gint) event->button.x;
yp = (gint) event->button.y;
within_tolerance = true;
// remember what modifiers were on before button press
sc->button_press_shift = (event->button.state & GDK_SHIFT_MASK) ? true : false;
sc->button_press_ctrl = (event->button.state & GDK_CONTROL_MASK) ? true : false;
sc->button_press_alt = (event->button.state & GDK_MOD1_MASK) ? true : false;
if (event->button.state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK)) {
// if shift or ctrl was pressed, do not move objects;
// pass the event to root handler which will perform rubberband, shift-click, ctrl-click, ctrl-drag
} else {
sc->dragging = TRUE;
sc->moved = FALSE;
desktop->setCursor(SP_SELECT_D_CURSOR);
desktop->canvas->force_full_redraw_after_interruptions(5);
// remember the clicked item in sc->item:
if (sc->item) {
sp_object_unref(sc->item, NULL);
sc->item = NULL;
}
sc->item = sp_event_context_find_item (desktop,
Geom::Point(event->button.x, event->button.y), event->button.state & GDK_MOD1_MASK, FALSE);
sp_object_ref(sc->item, NULL);
rb_escaped = drag_escaped = 0;
if (sc->grabbed) {
sp_canvas_item_ungrab(sc->grabbed, event->button.time);
sc->grabbed = NULL;
}
sp_canvas_item_grab(SP_CANVAS_ITEM(desktop->drawing),
GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_BUTTON_RELEASE_MASK | GDK_BUTTON_PRESS_MASK |
GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK,
NULL, event->button.time);
sc->grabbed = SP_CANVAS_ITEM(desktop->drawing);
desktop->canvas->force_full_redraw_after_interruptions(5);
ret = TRUE;
}
} else if (event->button.button == 3) {
// right click; do not eat it so that right-click menu can appear, but cancel dragging & rubberband
sp_select_context_abort(event_context);
}
break;
case GDK_ENTER_NOTIFY:
{
if (!desktop->isWaitingCursor() && !sc->dragging) {
desktop->setCursor(SP_SELECT_CURSOR);
}
break;
}
case GDK_LEAVE_NOTIFY:
if (!desktop->isWaitingCursor() && !sc->dragging)
desktop->setCursor(event_context->cursor_shape);
break;
case GDK_KEY_PRESS:
if (get_group0_keyval (&event->key) == GDK_space) {
if (sc->dragging && sc->grabbed) {
/* stamping mode: show content mode moving */
seltrans->stamp();
ret = TRUE;
}
}
break;
default:
break;
}
//.........这里部分代码省略.........