Text rendering working ok.

This commit is contained in:
James Grogan 2022-11-15 17:16:38 +00:00
parent eef93efc29
commit 4849d83fcf
10 changed files with 127 additions and 42 deletions

View file

@ -145,8 +145,7 @@ uint32_t XcbInterface::getEventMask()
return XCB_EVENT_MASK_KEY_RELEASE |
XCB_EVENT_MASK_BUTTON_PRESS |
XCB_EVENT_MASK_BUTTON_RELEASE |
XCB_EVENT_MASK_EXPOSURE |
XCB_EVENT_MASK_RESIZE_REDIRECT;
XCB_EVENT_MASK_EXPOSURE | XCB_EVENT_MASK_STRUCTURE_NOTIFY;
}
void XcbInterface::addWindow(mt::Window* window)
@ -211,42 +210,39 @@ void XcbInterface::loop()
mDesktopManager->onUiEvent(std::move(ui_event));
break;
}
case XCB_RESIZE_REQUEST:
case XCB_CONFIGURE_NOTIFY:
{
auto resize = (xcb_resize_request_event_t*) event;
int width = 1;
int height = 1;
if (resize->width > 0)
auto config_event = (xcb_configure_notify_event_t*) event;
auto mainWindow = mDesktopManager->getWindowManager()->getMainWindow();
auto width = mainWindow->getWidth();
auto height = mainWindow->getHeight();
bool changed = false;
if (config_event->width != width)
{
width = resize->width;
width = config_event->width;
changed = true;
}
if (resize->height > 0)
if (config_event->height != height)
{
height = resize->height;
height = config_event->height;
changed = true;
}
if (changed)
{
auto ui_event = std::make_unique<ResizeEvent>(width, height);
mDesktopManager->onUiEvent(std::move(ui_event));
}
auto ui_event = std::make_unique<ResizeEvent>(width, height);
mDesktopManager->onUiEvent(std::move(ui_event));
break;
}
default:
/* Unknown event type, ignore it */
break;
}
onEventsDispatched();
free(event);
}
}
void XcbInterface::onEventsDispatched()
{
if (mDesktopManager->isModified())
{
mDesktopManager->setIsModified(false);
auto mainWindow = mDesktopManager->getWindowManager()->getMainWindow();
mainWindow->clear();
}
}
void XcbInterface::shutDown()
{
mDesktopManager->getWindowManager()->clearPlatformWindows();

View file

@ -38,7 +38,6 @@ public:
private:
void initialize() override;
void onPaint();
void onEventsDispatched();
void onExposeEvent(xcb_expose_event_t* event);
void initializeHardwareRendering() override;