* src/haiku_support.cc (BWindow_set_sticky): New function.
* src/haiku_support.h: Update prototypes.
* src/haikufns.c (haiku_set_sticky, haiku_frame_parm_handlers):
New frame param handler.
return true;
}
+
+void
+BWindow_set_sticky (void *window, bool sticky)
+{
+ BWindow *w = (BWindow *) window;
+
+ if (w->LockLooper ())
+ {
+ w->SetFlags (sticky ? (w->Flags ()
+ | B_SAME_POSITION_IN_ALL_WORKSPACES)
+ : w->Flags () & ~B_SAME_POSITION_IN_ALL_WORKSPACES);
+
+ w->UnlockLooper ();
+ }
+}
extern void BWindow_set_override_redirect (void *, bool);
extern void BWindow_dimensions (void *, int *, int *);
extern void BWindow_set_z_group (void *, enum haiku_z_group);
+extern void BWindow_set_sticky (void *, bool);
extern void BWindow_Flush (void *);
extern void BFont_close (void *);
unblock_input ();
}
+static void
+haiku_set_sticky (struct frame *f, Lisp_Object new_value,
+ Lisp_Object old_value)
+{
+ block_input ();
+ BWindow_set_sticky (FRAME_HAIKU_WINDOW (f), !NILP (new_value));
+ unblock_input ();
+}
+
\f
DEFUN ("haiku-set-mouse-absolute-pixel-position",
gui_set_fullscreen,
gui_set_font_backend,
gui_set_alpha,
- NULL, /* set sticky */
+ haiku_set_sticky,
NULL, /* set tool bar pos */
haiku_set_inhibit_double_buffering,
haiku_set_undecorated,