UI: Improve GTK GUI Abstractions for Linux

This commit is contained in:
Doug Johnson
2018-01-08 02:57:55 -07:00
committed by Sandy Carter
parent 31a8d189f0
commit cdf77d21bc
4 changed files with 141 additions and 71 deletions

View File

@@ -34,7 +34,7 @@ class GTKWindow : public Window {
NativePlatformHandle native_platform_handle() const override {
return connection_;
}
NativeWindowHandle native_handle() const override { return window_; }
NativeWindowHandle native_handle() const override { return drawing_area_; }
void EnableMainMenu() override {}
void DisableMainMenu() override {}
@@ -75,15 +75,22 @@ class GTKWindow : public Window {
private:
void Create();
GtkWidget* window_;
GtkWidget* box_;
GtkWidget* drawing_area_;
xcb_connection_t* connection_;
friend void gtk_event_handler_(GtkWidget*, GdkEvent*, gpointer);
// C Callback shims for GTK
friend gboolean gtk_event_handler(GtkWidget*, GdkEvent*, gpointer);
friend gboolean close_callback(GtkWidget*, gpointer);
friend gboolean draw_callback(GtkWidget*, GdkFrameClock*, gpointer);
bool HandleMouse(GdkEventAny* event);
bool HandleKeyboard(GdkEventKey* event);
bool HandleWindowResize(GdkEventConfigure* event);
bool HandleWindowFocus(GdkEventFocus* event);
bool HandleWindowVisibility(GdkEventVisibility* event);
bool HandleWindowOwnerChange(GdkEventOwnerChange* event);
bool HandleWindowPaint();
bool closing_ = false;
bool fullscreen_ = false;
@@ -97,6 +104,7 @@ class GTKMenuItem : public MenuItem {
GtkWidget* handle() { return menu_; }
using MenuItem::OnSelected;
void Activate();
void EnableMenuItem(Window& window) override {}
void DisableMenuItem(Window& window) override {}