aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2023-02-01 20:13:30 +0100
committerSimon Ser <contact@emersion.fr>2023-02-01 20:13:30 +0100
commit49cb85ad72aed7a94028e1a033b57b7576e8bec6 (patch)
treeb47b52938a371a1beac59574dcfde362d2512704
parent711a1a3ed42150fdbc716e80719d482006075f69 (diff)
input-method-v2: convert to try_from
References: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/884
-rw-r--r--include/wlr/types/wlr_input_method_v2.h13
-rw-r--r--types/wlr_input_method_v2.c14
2 files changed, 10 insertions, 17 deletions
diff --git a/include/wlr/types/wlr_input_method_v2.h b/include/wlr/types/wlr_input_method_v2.h
index e3f326ac..11e43590 100644
--- a/include/wlr/types/wlr_input_method_v2.h
+++ b/include/wlr/types/wlr_input_method_v2.h
@@ -121,17 +121,12 @@ void wlr_input_method_v2_send_unavailable(
struct wlr_input_method_v2 *input_method);
/**
- * Returns true if the surface has the input popup surface role.
- */
-bool wlr_surface_is_input_popup_surface_v2(struct wlr_surface *surface);
-
-/**
* Get a struct wlr_input_popup_surface_v2 from a struct wlr_surface.
- * Asserts that the surface has the input popup surface role.
- * May return NULL even if the surface has the input popup surface role if the
- * corresponding input popup surface has been destroyed.
+ *
+ * Returns NULL if the surface has a different role or if the input popup
+ * surface has been destroyed.
*/
-struct wlr_input_popup_surface_v2 *wlr_input_popup_surface_v2_from_wlr_surface(
+struct wlr_input_popup_surface_v2 *wlr_input_popup_surface_v2_try_from_wlr_surface(
struct wlr_surface *surface);
void wlr_input_popup_surface_v2_send_text_input_rectangle(
diff --git a/types/wlr_input_method_v2.c b/types/wlr_input_method_v2.c
index 285a7fbe..d38d3748 100644
--- a/types/wlr_input_method_v2.c
+++ b/types/wlr_input_method_v2.c
@@ -123,12 +123,6 @@ static void im_delete_surrounding_text(struct wl_client *client,
input_method->pending.delete.after_length = after_length;
}
-struct wlr_input_popup_surface_v2 *wlr_input_popup_surface_v2_from_wlr_surface(
- struct wlr_surface *surface) {
- assert(wlr_surface_is_input_popup_surface_v2(surface));
- return (struct wlr_input_popup_surface_v2 *)surface->role_data;
-}
-
void wlr_input_popup_surface_v2_send_text_input_rectangle(
struct wlr_input_popup_surface_v2 *popup_surface,
struct wlr_box *sbox) {
@@ -181,8 +175,12 @@ static const struct wlr_surface_role input_popup_surface_v2_role = {
.destroy = popup_surface_surface_role_destroy,
};
-bool wlr_surface_is_input_popup_surface_v2(struct wlr_surface *surface) {
- return surface->role == &input_popup_surface_v2_role;
+struct wlr_input_popup_surface_v2 *wlr_input_popup_surface_v2_try_from_wlr_surface(
+ struct wlr_surface *surface) {
+ if (surface->role != &input_popup_surface_v2_role) {
+ return NULL;
+ }
+ return (struct wlr_input_popup_surface_v2 *)surface->role_data;
}
static void popup_resource_destroy(struct wl_resource *resource) {