void OnHUDEvent(const SHUDEvent& event) { switch(event.eventType) { case eHUDEvent_OnScanningStart: { if(m_enabled) { EntityId scannedEntityId = static_cast<EntityId>(event.GetData(0).m_int); if (scannedEntityId != m_entityId) // Only selected entity break; IEntity* pScannedEntity = gEnv->pEntitySystem->GetEntity(scannedEntityId); if(!pScannedEntity) { SetEnabled(false); break; } if (m_delayResult) { SHUDEvent currentEvent(eHUDEvent_OnControlCurrentTacticalScan); currentEvent.AddData(SHUDEventData(true)); // Delay result CHUDEventDispatcher::CallEvent(currentEvent); } ActivateOutput(&m_actInfo, EOP_OnEvent, true); ActivateOutput(&m_actInfo, EOP_EntityID, m_entityId); } break; } } }
JSValue JSDOMWindow::event(ExecState& state) const { Event* event = currentEvent(); if (!event) return jsUndefined(); return toJS(&state, const_cast<JSDOMWindow*>(this), event); }
void DragAndDropHandler::startDrag(Ref<SelectionData>&& selection, DragOperation dragOperation, RefPtr<ShareableBitmap>&& dragImage) { #if GTK_CHECK_VERSION(3, 16, 0) m_draggingSelectionData = WTFMove(selection); GRefPtr<GtkTargetList> targetList = PasteboardHelper::singleton().targetListForSelectionData(*m_draggingSelectionData); #else RefPtr<SelectionData> selectionData = WTFMove(selection); GRefPtr<GtkTargetList> targetList = PasteboardHelper::singleton().targetListForSelectionData(*selectionData); #endif GUniquePtr<GdkEvent> currentEvent(gtk_get_current_event()); GdkDragContext* context = gtk_drag_begin(m_page.viewWidget(), targetList.get(), dragOperationToGdkDragActions(dragOperation), GDK_BUTTON_PRIMARY, currentEvent.get()); #if GTK_CHECK_VERSION(3, 16, 0) // WebCore::EventHandler does not support more than one DnD operation at the same time for // a given page, so we should cancel any previous operation whose context we might have // stored, should we receive a new startDrag event before finishing a previous DnD operation. if (m_dragContext) gtk_drag_cancel(m_dragContext.get()); m_dragContext = context; #else // We don't have gtk_drag_cancel() in GTK+ < 3.16, so we use the old code. // See https://bugs.webkit.org/show_bug.cgi?id=138468 m_draggingSelectionDataMap.set(context, WTFMove(selectionData)); #endif if (dragImage) { RefPtr<cairo_surface_t> image(dragImage->createCairoSurface()); // Use the center of the drag image as hotspot. cairo_surface_set_device_offset(image.get(), -cairo_image_surface_get_width(image.get()) / 2, -cairo_image_surface_get_height(image.get()) / 2); gtk_drag_set_icon_surface(context, image.get()); } else gtk_drag_set_icon_default(context); }
JSValue JSDOMWindow::event(ExecState* exec) const { Event* event = currentEvent(); if (!event) return jsUndefined(); return toJS(exec, event); }
void PopupMenuGtk::show(const IntRect& rect, FrameView* view, int index) { ASSERT(client()); if (!m_popup) { m_popup = GtkPopupMenu::create(); g_signal_connect(m_popup->platformMenu(), "unmap", G_CALLBACK(PopupMenuGtk::menuUnmapped), this); } else m_popup->clear(); const int size = client()->listSize(); for (int i = 0; i < size; ++i) { if (client()->itemIsSeparator(i)) m_popup->appendSeparator(); else { GRefPtr<GtkAction> action = adoptGRef(createGtkActionForMenuItem(i)); m_popup->appendItem(action.get()); } } IntPoint menuPosition = convertWidgetPointToScreenPoint(GTK_WIDGET(view->hostWindow()->platformPageClient()), view->contentsToWindow(rect.location())); menuPosition.move(0, rect.height()); GOwnPtr<GdkEvent> currentEvent(gtk_get_current_event()); m_popup->popUp(rect.size(), menuPosition, size, index, currentEvent.get()); // GTK can refuse to actually open the menu when mouse grabs fails. // Ensure WebCore does not go into some pesky state. if (!gtk_widget_get_visible(m_popup->platformMenu())) client()->popupDidHide(); }
void YaEventNotifier::read() { PsiEvent* event = currentEvent(); if (!event) return; Q_ASSERT(psi_); psi_->processEvent(event, UserAction); }
void EventList::eventListRowChanged() { EventModel* eventPtr = currentEvent(); if (!eventPtr) { return; } emit currentEventChanged(eventPtr); }
void YaEventNotifier::update() { updateSkippedList(); eventNotifierFrame_->setEvent(currentEventId(), currentEvent()); eventNotifierFrame_->setEventCounter(skipped_ids_.count() + 1, GlobalEventQueue::instance()->ids().count()); if (shouldBeVisible()) show(); else hide(); emit visibilityChanged(); }
void DragAndDropHandler::startDrag(const DragData& dragData, PassRefPtr<ShareableBitmap> dragImage) { RefPtr<DataObjectGtk> dataObject = adoptRef(dragData.platformData()); GRefPtr<GtkTargetList> targetList = adoptGRef(PasteboardHelper::defaultPasteboardHelper()->targetListForDataObject(dataObject.get())); GUniquePtr<GdkEvent> currentEvent(gtk_get_current_event()); GdkDragContext* context = gtk_drag_begin(m_page.viewWidget(), targetList.get(), dragOperationToGdkDragActions(dragData.draggingSourceOperationMask()), GDK_BUTTON_PRIMARY, currentEvent.get()); m_draggingDataObjects.set(context, dataObject.get()); if (dragImage) { RefPtr<cairo_surface_t> image(dragImage->createCairoSurface()); m_dragIcon.setImage(image.get()); m_dragIcon.useForDrag(context); } else gtk_drag_set_icon_default(context); }
void DragClient::startDrag(DragImageRef image, const IntPoint& dragImageOrigin, const IntPoint& eventPos, Clipboard* clipboard, Frame* frame, bool linkDrag) { WebKitWebView* webView = webkit_web_frame_get_web_view(kit(frame)); RefPtr<DataObjectGtk> dataObject = clipboard->pasteboard().dataObject(); GRefPtr<GtkTargetList> targetList = adoptGRef(PasteboardHelper::defaultPasteboardHelper()->targetListForDataObject(dataObject.get())); GOwnPtr<GdkEvent> currentEvent(gtk_get_current_event()); GdkDragContext* context = gtk_drag_begin(GTK_WIDGET(m_webView), targetList.get(), dragOperationToGdkDragActions(clipboard->sourceOperation()), 1, currentEvent.get()); webView->priv->dragAndDropHelper.startedDrag(context, dataObject.get()); // A drag starting should prevent a double-click from happening. This might // happen if a drag is followed very quickly by another click (like in the DRT). webView->priv->clickCounter.reset(); if (image) { m_dragIcon.setImage(image); m_dragIcon.useForDrag(context, IntPoint(eventPos - dragImageOrigin)); } else gtk_drag_set_icon_default(context); }
ViewerDialog::ViewerDialog(QWidget* parent, GalleryListModel& model, int row): QDialog(parent), ui(new Ui::ViewerDialog) { isSlide = false; setWindowFlags(Qt::FramelessWindowHint); ui->setupUi(this); title = new TitleControl(this); ui->lLayout->addWidget(title); viewer = new ViewerControl(this, model, row); viewer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); ui->lLayout->addWidget(viewer); createMenuAndActions(); updateButtons(); //QTimer::singleShot(10, this, SLOT(currentEvent())); currentEvent(); }
bool MidiParser::jumpToTick(uint32 tick, bool fireEvents, bool stopNotes, bool dontSendNoteOn) { if (_active_track >= _num_tracks) return false; Tracker currentPos(_position); EventInfo currentEvent(_next_event); resetTracking(); _position._play_pos = _tracks[_active_track]; parseNextEvent(_next_event); if (tick > 0) { while (true) { EventInfo &info = _next_event; if (_position._last_event_tick + info.delta >= tick) { _position._play_time += (tick - _position._last_event_tick) * _psec_per_tick; _position._play_tick = tick; break; } _position._last_event_tick += info.delta; _position._last_event_time += info.delta * _psec_per_tick; _position._play_tick = _position._last_event_tick; _position._play_time = _position._last_event_time; if (info.event == 0xFF) { if (info.ext.type == 0x2F) { // End of track _position = currentPos; _next_event = currentEvent; return false; } else { if (info.ext.type == 0x51 && info.length >= 3) // Tempo setTempo(info.ext.data[0] << 16 | info.ext.data[1] << 8 | info.ext.data[2]); if (fireEvents) _driver->metaEvent(info.ext.type, info.ext.data, (uint16) info.length); } } else if (fireEvents) { if (info.event == 0xF0) { if (info.ext.data[info.length-1] == 0xF7) _driver->sysEx(info.ext.data, (uint16)info.length-1); else _driver->sysEx(info.ext.data, (uint16)info.length); } else { // The note on sending code is used by the SCUMM engine. Other engine using this code // (such as SCI) have issues with this, as all the notes sent can be heard when a song // is fast-forwarded. Thus, if the engine requests it, don't send note on events. if (info.command() == 0x9 && dontSendNoteOn) { // Don't send note on; doing so creates a "warble" with some instruments on the MT-32. // Refer to patch #3117577 } else { sendToDriver(info.event, info.basic.param1, info.basic.param2); } } } parseNextEvent(_next_event); } } if (stopNotes) { if (!_smartJump || !currentPos._play_pos) { allNotesOff(); } else { EventInfo targetEvent(_next_event); Tracker targetPosition(_position); _position = currentPos; _next_event = currentEvent; hangAllActiveNotes(); _next_event = targetEvent; _position = targetPosition; } } _abort_parse = true; return true; }
static bool getDragDataImpl(NPObject* npobj, int* eventId, WebDragData* data) { if (!npobj) return false; if (npobj->_class != npScriptObjectClass) return false; v8::HandleScope handleScope; v8::Handle<v8::Context> context = v8::Context::GetEntered(); if (context.IsEmpty()) return false; // Get the current WebCore event. v8::Handle<v8::Value> currentEvent(getEvent(context)); Event* event = V8Event::toNative(v8::Handle<v8::Object>::Cast(currentEvent)); if (!event) return false; // Check that the given npobj is that event. V8NPObject* object = reinterpret_cast<V8NPObject*>(npobj); Event* given = V8Event::toNative(object->v8Object); if (given != event) return false; // Check the execution frames are same origin. V8Proxy* current = V8Proxy::retrieve(V8Proxy::retrieveFrameForCurrentContext()); Frame* frame = V8Proxy::retrieveFrame(context); if (!current || !V8BindingSecurity::canAccessFrame(V8BindingState::Only(), frame, false)) return false; const EventNames& names(eventNames()); const AtomicString& eventType(event->type()); enum DragTargetMouseEventId { DragEnterId = 1, DragOverId = 2, DragLeaveId = 3, DropId = 4 }; // The event type should be a drag event. if (eventType == names.dragenterEvent) *eventId = DragEnterId; else if (eventType == names.dragoverEvent) *eventId = DragOverId; else if (eventType == names.dragleaveEvent) *eventId = DragLeaveId; else if (eventType == names.dropEvent) *eventId = DropId; else return false; // Drag events are mouse events and should have a clipboard. MouseEvent* me = static_cast<MouseEvent*>(event); Clipboard* clipboard = me->clipboard(); if (!clipboard) return false; // And that clipboard should be accessible by WebKit policy. ClipboardChromium* chrome = static_cast<ClipboardChromium*>(clipboard); HashSet<String> accessible(chrome->types()); if (accessible.isEmpty()) return false; RefPtr<ChromiumDataObject> dataObject(chrome->dataObject()); if (dataObject && data) *data = WebDragData(dataObject); return dataObject; }
bool MidiParser::jumpToTick(uint32 tick, bool fireEvents) { if (_active_track >= _num_tracks) return false; Tracker currentPos(_position); EventInfo currentEvent(_next_event); resetTracking(); _position._play_pos = _tracks[_active_track]; parseNextEvent(_next_event); if (tick > 0) { while (true) { EventInfo &info = _next_event; if (_position._last_event_tick + info.delta >= tick) { _position._play_time += (tick - _position._last_event_tick) * _psec_per_tick; _position._play_tick = tick; break; } _position._last_event_tick += info.delta; _position._last_event_time += info.delta * _psec_per_tick; _position._play_tick = _position._last_event_tick; _position._play_time = _position._last_event_time; if (info.event == 0xFF) { if (info.ext.type == 0x2F) { // End of track _position = currentPos; _next_event = currentEvent; return false; } else { if (info.ext.type == 0x51 && info.length >= 3) // Tempo setTempo(info.ext.data[0] << 16 | info.ext.data[1] << 8 | info.ext.data[2]); if (fireEvents) _driver->metaEvent(info.ext.type, info.ext.data, (uint16) info.length); } } else if (fireEvents) { if (info.event == 0xF0) { if (info.ext.data[info.length-1] == 0xF7) _driver->sysEx(info.ext.data, (uint16)info.length-1); else _driver->sysEx(info.ext.data, (uint16)info.length); } else _driver->send(info.event, info.basic.param1, info.basic.param2); } parseNextEvent(_next_event); } } if (!_smartJump || !currentPos._play_pos) { allNotesOff(); } else { EventInfo targetEvent(_next_event); Tracker targetPosition(_position); _position = currentPos; _next_event = currentEvent; hangAllActiveNotes(); _next_event = targetEvent; _position = targetPosition; } _abort_parse = true; return true; }