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 fn configure(
232 &mut self,
233 conn: &Connection,
234 qh: &QueueHandle<Self>,
235 window: &Window,
236 configure: WindowConfigure,
237 _serial: u32,
238 ) {
239 self.buffer = None;
240
241 println!(
242 "Configure size {:?}, decorations: {:?}",
243 configure.new_size, configure.decoration_mode
244 );
245
246 let (width, height) = if configure.decoration_mode == DecorationMode::Client {
247 let window_frame = self.window_frame.get_or_insert_with(|| {
248 let mut frame = AdwaitaFrame::new(
249 &self.window,
250 &self.shm_state,
251 self.compositor_state.clone(),
252 self.subcompositor_state.clone(),
253 qh.clone(),
254 FrameConfig::auto(),
255 )
256 .expect("failed to create client side decorations frame.");
257 frame.set_title(self.title.clone());
258 frame
259 });
260
261 // Un-hide the frame.
262 window_frame.set_hidden(false);
263
264 // Configure state before touching any resizing.
265 window_frame.update_state(configure.state);
266
267 // Configure the button state.
268 window_frame.update_wm_capabilities(configure.capabilities);
269
270 let (width, height) = match configure.new_size {
271 (Some(width), Some(height)) => {
272 // The size could be 0.
273 window_frame.subtract_borders(width, height)
274 }
275 _ => {
276 // You might want to consider checking for configure bounds.
277 (Some(self.width), Some(self.height))
278 }
279 };
280
281 // Clamp the size to at least one pixel.
282 let width = width.unwrap_or(NonZeroU32::new(1).unwrap());
283 let height = height.unwrap_or(NonZeroU32::new(1).unwrap());
284
285 window_frame.resize(width, height);
286
287 let (x, y) = window_frame.location();
288 let outer_size = window_frame.add_borders(width.get(), height.get());
289 window.xdg_surface().set_window_geometry(
290 x,
291 y,
292 outer_size.0 as i32,
293 outer_size.1 as i32,
294 );
295
296 (width, height)
297 } else {
298 // Hide the frame, if any.
299 if let Some(frame) = self.window_frame.as_mut() {
300 frame.set_hidden(true)
301 }
302 let width = configure.new_size.0.unwrap_or(self.width);
303 let height = configure.new_size.1.unwrap_or(self.height);
304 self.window.xdg_surface().set_window_geometry(
305 0,
306 0,
307 width.get() as i32,
308 height.get() as i32,
309 );
310 (width, height)
311 };
312
313 // Update new width and height;
314 self.width = width;
315 self.height = height;
316
317 // Initiate the first draw.
318 if self.first_configure {
319 self.first_configure = false;
320 self.draw(conn, qh);
321 }
322 }
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§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.