Skip to content

Start of Gtk3 to Gtk4 #1909

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 112 commits into
base: stable
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
112 commits
Select commit Hold shift + click to select a range
909441d
Use GdkEvent accessor functions part1
Bob-IT Apr 27, 2024
ba63631
Use GdkEvent accessor functions part2
Bob-IT Apr 4, 2024
b227847
Use GdkEvent accessor functions part3
Bob-IT Apr 4, 2024
b279fa6
Use GdkEvent accessor functions part4
Bob-IT Apr 4, 2024
7df062c
Use GdkEvent accessor functions part5
Bob-IT Apr 4, 2024
1b6a0da
Up the minimum Gtk version to 3.24.0
Bob-IT Apr 4, 2024
60353b6
Use GtkEventControllerKey combo/completion cell
Bob-IT Apr 4, 2024
d2e809c
Push Webkit out of the way
Bob-IT Apr 4, 2024
079b1c0
Move to Gtk4 version 4.8.3
Bob-IT Apr 4, 2024
58699f8
Start to use GtkEventControllerKey
Bob-IT Apr 27, 2024
511b22a
Start of gtk_style_context_get changes
Bob-IT Apr 4, 2024
557f5e9
Comment out all gtk_widget_show_all
Bob-IT Apr 27, 2024
b7887af
Change gtk_widget_show/hide part1
Bob-IT Apr 27, 2024
3479509
Change gtk_widget_show/hide part2
Bob-IT Apr 27, 2024
782f417
Change gtk_widget_show/hide part3
Bob-IT Apr 4, 2024
bcc9ef5
Change gtk_entry_get/set_text to gnc version part1
Bob-IT Apr 10, 2024
306d187
Change gtk_entry_get/set_text to gnc version part2
Bob-IT Apr 4, 2024
1e2b3dd
Change gtk_entry_get/set_text to gnc version part3
Bob-IT Apr 4, 2024
5ce93e2
Change gtk_widget_destroy part1
Bob-IT Apr 4, 2024
b0a7333
Change gtk_widget_destroy part2
Bob-IT Apr 4, 2024
72dd5aa
Change gtk_widget_destroy part3
Bob-IT Apr 4, 2024
5c621e1
Change gtk_box_pack_end/start part1
Bob-IT Apr 4, 2024
1e06577
Change gtk_box_pack_end/start part2
Bob-IT Apr 4, 2024
c83ace5
Change gtk_box_pack_end/start part3
Bob-IT Apr 4, 2024
1d67915
Change gtk_container_add/remove
Bob-IT Apr 4, 2024
5f5f948
Change gtk_conatiner_set_border
Bob-IT Apr 4, 2024
b19c5b2
Change some more gtk_container_ functions
Bob-IT Apr 10, 2024
a97ab48
Start of some Builder changes
Bob-IT Apr 4, 2024
b702461
Change radio to toggle buttons
Bob-IT Apr 4, 2024
de11a6b
Changes for GtkBin
Bob-IT Apr 10, 2024
36094be
Change GtkAccelGroup to GtkShortcutController
Bob-IT Apr 4, 2024
71f7fc4
Start changes in html folder
Bob-IT Apr 4, 2024
eeeedf4
Change gtk_buildable_get_name
Bob-IT Apr 4, 2024
bd0aa90
Change gtk_window_resize
Bob-IT Apr 4, 2024
dbaf716
Change gtk_entry_get/set_width_chars
Bob-IT Apr 4, 2024
573e60c
Change gtk_image_new_from_icon_name, one parameter
Bob-IT Apr 4, 2024
e6cfcd0
Change gtk_widget_get_toplevel
Bob-IT Apr 4, 2024
f442e57
Changes for gtk_file_chooser
Bob-IT Apr 4, 2024
b292a2d
Start of changes for gtk_dialog_run part1
Bob-IT Apr 4, 2024
dc5acaa
Start of changes for gtk_dialog_run part2
Bob-IT Apr 4, 2024
005c1a1
Start of changes for gtk_dialog_run part3
Bob-IT Apr 4, 2024
1f3ce71
Change gtk_widget_grab_default
Bob-IT Apr 5, 2024
8a49306
Change gtk_window_get_size
Bob-IT Apr 5, 2024
2789948
Start changes in dialog-customer
Bob-IT Apr 5, 2024
e1c0646
Change GdkEventFocus events
Bob-IT Apr 27, 2024
421a31a
Change gdk_event_get_coords
Bob-IT Apr 5, 2024
b78d8c3
Change gtk_window_set_keep_above
Bob-IT Apr 5, 2024
66ee65a
Comment out gtk_events_pending
Bob-IT Apr 5, 2024
c55ba95
Change gtk_scrolled_window_new
Bob-IT Apr 5, 2024
17779c9
Correct adding widget to a frame widget
Bob-IT Apr 5, 2024
b440ce6
Start changes in gnc-icons
Bob-IT Apr 5, 2024
effc4b7
Change gtk_label_set_line_wrap
Bob-IT Apr 5, 2024
dfdc500
Change gtk_box_reorder_child
Bob-IT Apr 27, 2024
1e0e68c
Change GDK_MOD1_MASK to GDK_ALT_MASK
Bob-IT Apr 5, 2024
d195c05
Change gtk_widget_get_tooltip_text
Bob-IT Apr 5, 2024
1f734df
Change gtk_window_new
Bob-IT Apr 5, 2024
5da7c0e
Comment out gtk_window_set_skip_taskbar_hint
Bob-IT Apr 5, 2024
e50c639
Change gtk_button_box_new to gtk_box_new
Bob-IT Apr 5, 2024
10ed62b
Comment out gtk_widget_get_clipboard
Bob-IT Apr 5, 2024
58f79d4
Comment out gtk_widget_set_no_show_all
Bob-IT Apr 5, 2024
100f2b3
Comment out stuff in gnc-cell-...
Bob-IT Apr 5, 2024
a1972a1
Comment out gtk_widget_add_events
Bob-IT Apr 5, 2024
bb0d40b
Changes to keyval
Bob-IT Apr 5, 2024
53ee041
Start of changes to gnome-utils folder
Bob-IT Apr 12, 2025
8e3e87d
Start of changes to gnome folder
Bob-IT Apr 12, 2025
23e9cc2
Start of changes to import-export folder
Bob-IT Apr 12, 2025
20b4ffc
Start of changes to register folder
Bob-IT Apr 12, 2025
38a84bf
Start of changes to others
Bob-IT Apr 12, 2025
a404e94
Change gtk_init_check
Bob-IT Apr 12, 2025
cc103cc
Fix and comment out errors to clear trace file
Bob-IT Apr 12, 2025
5328dd9
Change gtk_main
Bob-IT Apr 12, 2025
aade120
Start of gnc-main-window changes
Bob-IT Apr 12, 2025
f408332
Start of gnc-splash changes
Bob-IT Apr 12, 2025
d6e3f28
Start of about-dialog changes
Bob-IT Apr 12, 2025
bfe5dde
Start of account plugin page changes
Bob-IT Apr 12, 2025
7236e52
Start of gnc-main-window changes, popup
Bob-IT Apr 12, 2025
ff18e7b
Start of gnc-main-window changes, tab edit
Bob-IT Apr 16, 2025
27d08e7
Use GDK_BUTTON_SECONDARY for single gestures
Bob-IT Apr 16, 2025
fbfb9bd
Add ability to display toolbar
Bob-IT Apr 16, 2025
f5fec92
Fix the tree view column menu
Bob-IT Apr 16, 2025
b18dc2b
Change the gnc_dialog_run function
Bob-IT Apr 16, 2025
335f4f1
Start of Cell Renderer changes
Bob-IT Apr 16, 2025
0618cc3
Start of gnc-amount-edit changes
Bob-IT Apr 16, 2025
3584e63
Start of gnc-date-edit changes
Bob-IT Apr 16, 2025
b08f65e
Start of gnc-recurrence changes
Bob-IT Apr 16, 2025
4e8e02d
Fix up the gnc-recurrence source files
Bob-IT Apr 16, 2025
72cbc91
Add a function to set the current builder object
Bob-IT Apr 16, 2025
e750324
Fix loading help files on Linux
Bob-IT Apr 16, 2025
4ca4083
Start of price database changes
Bob-IT Apr 16, 2025
79f910f
Start of Commodity changes
Bob-IT Apr 16, 2025
8db3f26
Start of gnc-general-select changes
Bob-IT Apr 16, 2025
9456475
Fix up the gnc-commodity-edit source files
Bob-IT Apr 16, 2025
62db55b
Fix up the gnc-general-select source files
Bob-IT Apr 16, 2025
1641f93
Fix up commodity source files
Bob-IT Apr 16, 2025
6528c6d
Fix up price source files
Bob-IT Apr 16, 2025
e6f43cb
Start of Budget changes
Bob-IT Apr 16, 2025
e077a66
Start of fincalc changes
Bob-IT Apr 16, 2025
eb2f3fa
Start of book close changes
Bob-IT Apr 16, 2025
4f3578e
Fixup book close source file
Bob-IT Apr 16, 2025
b088159
Start of imap changes
Bob-IT Apr 16, 2025
f40d72a
Start of doclink changes
Bob-IT Apr 16, 2025
0229ca8
Start of gnc-frequency
Bob-IT Apr 16, 2025
d802875
Fix up gnc-frequency sources
Bob-IT Apr 16, 2025
42ab0d2
Start of summary bar changes
Bob-IT Apr 16, 2025
c68957f
Start of sx plugin changes
Bob-IT Apr 16, 2025
d518176
Start of sx dialog changes
Bob-IT Apr 16, 2025
8298fd8
Start of dense cal changes
Bob-IT Apr 16, 2025
ade9465
Change the months GtkCombo to a GtkDropdown widget
Bob-IT Apr 16, 2025
c2c2812
Add popup motion to the dense calendar
Bob-IT Apr 16, 2025
c5e369f
Fix up opening doc links for Linux
Bob-IT Apr 16, 2025
98f792d
Change the doc link GtkTreeview to a GtkColumnview
Bob-IT Apr 16, 2025
ca9842d
POTILES: Reflect filename changes from .glade to .ui.
Bob-IT Apr 16, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 31 additions & 35 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,8 @@ if (WIN32)
#
set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "")
set(CMAKE_FRAMEWORK_PATH_TMP ${CMAKE_PREFIX_PATH})
set(DEV_SUBDIRS aqbanking gnome guile gwenhywfar libgsf libofx libsoup libxslt webkit)
# set(DEV_SUBDIRS aqbanking gnome guile gwenhywfar libgsf libofx libsoup libxslt webkit)
set(DEV_SUBDIRS aqbanking gnome guile gwenhywfar libgsf libofx libsoup libxslt)
foreach(subdir ${DEV_SUBDIRS})
list(APPEND CMAKE_FRAMEWORK_PATH_TMP ${CMAKE_PREFIX_PATH}/${subdir})
endforeach()
Expand Down Expand Up @@ -216,7 +217,7 @@ if (NOT PKG_CONFIG_FOUND)

