2017-06-26 15:56:09 +00:00
|
|
|
extern crate gtk;
|
2017-06-26 21:52:21 +00:00
|
|
|
extern crate gtk_sys;
|
2017-06-26 15:56:09 +00:00
|
|
|
extern crate gdk;
|
2017-06-26 21:52:21 +00:00
|
|
|
extern crate gdk_sys;
|
|
|
|
extern crate glib;
|
|
|
|
extern crate ffi;
|
|
|
|
extern crate libc;
|
2017-06-26 15:56:09 +00:00
|
|
|
|
2017-06-27 13:56:33 +00:00
|
|
|
|
|
|
|
use errors::*;
|
2017-06-26 15:56:09 +00:00
|
|
|
use gtk::prelude::*;
|
2017-06-26 21:52:21 +00:00
|
|
|
use gdk::DeviceExt;
|
|
|
|
use gdk::{GrabOwnership, GrabStatus, BUTTON_PRESS_MASK, KEY_PRESS_MASK};
|
|
|
|
use gdk_sys::GDK_CURRENT_TIME;
|
2017-06-26 15:56:09 +00:00
|
|
|
|
2017-06-26 21:52:21 +00:00
|
|
|
pub fn set_slider(vol_scale_adj: >k::Adjustment, scale: f64) {
|
2017-06-26 15:56:09 +00:00
|
|
|
vol_scale_adj.set_value(scale);
|
|
|
|
}
|
|
|
|
|
2017-06-27 13:56:33 +00:00
|
|
|
pub fn grab_devices(window: >k::Window) -> Result<()> {
|
|
|
|
let device = gtk::get_current_event_device().ok_or("No current device")?;
|
2017-06-26 21:52:21 +00:00
|
|
|
|
2017-06-27 13:56:33 +00:00
|
|
|
let gdk_window = window.get_window().ok_or("No window?!")?;
|
2017-06-26 21:52:21 +00:00
|
|
|
|
|
|
|
/* Grab the mouse */
|
2017-06-27 22:23:12 +00:00
|
|
|
let m_grab_status =
|
|
|
|
device.grab(&gdk_window,
|
|
|
|
GrabOwnership::None,
|
|
|
|
true,
|
|
|
|
BUTTON_PRESS_MASK,
|
|
|
|
None,
|
|
|
|
GDK_CURRENT_TIME as u32);
|
2017-06-26 21:52:21 +00:00
|
|
|
|
|
|
|
if m_grab_status != GrabStatus::Success {
|
2017-06-27 22:23:12 +00:00
|
|
|
warn!("Could not grab {}",
|
|
|
|
device.get_name().unwrap_or(String::from("UNKNOWN DEVICE")));
|
2017-06-26 21:52:21 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* Grab the keyboard */
|
2017-06-27 22:23:12 +00:00
|
|
|
let k_dev = device.get_associated_device()
|
|
|
|
.ok_or("Couldn't get associated device")?;
|
|
|
|
|
|
|
|
let k_grab_status = k_dev.grab(&gdk_window,
|
|
|
|
GrabOwnership::None,
|
|
|
|
true,
|
|
|
|
KEY_PRESS_MASK,
|
|
|
|
None,
|
|
|
|
GDK_CURRENT_TIME as u32);
|
2017-06-26 21:52:21 +00:00
|
|
|
if k_grab_status != GrabStatus::Success {
|
2017-06-27 22:23:12 +00:00
|
|
|
warn!("Could not grab {}",
|
|
|
|
k_dev.get_name().unwrap_or(String::from("UNKNOWN DEVICE")));
|
2017-06-26 21:52:21 +00:00
|
|
|
}
|
2017-06-27 13:56:33 +00:00
|
|
|
|
|
|
|
return Ok(());
|
2017-06-26 21:52:21 +00:00
|
|
|
}
|