window layouter: respond to nitpicker mode changes
This commit is contained in:
parent
37044eaad8
commit
752ddc153e
|
@ -241,6 +241,24 @@ struct Floating_window_layouter::Main : Operations
|
||||||
|
|
||||||
Rect maximized_window_geometry;
|
Rect maximized_window_geometry;
|
||||||
|
|
||||||
|
void handle_mode_change(unsigned)
|
||||||
|
{
|
||||||
|
/* determine maximized window geometry */
|
||||||
|
Framebuffer::Mode const mode = nitpicker.mode();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* XXX obtain decorator constraints dynamically
|
||||||
|
*/
|
||||||
|
enum { PAD_LEFT = 4, PAD_RIGHT = 4, PAD_TOP = 20, PAD_BOTTOM = 4 };
|
||||||
|
maximized_window_geometry = Rect(Point(PAD_LEFT, PAD_TOP),
|
||||||
|
Area(mode.width() - PAD_LEFT - PAD_RIGHT,
|
||||||
|
mode.height() - PAD_TOP - PAD_BOTTOM));
|
||||||
|
}
|
||||||
|
|
||||||
|
Signal_dispatcher<Main> mode_change_dispatcher = {
|
||||||
|
sig_rec, *this, &Main::handle_mode_change };
|
||||||
|
|
||||||
|
|
||||||
Input::Session_client input { nitpicker.input_session() };
|
Input::Session_client input { nitpicker.input_session() };
|
||||||
|
|
||||||
Attached_dataspace input_ds { input.dataspace() };
|
Attached_dataspace input_ds { input.dataspace() };
|
||||||
|
@ -266,24 +284,12 @@ struct Floating_window_layouter::Main : Operations
|
||||||
*/
|
*/
|
||||||
Main(Signal_receiver &sig_rec) : sig_rec(sig_rec)
|
Main(Signal_receiver &sig_rec) : sig_rec(sig_rec)
|
||||||
{
|
{
|
||||||
/* determine maximized window geometry */
|
nitpicker.mode_sigh(mode_change_dispatcher);
|
||||||
Framebuffer::Mode const mode =
|
handle_mode_change(0);
|
||||||
nitpicker.mode();
|
|
||||||
|
|
||||||
/*
|
|
||||||
* XXX obtain decorator constraints dynamically
|
|
||||||
*/
|
|
||||||
enum { PAD_LEFT = 4, PAD_RIGHT = 4, PAD_TOP = 20, PAD_BOTTOM = 4 };
|
|
||||||
maximized_window_geometry = Rect(Point(PAD_LEFT, PAD_TOP),
|
|
||||||
Area(mode.width() - PAD_LEFT - PAD_RIGHT,
|
|
||||||
mode.height() - PAD_TOP - PAD_BOTTOM));
|
|
||||||
|
|
||||||
window_list.sigh(window_list_dispatcher);
|
window_list.sigh(window_list_dispatcher);
|
||||||
|
|
||||||
focus_request.sigh(focus_request_dispatcher);
|
focus_request.sigh(focus_request_dispatcher);
|
||||||
|
|
||||||
hover.sigh(hover_dispatcher);
|
hover.sigh(hover_dispatcher);
|
||||||
|
|
||||||
input.sigh(input_dispatcher);
|
input.sigh(input_dispatcher);
|
||||||
|
|
||||||
window_layout_reporter.enabled(true);
|
window_layout_reporter.enabled(true);
|
||||||
|
|
|
@ -86,7 +86,7 @@ class Floating_window_layouter::Window : public List<Window>::Element
|
||||||
*/
|
*/
|
||||||
Rect _unmaximized_geometry;
|
Rect _unmaximized_geometry;
|
||||||
|
|
||||||
Rect const _maximized_geometry;
|
Rect const &_maximized_geometry;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Window may be partially transparent
|
* Window may be partially transparent
|
||||||
|
@ -176,7 +176,7 @@ class Floating_window_layouter::Window : public List<Window>::Element
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Window(Window_id id, Rect maximized_geometry)
|
Window(Window_id id, Rect &maximized_geometry)
|
||||||
:
|
:
|
||||||
_id(id), _maximized_geometry(maximized_geometry)
|
_id(id), _maximized_geometry(maximized_geometry)
|
||||||
{ }
|
{ }
|
||||||
|
|
Loading…
Reference in New Issue