diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2021-06-07 17:58:54 +0200 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2021-06-08 18:48:16 +0200 |
commit | 073f5f28b835d3bda5e8771383c26d78d9740768 (patch) | |
tree | 20ed540730c940d82d9c6b4cd81408bec6c42cd1 /src/interface-gtk/gtk-info-popup.h | |
parent | 0507d6a8b2bc590faf97c5f7d406218d1980470b (diff) | |
download | sciteco-073f5f28b835d3bda5e8771383c26d78d9740768.tar.gz |
get rid of the GObject Builder (GOB2): converted teco-gtk-info-popup.gob and teco-gtk-label.gob to plain C
* Using modern GObject idioms and macros greatly reduces the necessary boilerplate code.
* The plain C versions of our GObject classes are now "final" (cannot be derived)
This means we can hide the instance structures from the headers and avoid using
explicit private fields.
* Avoids some deprecation warnings when building the Gtk UI.
* GOB2 is apparently no longer maintained, so this seems like a good idea in the long run.
* The most important reason however is that there is no precompiled GOB2 for Windows
which prevents compilation on native Windows hosts, eg. during nightly builds.
This is even more important as Gtk+3 is distributed on Windows practically
exclusively via MSYS.
(ArchLinux contains MinGW gtk3 packages as well, so cross-compiling from ArchLinux
would have been an alternative.)
Diffstat (limited to 'src/interface-gtk/gtk-info-popup.h')
-rw-r--r-- | src/interface-gtk/gtk-info-popup.h | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/interface-gtk/gtk-info-popup.h b/src/interface-gtk/gtk-info-popup.h new file mode 100644 index 0000000..04a4d42 --- /dev/null +++ b/src/interface-gtk/gtk-info-popup.h @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2012-2021 Robin Haberkorn + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +#pragma once + +#include <glib.h> +#include <glib-object.h> +#include <gio/gio.h> + +#include <gdk/gdk.h> +#include <gtk/gtk.h> + +#include "interface.h" + +#define TECO_TYPE_GTK_INFO_POPUP teco_gtk_info_popup_get_type() +G_DECLARE_FINAL_TYPE(TecoGtkInfoPopup, teco_gtk_info_popup, TECO, GTK_INFO_POPUP, GtkEventBox) + +GtkWidget *teco_gtk_info_popup_new(void); + +void teco_gtk_info_popup_add(TecoGtkInfoPopup *self, + teco_popup_entry_type_t type, + const gchar *name, gssize len, + gboolean highlight); +void teco_gtk_info_popup_scroll_page(TecoGtkInfoPopup *self); +void teco_gtk_info_popup_clear(TecoGtkInfoPopup *self); + +gboolean teco_gtk_info_popup_get_position_in_overlay(GtkOverlay *overlay, + GtkWidget *widget, + GdkRectangle *allocation, + gpointer user_data); +GIcon *teco_gtk_info_popup_get_icon_for_path(const gchar *path, + const gchar *fallback_name); |