Text rendering working ok.
This commit is contained in:
parent
eef93efc29
commit
4849d83fcf
10 changed files with 127 additions and 42 deletions
|
@ -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();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue