ultimatepp/uppsrc/CtrlCore/GtkCtrl.cpp
Zbigniew Rębacz 511ff1e991
Initial version of GTK Wayland backend (#205)
* Obtaining Gtk backend and runtime and displaying it in About box.

* .fixes

* .csometics

* Initial iteration for GTK on Wayland. Works suprisingly stable.

* Disable X11Utils when Wayland backend detected.

* Cosmetics

* .native

* First iteration of CSD.

* .working

* .working

* Calculating additional window spaced used by CSD.

* Fix max window size problem.

* Fix issue with rendering.

* .refactoring

* Fix splash screen when SSD is enable.

* Fix issue with mouse scrolling when CSD is enable.

* Not ideal fix for no keyboard input in parent window.

* Fix problem with XDisplay compilation and change name of GdkBackend to GtkBackend.

* Introduce new WAYLAND flag.

* Ctrl::GetWndScreenRect() fix for X11.

* Fix to compile on mac

---------

Co-authored-by: Zbigniew Rębacz <zbigniew.rebacz@hotmail.com>
2025-02-02 11:47:32 +01:00

85 lines
1.2 KiB
C++

#include <CtrlCore/CtrlCore.h>
#ifdef GUI_GTK
#ifndef PLATFORM_OPENBSD
#undef CurrentTime
#endif
#define LLOG(x) // DLOG(x)
namespace Upp {
void Ctrl::GuiPlatformConstruct()
{
}
void Ctrl::GuiPlatformDestruct()
{
}
void Ctrl::GuiPlatformGetTopRect(Rect& r) const
{
}
bool Ctrl::GuiPlatformRefreshFrameSpecial(const Rect& r)
{
return false;
}
bool Ctrl::GuiPlatformSetFullRefreshSpecial()
{
return false;
}
void GuiPlatformAdjustDragImage(ImageBuffer&)
{
}
bool GuiPlatformHasSizeGrip()
{
return true;
}
void GuiPlatformGripResize(TopWindow *q)
{
if(q->IsOpen()) {
Point p = GetMousePos();
gtk_window_begin_resize_drag(q->gtk(), GDK_WINDOW_EDGE_SOUTH_EAST,
1, Ctrl::LSC(p.x), Ctrl::LSC(p.y), Ctrl::CurrentTime);
}
}
Color GuiPlatformGetScreenPixel(int x, int y)
{
return Black;
}
void GuiPlatformAfterMenuPopUp()
{
}
String Ctrl::Name() const
{
return Name0();
}
void Ctrl::InstallPanicBox()
{
}
GdkWindow *Ctrl::gdk() const
{
const Top *top = GetTop();
return top ? gtk_widget_get_window(top->window) : NULL;
}
GtkWindow *Ctrl::gtk() const
{
const Top *top = GetTop();
return top ? (GtkWindow *)top->window : NULL;
}
}
#endif