diff --git a/composite.cc b/composite.cc index 55bbcc88..47651cbd 100644 --- a/composite.cc +++ b/composite.cc @@ -17,6 +17,8 @@ #include "composite.h" #include #include +#include + double red, green, blue, alpha, width; std::list points; @@ -49,6 +51,9 @@ Composite::Composite() { #define N 128 int w = gdk_screen_width(); int h = gdk_screen_height(); + GdkDisplay* dp = gdk_display_get_default(); + GdkMonitor* mon = gdk_display_get_primary_monitor(dp); + scale_factor = gdk_monitor_get_scale_factor(mon); num_x = (gdk_screen_width() - 1)/N + 1; num_y = (gdk_screen_height() - 1)/N + 1; pieces = new Popup**[num_x]; @@ -61,6 +66,12 @@ Composite::Composite() { } void Composite::draw(Point p, Point q) { + if(scale_factor > 0) { + p.x /= scale_factor; + p.y /= scale_factor; + q.x /= scale_factor; + q.y /= scale_factor; + } if (!points.size()) { points.push_back(p); } diff --git a/composite.h b/composite.h index a9c4cdb9..ac496bc0 100644 --- a/composite.h +++ b/composite.h @@ -31,6 +31,7 @@ class Popup : public Gtk::Window { class Composite : public Trace { int num_x, num_y; + int scale_factor; Popup ***pieces; virtual void draw(Point p, Point q); virtual void start_();