# glib et al.
set(GLIB_MIN_VERSION 2.56.1)
set(GTK_MIN_VERSION 3.22.30)
set(GTK_MIN_VERSION 4.8.3)

pkg_check_modules (GLIB2 REQUIRED IMPORTED_TARGET glib-2.0>=${GLIB_MIN_VERSION})
pkg_check_modules (GIO REQUIRED gio-2.0)
Expand All @@ -227,18 +228,18 @@ pkg_check_modules (GTHREAD REQUIRED gthread-2.0)
pkg_check_modules (LIBXML2 REQUIRED libxml-2.0>=2.9.4)
pkg_check_modules (LIBXSLT REQUIRED libxslt)
if (WITH_GNUCASH)
if (WIN32)
pkg_check_modules (WEBKIT REQUIRED IMPORTED_TARGET webkitgtk-3.0)
set(WEBKIT1 1 CACHE INTERNAL "WebKitGtk")
else()
pkg_check_modules (WEBKIT IMPORTED_TARGET webkit2gtk-4.0>=2.14.0)
if (NOT WEBKIT_FOUND)
pkg_check_modules (WEBKIT REQUIRED IMPORTED_TARGET webkit2gtk-4.1)
endif()
set(WEBKIT2 1 CACHE INTERNAL "WebKit2Gtk4")
endif()

