bool XdndManagerImp::CheckMousePosition() { auto uscreen = UScreen::GetDefault(); auto monitor = uscreen->GetMonitorWithMouse(); if (!dnd_data_.empty() && monitor != last_monitor_) { int old_monitor = last_monitor_; last_monitor_ = monitor; monitor_changed.emit(dnd_data_, old_monitor, last_monitor_); } return true; }
void XdndManagerImp::OnDndDataCollected(std::vector<std::string> const& mimes) { if (!IsAValidDnd(mimes)) return; dnd_data_ = xdnd_collection_window_->GetData(URI_TYPE); if (dnd_data_.empty()) return; auto uscreen = UScreen::GetDefault(); last_monitor_ = uscreen->GetMonitorWithMouse(); mouse_poller_timeout_.reset(new glib::Timeout(20, sigc::mem_fun(this, &XdndManagerImp::CheckMousePosition))); dnd_started.emit(dnd_data_, last_monitor_); }
void CacheFormFactor() { int raw_from_factor = g_settings_get_enum(usettings_, FORM_FACTOR.c_str()); FormFactor new_form_factor; if (raw_from_factor == 0) //Automatic { auto uscreen = UScreen::GetDefault(); int primary_monitor = uscreen->GetMonitorWithMouse(); auto const& geo = uscreen->GetMonitorGeometry(primary_monitor); new_form_factor = geo.height > 799 ? FormFactor::DESKTOP : FormFactor::NETBOOK; } else { new_form_factor = static_cast<FormFactor>(raw_from_factor); } if (new_form_factor != cached_form_factor_) { cached_form_factor_ = new_form_factor; parent_->form_factor.changed.emit(cached_form_factor_); } }