Add minimal support for Wayland
This just gets it running properly, but disables features that are difficult or impossible to do on Wayland (the window selector, and the stuff that uses libwnck). At least it doesn't segfault on startup anymore. Fixes: #73
This commit is contained in:
committed by
Gaël Bonithon
parent
989c04a6cb
commit
ecd1e1a645
@@ -24,6 +24,7 @@
|
|||||||
#include <X11/Xproto.h>
|
#include <X11/Xproto.h>
|
||||||
|
|
||||||
#include <glib-object.h>
|
#include <glib-object.h>
|
||||||
|
#include <gdk/gdkx.h>
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
#include <gdk/gdkkeysyms.h>
|
#include <gdk/gdkkeysyms.h>
|
||||||
|
|
||||||
@@ -303,8 +304,12 @@ xtm_process_window_init (XtmProcessWindow *window)
|
|||||||
G_CALLBACK (show_settings_dialog), window);
|
G_CALLBACK (show_settings_dialog), window);
|
||||||
|
|
||||||
button = GTK_WIDGET (gtk_builder_get_object (window->builder, "button-identify"));
|
button = GTK_WIDGET (gtk_builder_get_object (window->builder, "button-identify"));
|
||||||
g_signal_connect (G_OBJECT (button), "clicked",
|
if (GDK_IS_X11_DISPLAY (gdk_display_get_default ())) {
|
||||||
G_CALLBACK (xwininfo_clicked_cb), window);
|
g_signal_connect (G_OBJECT (button), "clicked",
|
||||||
|
G_CALLBACK (xwininfo_clicked_cb), window);
|
||||||
|
} else {
|
||||||
|
gtk_widget_hide (button);
|
||||||
|
}
|
||||||
|
|
||||||
window->filter_searchbar = GTK_WIDGET (gtk_builder_get_object (window->builder, "filter-searchbar"));
|
window->filter_searchbar = GTK_WIDGET (gtk_builder_get_object (window->builder, "filter-searchbar"));
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -24,6 +24,10 @@
|
|||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
#include <gmodule.h>
|
#include <gmodule.h>
|
||||||
|
|
||||||
|
#ifdef HAVE_WNCK
|
||||||
|
#include <gdk/gdkx.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "task-manager.h"
|
#include "task-manager.h"
|
||||||
#ifdef HAVE_WNCK
|
#ifdef HAVE_WNCK
|
||||||
#include "app-manager.h"
|
#include "app-manager.h"
|
||||||
@@ -93,7 +97,9 @@ static void
|
|||||||
xtm_task_manager_init (XtmTaskManager *manager)
|
xtm_task_manager_init (XtmTaskManager *manager)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_WNCK
|
#ifdef HAVE_WNCK
|
||||||
manager->app_manager = xtm_app_manager_new ();
|
if (GDK_IS_X11_DISPLAY (gdk_display_get_default ())) {
|
||||||
|
manager->app_manager = xtm_app_manager_new ();
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
manager->tasks = g_array_new (FALSE, FALSE, sizeof (Task));
|
manager->tasks = g_array_new (FALSE, FALSE, sizeof (Task));
|
||||||
|
|
||||||
@@ -111,7 +117,9 @@ xtm_task_manager_finalize (GObject *object)
|
|||||||
XtmTaskManager *manager = XTM_TASK_MANAGER (object);
|
XtmTaskManager *manager = XTM_TASK_MANAGER (object);
|
||||||
g_array_free (manager->tasks, TRUE);
|
g_array_free (manager->tasks, TRUE);
|
||||||
#ifdef HAVE_WNCK
|
#ifdef HAVE_WNCK
|
||||||
g_object_unref (manager->app_manager);
|
if (manager->app_manager != NULL) {
|
||||||
|
g_object_unref (manager->app_manager);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
g_object_unref (settings);
|
g_object_unref (settings);
|
||||||
}
|
}
|
||||||
@@ -235,8 +243,8 @@ model_update_tree_iter (XtmTaskManager *manager, GtkTreeIter *iter, glong timest
|
|||||||
gchar *old_state;
|
gchar *old_state;
|
||||||
gchar *background, *foreground;
|
gchar *background, *foreground;
|
||||||
#ifdef HAVE_WNCK
|
#ifdef HAVE_WNCK
|
||||||
App *app = xtm_app_manager_get_app_from_pid (manager->app_manager, task->pid);
|
App *app = manager->app_manager != NULL ? xtm_app_manager_get_app_from_pid (manager->app_manager, task->pid) : NULL;
|
||||||
GdkPixbuf *icon;
|
GdkPixbuf *icon = NULL;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
vsz = g_format_size_full (task->vsz, G_FORMAT_SIZE_IEC_UNITS);
|
vsz = g_format_size_full (task->vsz, G_FORMAT_SIZE_IEC_UNITS);
|
||||||
|
|||||||
Reference in New Issue
Block a user