pkg_check_modules (GTK3 REQUIRED IMPORTED_TARGET gtk+-3.0>=${GTK_MIN_VERSION})
# if (WIN32)
# pkg_check_modules (WEBKIT REQUIRED IMPORTED_TARGET webkitgtk-3.0)
# set(WEBKIT1 1 CACHE INTERNAL "WebKitGtk")
# else()
# pkg_check_modules (WEBKIT IMPORTED_TARGET webkit2gtk-4.0>=2.14.0)
# if (NOT WEBKIT_FOUND)
# pkg_check_modules (WEBKIT REQUIRED IMPORTED_TARGET webkit2gtk-4.1)
# endif()
# set(WEBKIT2 1 CACHE INTERNAL "WebKit2Gtk4")
# endif()

pkg_check_modules (GTK4 REQUIRED IMPORTED_TARGET gtk4>=${GTK_MIN_VERSION})
endif()

pkg_check_modules (ZLIB REQUIRED zlib)
Expand Down Expand Up @@ -407,7 +408,7 @@ if (WITH_AQBANKING)
set(CMAKE_REQUIRED_INCLUDES)
set(CMAKE_REQUIRED_LIBRARIES)
if(WITH_GNUCASH)
pkg_check_modules (GWEN_GTK3 REQUIRED gwengui-gtk3)
pkg_check_modules (GWEN_GTK4 REQUIRED gwengui-gtk4)
endif()
endif()

