return std::move(z);
}
+Optional<bool> Atspi::grabHighlight(const AtspiComponentPtr &obj) const
+{
+ GError *error = nullptr;
+ auto ret = atspi_component_grab_highlight(obj.get(), &error);
+ if (error) {
+ PRINT_ERROR_AND_FREE(error);
+ return {};
+ }
+ return ret;
+}
+
Optional<AtspiRole> Atspi::getRole(const AtspiAccessiblePtr &accessibleObj) const
{
GError *error = nullptr;
Optional<size_t> countTextCharacters(const AtspiTextPtr &textInterface) const;
/**
+ * @brief Tries to grab highlight on given object
+ *
+ * @return Optional<size_t> true if grab succesed or empty Optional object, if call failed
+ */
+ Optional<bool> grabHighlight(const AtspiComponentPtr &obj) const;
+
+ /**
* @brief Returns range at given offset depending on granularity type
*
* This function starts at given offset and calculates range based on it's granularity
return Singleton<UniversalSwitch>::instance().getMainWindow()->getDimensions();
});
return dims.contains(point);
+ }, { {"point"} } };
+
+ variables["highlight"] = EvaluationValueFunction{ [&](EvaluationValue e) -> EvaluationValue {
+ AtspiAccessiblePtr obj;
+ if (e.isPoint())
+ {
+ auto root = getVisibleRoot();
+ obj = Singleton<UniversalSwitch>::instance().getAtspi()->getAtPoint(e.asPoint(), Atspi::CoordType::Screen, root->getObject());
+ } else
+ {
+ if (e.isString()) e = convertToUIElement(e.asString());
+ auto v = e.convertToUIElement();
+ obj = v->getObject();
+ }
+ auto comp = Singleton<UniversalSwitch>::instance().getAtspi()->getComponentInterface(obj);
+ if (!comp) throw EvaluationFailure{} << "atspi object '" << Atspi::getUniqueId(obj) << "' doesn't have a component interface";
+ auto res = Singleton<UniversalSwitch>::instance().getAtspi()->grabHighlight(comp);
+ if (!res) throw EvaluationFailure{} << "grabHighlight call failed (see dlog log for more details)";
+ return *res;
}, { {"value"} } };
variables["len"] = EvaluationValueFunction{ [&](EvaluationValue e) -> EvaluationValue {