famiq 0.3.1

Experimental GUI library, powered by Bevy engine.
Documentation
use bevy::prelude::*;
use super::*;

pub(crate) fn on_mouse_over(
    mut trigger: Trigger<Pointer<Over>>,
    mut commands: Commands,
    mut writer: EventWriter<FaMouseEvent>,
    text_q: Query<Option<&WidgetId>,  With<IsFamiqText>>,
    window: Single<Entity, With<Window>>,
    cursor_icons: Res<CursorIcons>,
) {
    if let Ok(id) = text_q.get(trigger.target()) {
        _change_cursor_icon(&mut commands, &cursor_icons, *window, CursorType::Text);
        FaMouseEvent::send_event(&mut writer, EventType::Over, WidgetType::Text, trigger.target(), id);
    }
    trigger.propagate(false);
}

pub(crate) fn on_mouse_out(
    mut trigger: Trigger<Pointer<Out>>,
    mut commands: Commands,
    mut writer: EventWriter<FaMouseEvent>,
    text_q: Query<Option<&WidgetId>,  With<IsFamiqText>>,
    window: Single<Entity, With<Window>>,
    cursor_icons: Res<CursorIcons>,
) {
    if let Ok(id) = text_q.get(trigger.target()) {
        _change_cursor_icon(&mut commands, &cursor_icons, *window, CursorType::Default);
        FaMouseEvent::send_event(&mut writer, EventType::Out, WidgetType::Text, trigger.target(), id);
    }
    trigger.propagate(false);
}

pub(crate) fn on_mouse_down(
    mut trigger: Trigger<Pointer<Pressed>>,
    mut writer: EventWriter<FaMouseEvent>,
    text_q: Query<Option<&WidgetId>,  With<IsFamiqText>>,
) {
    if let Ok(id) = text_q.get(trigger.target()) {
        if trigger.event().button == PointerButton::Secondary {
            FaMouseEvent::send_event(&mut writer, EventType::DownRight, WidgetType::Text, trigger.target(), id);
        } else {
            FaMouseEvent::send_event(&mut writer, EventType::DownLeft, WidgetType::Text, trigger.target(), id);
        }
    }
    trigger.propagate(false);
}

pub(crate) fn on_mouse_up(
    mut trigger: Trigger<Pointer<Released>>,
    mut writer: EventWriter<FaMouseEvent>,
    text_q: Query<Option<&WidgetId>,  With<IsFamiqText>>,
) {
    if let Ok(id) = text_q.get(trigger.target()) {
        if trigger.event().button == PointerButton::Secondary {
            FaMouseEvent::send_event(&mut writer, EventType::Up, WidgetType::Text, trigger.target(), id);
        }
    }
    trigger.propagate(false);
}