Expand Down Expand Up @@ -606,12 +607,12 @@ set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS ON)

if (UNIX)
set( CMAKE_C_FLAGS "-Werror -Wall -Wmissing-prototypes -Wmissing-declarations ${CMAKE_C_FLAGS}")
set( CMAKE_CXX_FLAGS "-Werror -Wall -Wmissing-declarations ${CMAKE_CXX_FLAGS}")
set( CMAKE_C_FLAGS "-Werror -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED ${CMAKE_C_FLAGS}")
set( CMAKE_CXX_FLAGS "-Werror -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED ${CMAKE_CXX_FLAGS}")
set( CMAKE_C_FLAGS_RELEASE "-O3 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 ${CMAKE_C_FLAGS}")
endif()
if (MINGW)
set( CMAKE_C_FLAGS "-Werror -Wall -Wmissing-prototypes -Wmissing-declarations ${CMAKE_C_FLAGS}")
set( CMAKE_C_FLAGS "-Werror ${CMAKE_C_FLAGS}")
set( CMAKE_CXX_FLAGS "-DWINVER=0x0500 -D_EMULATE_GLIBC=0 ${CMAKE_CXX_FLAGS}") # Workaround for bug in gtest on mingw, see https://github.com/google/googletest/issues/893 and https://github.com/google/googletest/issues/920
endif()

