Struct sctk_adwaita::FrameConfig
source · pub struct FrameConfig {
pub theme: ColorTheme,
}
Expand description
The configuration for the AdwaitaFrame
frame.
Fields§
§theme: ColorTheme
Implementations§
source§impl FrameConfig
impl FrameConfig
sourcepub fn new(theme: ColorTheme) -> Self
pub fn new(theme: ColorTheme) -> Self
Create the new configuration with the given theme
.
sourcepub fn auto() -> Self
pub fn auto() -> Self
This is equivalent of calling FrameConfig::new(ColorTheme::auto())
.
For details see ColorTheme::auto
.
Examples found in repository?
examples/window.rs (line 254)
231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322
fn configure(
&mut self,
conn: &Connection,
qh: &QueueHandle<Self>,
window: &Window,
configure: WindowConfigure,
_serial: u32,
) {
self.buffer = None;
println!(
"Configure size {:?}, decorations: {:?}",
configure.new_size, configure.decoration_mode
);
let (width, height) = if configure.decoration_mode == DecorationMode::Client {
let window_frame = self.window_frame.get_or_insert_with(|| {
let mut frame = AdwaitaFrame::new(
&self.window,
&self.shm_state,
self.compositor_state.clone(),
self.subcompositor_state.clone(),
qh.clone(),
FrameConfig::auto(),
)
.expect("failed to create client side decorations frame.");
frame.set_title(self.title.clone());
frame
});
// Un-hide the frame.
window_frame.set_hidden(false);
// Configure state before touching any resizing.
window_frame.update_state(configure.state);
// Configure the button state.
window_frame.update_wm_capabilities(configure.capabilities);
let (width, height) = match configure.new_size {
(Some(width), Some(height)) => {
// The size could be 0.
window_frame.subtract_borders(width, height)
}
_ => {
// You might want to consider checking for configure bounds.
(Some(self.width), Some(self.height))
}
};
// Clamp the size to at least one pixel.
let width = width.unwrap_or(NonZeroU32::new(1).unwrap());
let height = height.unwrap_or(NonZeroU32::new(1).unwrap());
window_frame.resize(width, height);
let (x, y) = window_frame.location();
let outer_size = window_frame.add_borders(width.get(), height.get());
window.xdg_surface().set_window_geometry(
x,
y,
outer_size.0 as i32,
outer_size.1 as i32,
);
(width, height)
} else {
// Hide the frame, if any.
if let Some(frame) = self.window_frame.as_mut() {
frame.set_hidden(true)
}
let width = configure.new_size.0.unwrap_or(self.width);
let height = configure.new_size.1.unwrap_or(self.height);
self.window.xdg_surface().set_window_geometry(
0,
0,
width.get() as i32,
height.get() as i32,
);
(width, height)
};
// Update new width and height;
self.width = width;
self.height = height;
// Initiate the first draw.
if self.first_configure {
self.first_configure = false;
self.draw(conn, qh);
}
}
sourcepub fn light() -> Self
pub fn light() -> Self
This is equivalent of calling FrameConfig::new(ColorTheme::light())
.
For details see ColorTheme::light
.
sourcepub fn dark() -> Self
pub fn dark() -> Self
This is equivalent of calling FrameConfig::new(ColorTheme::dark())
.
For details see ColorTheme::dark
.
Trait Implementations§
source§impl Clone for FrameConfig
impl Clone for FrameConfig
source§fn clone(&self) -> FrameConfig
fn clone(&self) -> FrameConfig
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreAuto Trait Implementations§
impl Freeze for FrameConfig
impl RefUnwindSafe for FrameConfig
impl Send for FrameConfig
impl Sync for FrameConfig
impl Unpin for FrameConfig
impl UnwindSafe for FrameConfig
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.