--- a/src/overview.cpp +++ b/src/overview.cpp @@ -297,8 +297,8 @@ void update_transformer() { if (!transformer || !view || !view->is_mapped() || orig_geo.width <= 0 || orig_geo.height <= 0) return; auto cur = anim.current(); - float sx = std::clamp((float)cur.width / orig_geo.width, 0.1f, 10.0f); - float sy = std::clamp((float)cur.height / orig_geo.height, 0.1f, 10.0f); + float sx = std::clamp(float(cur.width / orig_geo.width), 0.1f, 10.0f); + float sy = std::clamp(float(cur.height / orig_geo.height), 0.1f, 10.0f); transformer->translation_x = (cur.x + cur.width/2.0f) - (orig_geo.x + orig_geo.width/2.0f); transformer->translation_y = (cur.y + cur.height/2.0f) - (orig_geo.y + orig_geo.height/2.0f); transformer->scale_x = sx; transformer->scale_y = sy; @@ -962,10 +962,10 @@ public: instance_t(panel_node_t *s, wf::scene::damage_callback pd) : self(s), push_damage(pd) {} void schedule_instructions(std::vector &instr, - const wf::render_target_t &target, wf::region_t &damage) override { + const wf::render_target_t &target, wf::regionf_t &damage) override { if (self->overview_active && *self->overview_active) return; auto bbox = self->get_bounding_box(); - wf::region_t our_damage = damage & bbox; + wf::regionf_t our_damage = damage & bbox; if (!our_damage.empty()) instr.push_back({.instance = this, .target = target, .damage = our_damage}); } void render(const wf::scene::render_instruction_t &data) override { @@ -974,7 +974,7 @@ render_tex(self->progs->tex, self->output, self->panel->tex_id, self->panel->get_render_geometry(), 1.0f, true); }); } - void compute_visibility(wf::output_t*, wf::region_t&) override {} + void compute_visibility(wf::output_t*, wf::regionf_t&) override {} }; panel_node_t(wf::output_t *out, top_panel_t *p, gl_programs_t *pr, bool *active) @@ -999,7 +999,7 @@ struct ws_capture_t { std::shared_ptr stream; std::vector instances; - wf::region_t damage; wf::auxilliary_buffer_t fb; wf::point_t ws; + wf::regionf_t damage; wf::auxilliary_buffer_t fb; wf::point_t ws; }; class render_instance_t : public wf::scene::render_instance_t { @@ -1015,7 +1015,7 @@ ws_capture_t c; c.ws = {x, y}; c.stream = std::make_shared(s->output, c.ws); auto idx = captures.size(); - c.stream->gen_render_instances(c.instances, [this, idx](const wf::region_t &d) { + c.stream->gen_render_instances(c.instances, [this, idx](const wf::regionf_t &d) { if (idx < captures.size()) captures[idx].damage |= d; push_damage(self->get_bounding_box()); }, s->output); @@ -1043,10 +1043,10 @@ s.transformer->translation_x = s.transformer->translation_y = 0; std::vector vi; - s.view->get_transformed_node()->gen_render_instances(vi, [](const wf::region_t&){}, self->output); + s.view->get_transformed_node()->gen_render_instances(vi, [](const wf::regionf_t&){}, self->output); wf::render_target_t st{drg.snapshot_fb}; st.geometry = geo; st.scale = scale; wf::render_pass_params_t sp; - sp.instances = &vi; sp.damage = wf::region_t{geo}; + sp.instances = &vi; sp.damage = wf::regionf_t{geo}; sp.reference_output = self->output; sp.target = st; sp.flags = wf::RPASS_CLEAR_BACKGROUND; wf::render_pass_t::run(sp); @@ -1057,7 +1057,7 @@ } void schedule_instructions(std::vector &instr, - const wf::render_target_t &target, wf::region_t &damage) override { + const wf::render_target_t &target, wf::regionf_t &damage) override { auto bbox = self->get_bounding_box(); float scale = self->output->handle->scale; if (self->activities->drag.needs_capture) capture_drag_snapshot(scale); @@ -1069,7 +1069,7 @@ c.fb.allocate(wf::dimensions(wb), scale); wf::render_target_t t{c.fb}; t.geometry = wb; t.scale = scale; wf::render_pass_params_t p; - p.instances = &c.instances; p.damage = force ? wf::region_t{wb} : c.damage; + p.instances = &c.instances; p.damage = force ? wf::regionf_t{wb} : c.damage; p.reference_output = self->output; p.target = t; p.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS; wf::render_pass_t::run(p); c.damage.clear(); @@ -1079,8 +1079,8 @@ } void render(const wf::scene::render_instruction_t &data) override { self->do_render(data, captures); } - void compute_visibility(wf::output_t *out, wf::region_t &) override { - for (auto &c : captures) for (auto &i : c.instances) { wf::region_t r = c.stream->get_bounding_box(); i->compute_visibility(out, r); } + void compute_visibility(wf::output_t *out, wf::regionf_t &) override { + for (auto &c : captures) for (auto &i : c.instances) { wf::regionf_t r = c.stream->get_bounding_box(); i->compute_visibility(out, r); } } }; @@ -1492,12 +1492,12 @@ } void handle_motion() { auto c = wf::get_core().get_cursor_position(); - auto o = wf::get_core().output_layout->get_output_at(c.x, c.y); + auto o = wf::get_core().output_layout->find_closest_output(c); if (o && outputs.count(o)) outputs[o]->handle_motion(c); } void handle_button(wlr_pointer_button_event *ev) { auto c = wf::get_core().get_cursor_position(); - auto o = wf::get_core().output_layout->get_output_at(c.x, c.y); + auto o = wf::get_core().output_layout->find_closest_output(c); if (o && outputs.count(o)) outputs[o]->handle_button(ev->button, ev->state, c); } };