Expand Down Expand Up @@ -730,7 +731,6 @@ set(gnucash_DOCS
ChangeLog.2023
DOCUMENTERS
HACKING
LICENSE
NEWS
README.dependencies
)
Expand Down Expand Up @@ -835,7 +835,7 @@ set_property(TARGET PkgConfig::GLIB2 PROPERTY INTERFACE_COMPILE_DEFINITIONS
if (WITH_GNUCASH)
string(REGEX MATCH "^([0-9]+)\.([0-9]+)" GTK_MIN_MATCH ${GTK_MIN_VERSION})
set(GTK_API ${CMAKE_MATCH_1}_${CMAKE_MATCH_2})
set_property(TARGET PkgConfig::GTK3 PROPERTY INTERFACE_COMPILE_DEFINITIONS
set_property(TARGET PkgConfig::GTK4 PROPERTY INTERFACE_COMPILE_DEFINITIONS
GDK_VERSION_MIN_REQUIRED=GDK_VERSION_${GTK_API}
GDK_VERSION_MAX_ALLOWED=GDK_VERSION_${GTK_API})
endif()
Expand Down Expand Up @@ -995,21 +995,6 @@ if (WIN32)
)
endif()

#Link LICENSE to COPYING so that people expecting to find it,
#will. COPYING is normally linked by autogen.sh to the latest
#automake-provided version.
set (_CMD create_symlink)
if (WIN32)
set(_CMD copy)
endif()

install(CODE
" execute_process(
COMMAND ${CMAKE_COMMAND} -E ${_CMD} LICENSE COPYING
WORKING_DIRECTORY ${CMAKE_INSTALL_DOCDIR}
)"
)

#For windows, copy in some DLLs from Mingw

if (WIN32)
Expand All @@ -1036,3 +1021,14 @@ if(UNIX)
endif()

include (CPack)

message(STATUS "<<< Gentoo configuration >>>
Build type ${CMAKE_BUILD_TYPE}
Install path ${CMAKE_INSTALL_PREFIX}
Compiler flags:
C ${CMAKE_C_FLAGS}
C++ ${CMAKE_CXX_FLAGS}
Linker flags:
Executable ${CMAKE_EXE_LINKER_FLAGS}
Module ${CMAKE_MODULE_LINKER_FLAGS}
Shared ${CMAKE_SHARED_LINKER_FLAGS}\n")
50 changes: 27 additions & 23 deletions borrowed/goffice/go-charmap-sel.c
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ struct _GOCharmapSel
{
GtkBox box;
GOOptionMenu *encodings;
GtkMenu *encodings_menu;
//FIXME gtk4 GtkMenu *encodings_menu;
GOCharmapSelTestDirection test;
};

Expand Down Expand Up @@ -361,10 +361,12 @@ static void go_charmap_sel_init(GOCharmapSel *cs)
cs->encodings = GO_OPTION_MENU(go_option_menu_new());

g_signal_connect(G_OBJECT(cs->encodings), "changed",
G_CALLBACK(encodings_changed_cb), cs);
gtk_box_pack_start(GTK_BOX(cs), GTK_WIDGET(cs->encodings), TRUE, TRUE, 0);
}
G_CALLBACK(encodings_changed_cb), cs);

gtk_box_append (GTK_BOX(cs), GTK_WIDGET(cs->encodings));
}
//FIXME gtk4
#ifdef skip
static void cs_build_menu(GOCharmapSel *cs)
{
GtkWidget *item;
Expand Down Expand Up @@ -398,11 +400,11 @@ static void cs_build_menu(GOCharmapSel *cs)
_(charset_trans->charset_title));
gtk_check_menu_item_set_draw_as_radio(
GTK_CHECK_MENU_ITEM(subitem), TRUE);
gtk_widget_show(subitem);
gtk_widget_set_visible (GTK_WIDGET(subitem), TRUE);
gtk_menu_shell_append(GTK_MENU_SHELL(submenu), subitem);
if (charset_trans->imp == CI_MAJOR)
cs_emphasize_label(
GTK_LABEL(gtk_bin_get_child(GTK_BIN(subitem))));
GTK_LABEL(gtk_widget_get_first_child(GTK_WIDGET(subitem))));
g_object_set_data(G_OBJECT(subitem), CHARMAP_NAME_KEY,
(gpointer) name);
}
Expand All @@ -419,14 +421,14 @@ static void cs_build_menu(GOCharmapSel *cs)
_(lgroup->group_name));

gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), GTK_WIDGET(submenu));
gtk_widget_show(item);
gtk_widget_set_visible (GTK_WIDGET(item), TRUE);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
lg_cnt++;
}
lgroup++;
}
item = gtk_separator_menu_item_new();
gtk_widget_show(item);
gtk_widget_set_visible (GTK_WIDGET(item), TRUE);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
lg_cnt++;

Expand All @@ -437,17 +439,17 @@ static void cs_build_menu(GOCharmapSel *cs)
item = gtk_check_menu_item_new_with_label(locale_encoding_menu_title);
gtk_check_menu_item_set_draw_as_radio(GTK_CHECK_MENU_ITEM(item), TRUE);
g_free(locale_encoding_menu_title);
gtk_widget_show(item);
gtk_widget_set_visible (GTK_WIDGET(item), TRUE);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
lg_cnt++;
cs_emphasize_label(GTK_LABEL(gtk_bin_get_child(GTK_BIN(item))));
cs_emphasize_label(GTK_LABEL(gtk_widget_get_first_child(GTK_WIDGET(item))));
}

go_option_menu_set_menu(cs->encodings, GTK_WIDGET(menu));
cs->encodings_menu = menu;
set_menu_to_default(cs, lg_cnt);
}

#endif
static void go_charmap_sel_class_init(GOCharmapSelClass *klass)
{
CharsetInfo *ci;
Expand Down Expand Up @@ -589,18 +591,19 @@ go_charmap_sel_new(GOCharmapSelTestDirection test)
gchar const *
go_charmap_sel_get_encoding(GOCharmapSel *cs)
{
GtkMenuItem *selection;
//FIXME gtk4 GtkMenuItem *selection;
char const *locale_encoding;
char const *encoding;

g_get_charset(&locale_encoding);

g_return_val_if_fail(GO_IS_CHARMAP_SEL(cs), locale_encoding);

selection = GTK_MENU_ITEM(go_option_menu_get_history(cs->encodings));
encoding = (char const *) g_object_get_data(G_OBJECT(selection),
CHARMAP_NAME_KEY);
return encoding ? encoding : locale_encoding;
// selection = GTK_MENU_ITEM(go_option_menu_get_history(cs->encodings));
// encoding = (char const *) g_object_get_data(G_OBJECT(selection),
// CHARMAP_NAME_KEY);
// return encoding ? encoding : locale_encoding;
return NULL;
}

struct cb_find_entry
Expand All @@ -610,7 +613,8 @@ struct cb_find_entry
int i;
GSList *path;
};

//FIXME gtk4
#ifdef skip
static void cb_find_entry(GtkMenuItem *w, struct cb_find_entry *cl)
{
GtkWidget *sub;
Expand All @@ -625,8 +629,8 @@ static void cb_find_entry(GtkMenuItem *w, struct cb_find_entry *cl)
GINT_TO_POINTER(cl->i));
cl->i = 0;

gtk_container_foreach(GTK_CONTAINER(sub), (GtkCallback) cb_find_entry,
cl);
//FIXME gtk4 gtk_container_foreach(GTK_CONTAINER(sub), (GtkCallback) cb_find_entry,
// cl);
if (cl->found)
return;

Expand All @@ -647,7 +651,7 @@ static void cb_find_entry(GtkMenuItem *w, struct cb_find_entry *cl)
}
cl->i++;
}

#endif
gboolean go_charmap_sel_set_encoding(GOCharmapSel *cs, const char *enc)
{
struct cb_find_entry cl;
Expand All @@ -669,8 +673,8 @@ gboolean go_charmap_sel_set_encoding(GOCharmapSel *cs, const char *enc)
cl.i = 0;
cl.path = NULL;

gtk_container_foreach(GTK_CONTAINER(cs->encodings_menu),
(GtkCallback) cb_find_entry, &cl);
//FIXME gtk4 gtk_container_foreach(GTK_CONTAINER(cs->encodings_menu),
// (GtkCallback) cb_find_entry, &cl);
if (!cl.found)
return FALSE;

Expand All @@ -689,7 +693,7 @@ static void cs_set_property(GObject *object, guint prop_id, const GValue *value,
{
case PROP_TEST_DIRECTION:
cs->test = g_value_get_uint(value);
cs_build_menu(cs);
//FIXME gtk4 cs_build_menu(cs);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
Expand Down
Loading
Loading