mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-15 14:16:07 -06:00
CtrlCore: Wayland scale factor fixed
This commit is contained in:
parent
9a2ba0f86a
commit
96a24dfc2b
6 changed files with 20 additions and 7 deletions
|
|
@ -43,7 +43,7 @@ bool Ctrl::painting = false;
|
|||
void Ctrl::SetData(const Value&) {}
|
||||
Value Ctrl::GetData() const { return Value(); }
|
||||
|
||||
void Ctrl::Paint(Draw& draw) {}
|
||||
void Ctrl::Paint(Draw& w) {}
|
||||
int Ctrl::OverPaint() const { return 0; }
|
||||
|
||||
void Ctrl::Activate() {}
|
||||
|
|
|
|||
|
|
@ -91,8 +91,7 @@ public:
|
|||
bool CanSetSurface() { return true; }
|
||||
static void Flush() {} // TODO?
|
||||
|
||||
// SystemDraw(cairo_t *cr, GdkDrawable *dw/* = NULL*/) : cr(cr), drawable(dw) { (void)drawable; invalid = NULL; }
|
||||
SystemDraw(cairo_t *cr) : cr(cr) {}
|
||||
SystemDraw(cairo_t *cr);
|
||||
~SystemDraw();
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -115,7 +115,16 @@ bool InitGtkApp(int argc, char **argv, const char **envptr)
|
|||
|
||||
Ctrl::scale = 1;
|
||||
#if GTK_CHECK_VERSION(3, 10, 0)
|
||||
Ctrl::scale = gdk_window_get_scale_factor(gdk_screen_get_root_window(gdk_screen_get_default()));
|
||||
if(Ctrl::IsWayland()) {
|
||||
GtkWidget *window;
|
||||
window = gtk_window_new(GTK_WINDOW_POPUP);
|
||||
gtk_window_set_default_size (GTK_WINDOW (window), 1, 1);
|
||||
gtk_widget_show_all (window);
|
||||
Ctrl::scale = gdk_window_get_scale_factor(gtk_widget_get_window(window));
|
||||
gtk_widget_destroy(window);
|
||||
}
|
||||
else
|
||||
Ctrl::scale = gdk_window_get_scale_factor(gdk_screen_get_root_window(gdk_screen_get_default()));
|
||||
#endif
|
||||
|
||||
Ctrl::GlobalBackBuffer();
|
||||
|
|
|
|||
|
|
@ -6,6 +6,11 @@ namespace Upp {
|
|||
|
||||
#define LLOG(x)
|
||||
|
||||
SystemDraw::SystemDraw(cairo_t *cr)
|
||||
: cr(cr)
|
||||
{
|
||||
}
|
||||
|
||||
SystemDraw::~SystemDraw()
|
||||
{
|
||||
FlushText();
|
||||
|
|
|
|||
|
|
@ -88,12 +88,12 @@ gboolean Ctrl::GtkDraw(GtkWidget *widget, cairo_t *cr, gpointer user_data)
|
|||
Ctrl *p = GetTopCtrlFromId(user_data);
|
||||
if(p) {
|
||||
p->fullrefresh = false;
|
||||
cairo_scale(cr, 1.0 / scale, 1.0 / scale);
|
||||
cairo_scale(cr, 1.0 / scale, 1.0 / scale); // cancel scaling to be pixel perfect
|
||||
p->SyncWndRect(p->GetWndScreenRect()); // avoid black areas when resizing
|
||||
|
||||
SystemDraw w(cr);
|
||||
painting = true;
|
||||
|
||||
|
||||
double x1, y1, x2, y2;
|
||||
cairo_clip_extents (cr, &x1, &y1, &x2, &y2);
|
||||
Rect r = RectC((int)x1, (int)y1, (int)ceil(x2 - x1), (int)ceil(y2 - y1));
|
||||
|
|
|
|||
|
|
@ -170,4 +170,4 @@ INITIALIZE(JavaBuilder)
|
|||
INITIALIZE(AndroidBuilder)
|
||||
INITIALIZE(ScriptBuilder)
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue