diff options
Diffstat (limited to 'src/interface-gtk/interface-gtk.cpp')
-rw-r--r-- | src/interface-gtk/interface-gtk.cpp | 34 |
1 files changed, 28 insertions, 6 deletions
diff --git a/src/interface-gtk/interface-gtk.cpp b/src/interface-gtk/interface-gtk.cpp index 1babdff..ebd3c91 100644 --- a/src/interface-gtk/interface-gtk.cpp +++ b/src/interface-gtk/interface-gtk.cpp @@ -131,6 +131,22 @@ ViewGtk::initialize_impl(void) setup(); } +GOptionGroup * +InterfaceGtk::get_options(void) +{ + const GOptionEntry entries[] = { + {"no-csd", 0, G_OPTION_FLAG_REVERSE, G_OPTION_ARG_NONE, &use_csd, + "Disable client-side decorations.", NULL}, + {NULL} + }; + + GOptionGroup *group = gtk_get_option_group(TRUE); + + g_option_group_add_entries(group, entries); + + return group; +} + void InterfaceGtk::main_impl(int &argc, char **&argv) { @@ -166,17 +182,23 @@ InterfaceGtk::main_impl(int &argc, char **&argv) /* * The info bar is tried to be made the title bar of the * window which also disables the default window decorations - * (client-side decorations). - * FIXME: This could fail, leaving us with a standard title - * bar and the info bar with close buttons. In this case, - * we should at least disable the info bar close button. + * (client-side decorations) unless --no-csd was specified. + * NOTE: Client-side decoations could fail, leaving us with a + * standard title bar and the info bar with close buttons. + * Other window managers have undesirable side-effects. * FIXME: At lease on Gtk 3.12 we could disable the subtitle. */ info_bar_widget = gtk_header_bar_new(); - gtk_header_bar_set_show_close_button(GTK_HEADER_BAR(info_bar_widget), TRUE); info_image = gtk_image_new(); gtk_header_bar_pack_start(GTK_HEADER_BAR(info_bar_widget), info_image); - gtk_window_set_titlebar(GTK_WINDOW(window), info_bar_widget); + if (use_csd) { + /* use client-side decorations */ + gtk_header_bar_set_show_close_button(GTK_HEADER_BAR(info_bar_widget), TRUE); + gtk_window_set_titlebar(GTK_WINDOW(window), info_bar_widget); + } else { + /* fall back to adding the info bar as an ordinary widget */ + gtk_box_pack_start(GTK_BOX(vbox), info_bar_widget, FALSE, FALSE, 0); + } /* * The event box is the parent of all Scintilla views |