From 7f0ccea48196a0da9523db3d566ee8020cd742a1 Mon Sep 17 00:00:00 2001 From: Stefano Karapetsas Date: Wed, 30 Oct 2013 00:56:56 +0100 Subject: pluma: Add GTK3 support --- pluma/dialogs/pluma-close-confirmation-dialog.c | 2 + pluma/dialogs/pluma-encodings-dialog.c | 2 + pluma/dialogs/pluma-preferences-dialog.c | 2 + pluma/dialogs/pluma-search-dialog.c | 6 ++ pluma/pluma-app.c | 2 +- pluma/pluma-commands-search.c | 5 ++ pluma/pluma-document.c | 79 ++++++++++++++++- pluma/pluma-documents-panel.c | 17 +++- pluma/pluma-encodings-combo-box.c | 4 + pluma/pluma-encodings-combo-box.h | 2 +- pluma/pluma-file-chooser-dialog.c | 5 ++ pluma/pluma-history-entry.c | 18 ++++ pluma/pluma-history-entry.h | 8 ++ pluma/pluma-io-error-message-area.c | 40 +++++++++ pluma/pluma-language-manager.c | 6 ++ pluma/pluma-language-manager.h | 1 + pluma/pluma-notebook.c | 41 ++++++++- pluma/pluma-panel.c | 13 +++ pluma/pluma-prefs-manager-app.c | 8 ++ pluma/pluma-print-job.c | 4 + pluma/pluma-print-preview.c | 9 +- pluma/pluma-session.c | 4 + pluma/pluma-status-combo-box.c | 19 +++- pluma/pluma-statusbar.c | 13 +++ pluma/pluma-style-scheme-manager.c | 16 ++++ pluma/pluma-utils.c | 25 +++++- pluma/pluma-view.c | 110 +++++++++++++++++++++--- pluma/pluma-window.c | 20 ++++- pluma/pluma.c | 6 +- pluma/smclient/eggsmclient-private.h | 3 + pluma/smclient/eggsmclient-xsmp.c | 4 + 31 files changed, 462 insertions(+), 32 deletions(-) diff --git a/pluma/dialogs/pluma-close-confirmation-dialog.c b/pluma/dialogs/pluma-close-confirmation-dialog.c index a3bcdfd2..ae430bf8 100755 --- a/pluma/dialogs/pluma-close-confirmation-dialog.c +++ b/pluma/dialogs/pluma-close-confirmation-dialog.c @@ -199,7 +199,9 @@ pluma_close_confirmation_dialog_init (PlumaCloseConfirmationDialog *dlg) gtk_box_set_spacing (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dlg))), 14); gtk_window_set_resizable (GTK_WINDOW (dlg), FALSE); +#if !GTK_CHECK_VERSION (3, 0, 0) gtk_dialog_set_has_separator (GTK_DIALOG (dlg), FALSE); +#endif gtk_window_set_skip_taskbar_hint (GTK_WINDOW (dlg), TRUE); gtk_window_set_title (GTK_WINDOW (dlg), ""); diff --git a/pluma/dialogs/pluma-encodings-dialog.c b/pluma/dialogs/pluma-encodings-dialog.c index 443cc017..263a4aae 100755 --- a/pluma/dialogs/pluma-encodings-dialog.c +++ b/pluma/dialogs/pluma-encodings-dialog.c @@ -320,7 +320,9 @@ pluma_encodings_dialog_init (PlumaEncodingsDialog *dlg) gtk_window_set_title (GTK_WINDOW (dlg), _("Character Encodings")); gtk_window_set_default_size (GTK_WINDOW (dlg), 650, 400); +#if !GTK_CHECK_VERSION (3, 0, 0) gtk_dialog_set_has_separator (GTK_DIALOG (dlg), FALSE); +#endif /* HIG defaults */ gtk_container_set_border_width (GTK_CONTAINER (dlg), 5); diff --git a/pluma/dialogs/pluma-preferences-dialog.c b/pluma/dialogs/pluma-preferences-dialog.c index b7b6e544..66cff4f6 100755 --- a/pluma/dialogs/pluma-preferences-dialog.c +++ b/pluma/dialogs/pluma-preferences-dialog.c @@ -1085,7 +1085,9 @@ pluma_preferences_dialog_init (PlumaPreferencesDialog *dlg) gtk_window_set_title (GTK_WINDOW (dlg), _("pluma Preferences")); gtk_window_set_resizable (GTK_WINDOW (dlg), FALSE); +#if !GTK_CHECK_VERSION (3, 0, 0) gtk_dialog_set_has_separator (GTK_DIALOG (dlg), FALSE); +#endif gtk_window_set_destroy_with_parent (GTK_WINDOW (dlg), TRUE); /* HIG defaults */ diff --git a/pluma/dialogs/pluma-search-dialog.c b/pluma/dialogs/pluma-search-dialog.c index 7db2a2bc..ac7181d8 100755 --- a/pluma/dialogs/pluma-search-dialog.c +++ b/pluma/dialogs/pluma-search-dialog.c @@ -34,7 +34,11 @@ #include #include +#include #include +#if GTK_CHECK_VERSION (3, 0, 0) +#include +#endif #include "pluma-search-dialog.h" #include "pluma-history-entry.h" @@ -329,7 +333,9 @@ pluma_search_dialog_init (PlumaSearchDialog *dlg) dlg->priv = PLUMA_SEARCH_DIALOG_GET_PRIVATE (dlg); gtk_window_set_resizable (GTK_WINDOW (dlg), FALSE); +#if !GTK_CHECK_VERSION (3, 0, 0) gtk_dialog_set_has_separator (GTK_DIALOG (dlg), FALSE); +#endif gtk_window_set_destroy_with_parent (GTK_WINDOW (dlg), TRUE); gtk_dialog_add_buttons (GTK_DIALOG (dlg), diff --git a/pluma/pluma-app.c b/pluma/pluma-app.c index 2ba277c9..48eb1dc1 100644 --- a/pluma/pluma-app.c +++ b/pluma/pluma-app.c @@ -632,7 +632,7 @@ pluma_app_get_active_window (PlumaApp *app) * enough that the second instance comes up before the * first one shows its window. */ - if (!GTK_WIDGET_REALIZED (GTK_WIDGET (app->priv->active_window))) + if (!gtk_widget_get_realized (GTK_WIDGET (app->priv->active_window))) gtk_widget_realize (GTK_WIDGET (app->priv->active_window)); return app->priv->active_window; diff --git a/pluma/pluma-commands-search.c b/pluma/pluma-commands-search.c index ee1b5129..7e15357e 100644 --- a/pluma/pluma-commands-search.c +++ b/pluma/pluma-commands-search.c @@ -36,7 +36,12 @@ #include #include +#include #include +#if GTK_CHECK_VERSION (3, 0, 0) +#include +#define GTK_OBJECT G_OBJECT +#endif #include "pluma-commands.h" #include "pluma-debug.h" diff --git a/pluma/pluma-document.c b/pluma/pluma-document.c index 9940e876..ec53a315 100644 --- a/pluma/pluma-document.c +++ b/pluma/pluma-document.c @@ -38,7 +38,10 @@ #include #include +#include +#if !GTK_CHECK_VERSION (3, 0, 0) #include +#endif #include "pluma-prefs-manager-app.h" #include "pluma-document.h" @@ -173,7 +176,11 @@ enum { static guint document_signals[LAST_SIGNAL] = { 0 }; +#if GTK_CHECK_VERSION (3, 0, 0) +G_DEFINE_TYPE(PlumaDocument, pluma_document, GTK_SOURCE_TYPE_BUFFER) +#else G_DEFINE_TYPE(PlumaDocument, pluma_document, GTK_TYPE_SOURCE_BUFFER) +#endif GQuark pluma_document_error_quark (void) @@ -1842,7 +1849,11 @@ pluma_document_search_forward (PlumaDocument *doc, GtkTextIter *match_end) { GtkTextIter iter; +#if GTK_CHECK_VERSION (3, 0, 0) + GtkTextSearchFlags search_flags; +#else GtkSourceSearchFlags search_flags; +#endif gboolean found = FALSE; GtkTextIter m_start; GtkTextIter m_end; @@ -1865,17 +1876,29 @@ pluma_document_search_forward (PlumaDocument *doc, gtk_text_buffer_get_start_iter (GTK_TEXT_BUFFER (doc), &iter); else iter = *start; - + +#if GTK_CHECK_VERSION (3, 0, 0) + search_flags = GTK_TEXT_SEARCH_VISIBLE_ONLY | GTK_TEXT_SEARCH_TEXT_ONLY; +#else search_flags = GTK_SOURCE_SEARCH_VISIBLE_ONLY | GTK_SOURCE_SEARCH_TEXT_ONLY; +#endif if (!PLUMA_SEARCH_IS_CASE_SENSITIVE (doc->priv->search_flags)) { +#if GTK_CHECK_VERSION (3, 0, 0) + search_flags = search_flags | GTK_TEXT_SEARCH_CASE_INSENSITIVE; +#else search_flags = search_flags | GTK_SOURCE_SEARCH_CASE_INSENSITIVE; +#endif } while (!found) { +#if GTK_CHECK_VERSION (3, 0, 0) + found = gtk_text_iter_forward_search (&iter, +#else found = gtk_source_iter_forward_search (&iter, +#endif doc->priv->search_text, search_flags, &m_start, @@ -1911,7 +1934,11 @@ pluma_document_search_backward (PlumaDocument *doc, GtkTextIter *match_end) { GtkTextIter iter; +#if GTK_CHECK_VERSION (3, 0, 0) + GtkTextSearchFlags search_flags; +#else GtkSourceSearchFlags search_flags; +#endif gboolean found = FALSE; GtkTextIter m_start; GtkTextIter m_end; @@ -1934,17 +1961,29 @@ pluma_document_search_backward (PlumaDocument *doc, gtk_text_buffer_get_end_iter (GTK_TEXT_BUFFER (doc), &iter); else iter = *end; - + +#if GTK_CHECK_VERSION (3, 0, 0) + search_flags = GTK_TEXT_SEARCH_VISIBLE_ONLY | GTK_TEXT_SEARCH_TEXT_ONLY; +#else search_flags = GTK_SOURCE_SEARCH_VISIBLE_ONLY | GTK_SOURCE_SEARCH_TEXT_ONLY; +#endif if (!PLUMA_SEARCH_IS_CASE_SENSITIVE (doc->priv->search_flags)) { +#if GTK_CHECK_VERSION (3, 0, 0) + search_flags = search_flags | GTK_TEXT_SEARCH_CASE_INSENSITIVE; +#else search_flags = search_flags | GTK_SOURCE_SEARCH_CASE_INSENSITIVE; +#endif } while (!found) { +#if GTK_CHECK_VERSION (3, 0, 0) + found = gtk_text_iter_backward_search (&iter, +#else found = gtk_source_iter_backward_search (&iter, +#endif doc->priv->search_text, search_flags, &m_start, @@ -1981,7 +2020,11 @@ pluma_document_replace_all (PlumaDocument *doc, GtkTextIter iter; GtkTextIter m_start; GtkTextIter m_end; +#if GTK_CHECK_VERSION (3, 0, 0) + GtkTextSearchFlags search_flags = 0; +#else GtkSourceSearchFlags search_flags = 0; +#endif gboolean found = TRUE; gint cont = 0; gchar *search_text; @@ -2006,11 +2049,19 @@ pluma_document_replace_all (PlumaDocument *doc, gtk_text_buffer_get_start_iter (buffer, &iter); +#if GTK_CHECK_VERSION (3, 0, 0) + search_flags = GTK_TEXT_SEARCH_VISIBLE_ONLY | GTK_TEXT_SEARCH_TEXT_ONLY; +#else search_flags = GTK_SOURCE_SEARCH_VISIBLE_ONLY | GTK_SOURCE_SEARCH_TEXT_ONLY; +#endif if (!PLUMA_SEARCH_IS_CASE_SENSITIVE (flags)) { +#if GTK_CHECK_VERSION (3, 0, 0) + search_flags = search_flags | GTK_TEXT_SEARCH_CASE_INSENSITIVE; +#else search_flags = search_flags | GTK_SOURCE_SEARCH_CASE_INSENSITIVE; +#endif } replace_text_len = strlen (replace_text); @@ -2033,7 +2084,11 @@ pluma_document_replace_all (PlumaDocument *doc, do { +#if GTK_CHECK_VERSION (3, 0, 0) + found = gtk_text_iter_forward_search (&iter, +#else found = gtk_source_iter_forward_search (&iter, +#endif search_text, search_flags, &m_start, @@ -2236,8 +2291,12 @@ search_region (PlumaDocument *doc, { GtkTextIter iter; GtkTextIter m_start; - GtkTextIter m_end; + GtkTextIter m_end; +#if GTK_CHECK_VERSION (3, 0, 0) + GtkTextSearchFlags search_flags = 0; +#else GtkSourceSearchFlags search_flags = 0; +#endif gboolean found = TRUE; GtkTextBuffer *buffer; @@ -2296,12 +2355,20 @@ search_region (PlumaDocument *doc, return; iter = *start; - + +#if GTK_CHECK_VERSION (3, 0, 0) + search_flags = GTK_TEXT_SEARCH_VISIBLE_ONLY | GTK_TEXT_SEARCH_TEXT_ONLY; +#else search_flags = GTK_SOURCE_SEARCH_VISIBLE_ONLY | GTK_SOURCE_SEARCH_TEXT_ONLY; +#endif if (!PLUMA_SEARCH_IS_CASE_SENSITIVE (doc->priv->search_flags)) { +#if GTK_CHECK_VERSION (3, 0, 0) + search_flags = search_flags | GTK_TEXT_SEARCH_CASE_INSENSITIVE; +#else search_flags = search_flags | GTK_SOURCE_SEARCH_CASE_INSENSITIVE; +#endif } do @@ -2309,7 +2376,11 @@ search_region (PlumaDocument *doc, if ((end != NULL) && gtk_text_iter_is_end (end)) end = NULL; +#if GTK_CHECK_VERSION (3, 0, 0) + found = gtk_text_iter_forward_search (&iter, +#else found = gtk_source_iter_forward_search (&iter, +#endif doc->priv->search_text, search_flags, &m_start, diff --git a/pluma/pluma-documents-panel.c b/pluma/pluma-documents-panel.c index 924f7060..ea2739e1 100644 --- a/pluma/pluma-documents-panel.c +++ b/pluma/pluma-documents-panel.c @@ -516,11 +516,18 @@ menu_position (GtkMenu *menu, GtkTreePath *path; GdkRectangle rect; gint wx, wy; + GtkAllocation allocation; GtkRequisition requisition; GtkWidget *w; w = panel->priv->treeview; +#if GTK_CHECK_VERSION (3, 0, 0) + gtk_widget_get_allocation(w, &allocation); +#else + allocation = w->allocation; +#endif + path = get_current_path (panel); gtk_tree_view_get_cell_area (GTK_TREE_VIEW (w), @@ -531,21 +538,25 @@ menu_position (GtkMenu *menu, wx = rect.x; wy = rect.y; +#if GTK_CHECK_VERSION (3, 0, 0) + gdk_window_get_origin (gtk_widget_get_window (w), x, y); +#else gdk_window_get_origin (w->window, x, y); +#endif gtk_widget_size_request (GTK_WIDGET (menu), &requisition); if (gtk_widget_get_direction (w) == GTK_TEXT_DIR_RTL) { - *x += w->allocation.x + w->allocation.width - requisition.width - 10; + *x += allocation.x + allocation.width - requisition.width - 10; } else { - *x += w->allocation.x + 10; + *x += allocation.x + 10; } wy = MAX (*y + 5, *y + wy + 5); - wy = MIN (wy, *y + w->allocation.height - requisition.height - 5); + wy = MIN (wy, *y + allocation.height - requisition.height - 5); *y = wy; diff --git a/pluma/pluma-encodings-combo-box.c b/pluma/pluma-encodings-combo-box.c index 7ba22e85..9d7fcc5e 100644 --- a/pluma/pluma-encodings-combo-box.c +++ b/pluma/pluma-encodings-combo-box.c @@ -212,7 +212,11 @@ add_or_remove (PlumaEncodingsComboBox *menu, gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (toplevel)); +#if GTK_CHECK_VERSION (3, 0, 0) + wg = gtk_window_get_group (GTK_WINDOW (toplevel)); +#else wg = GTK_WINDOW (toplevel)->group; +#endif if (wg == NULL) { wg = gtk_window_group_new (); diff --git a/pluma/pluma-encodings-combo-box.h b/pluma/pluma-encodings-combo-box.h index cd3b7880..f6465cbf 100644 --- a/pluma/pluma-encodings-combo-box.h +++ b/pluma/pluma-encodings-combo-box.h @@ -32,7 +32,7 @@ #ifndef __PLUMA_ENCODINGS_COMBO_BOX_H__ #define __PLUMA_ENCODINGS_COMBO_BOX_H__ -#include +#include #include G_BEGIN_DECLS diff --git a/pluma/pluma-file-chooser-dialog.c b/pluma/pluma-file-chooser-dialog.c index 02f0de06..389ba85a 100644 --- a/pluma/pluma-file-chooser-dialog.c +++ b/pluma/pluma-file-chooser-dialog.c @@ -39,6 +39,7 @@ #include #include +#include #include "pluma-file-chooser-dialog.h" #include "pluma-encodings-combo-box.h" @@ -294,7 +295,11 @@ all_text_files_filter (const GtkFileFilterInfo *filter_info, GtkSourceLanguage *lang; lang = gtk_source_language_manager_get_language (lm, *languages); +#if GTK_CHECK_VERSION (3, 0, 0) + g_return_val_if_fail (GTK_SOURCE_IS_LANGUAGE (lang), FALSE); +#else g_return_val_if_fail (GTK_IS_SOURCE_LANGUAGE (lang), FALSE); +#endif ++languages; mime_types = gtk_source_language_get_mime_types (lang); diff --git a/pluma/pluma-history-entry.c b/pluma/pluma-history-entry.c index 0511553f..bb772594 100644 --- a/pluma/pluma-history-entry.c +++ b/pluma/pluma-history-entry.c @@ -64,7 +64,11 @@ struct _PlumaHistoryEntryPrivate GSettings *settings; }; +#if GTK_CHECK_VERSION (3, 0, 0) +G_DEFINE_TYPE(PlumaHistoryEntry, pluma_history_entry, GTK_TYPE_COMBO_BOX_TEXT) +#else G_DEFINE_TYPE(PlumaHistoryEntry, pluma_history_entry, GTK_TYPE_COMBO_BOX_ENTRY) +#endif static void pluma_history_entry_set_property (GObject *object, @@ -116,12 +120,20 @@ pluma_history_entry_get_property (GObject *object, } static void +#if GTK_CHECK_VERSION (3, 0, 0) +pluma_history_entry_dispose (GObject *object) +#else pluma_history_entry_destroy (GtkObject *object) +#endif { pluma_history_entry_set_enable_completion (PLUMA_HISTORY_ENTRY (object), FALSE); +#if GTK_CHECK_VERSION (3, 0, 0) + G_OBJECT_CLASS (pluma_history_entry_parent_class)->dispose (object); +#else GTK_OBJECT_CLASS (pluma_history_entry_parent_class)->destroy (object); +#endif } static void @@ -146,12 +158,18 @@ static void pluma_history_entry_class_init (PlumaHistoryEntryClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); +#if !GTK_CHECK_VERSION (3, 0, 0) GtkObjectClass *gtkobject_class = GTK_OBJECT_CLASS (klass); +#endif object_class->set_property = pluma_history_entry_set_property; object_class->get_property = pluma_history_entry_get_property; object_class->finalize = pluma_history_entry_finalize; +#if GTK_CHECK_VERSION (3, 0, 0) + object_class->dispose = pluma_history_entry_dispose; +#else gtkobject_class->destroy = pluma_history_entry_destroy; +#endif g_object_class_install_property (object_class, PROP_HISTORY_ID, diff --git a/pluma/pluma-history-entry.h b/pluma/pluma-history-entry.h index 9e2eb0bb..eba621f9 100644 --- a/pluma/pluma-history-entry.h +++ b/pluma/pluma-history-entry.h @@ -48,12 +48,20 @@ typedef struct _PlumaHistoryEntryPrivate PlumaHistoryEntryPrivate; struct _PlumaHistoryEntryClass { +#if GTK_CHECK_VERSION (3, 0, 0) + GtkComboBoxTextClass parent_class; +#else GtkComboBoxEntryClass parent_class; +#endif }; struct _PlumaHistoryEntry { +#if GTK_CHECK_VERSION (3, 0, 0) + GtkComboBoxText parent_instance; +#else GtkComboBoxEntry parent_instance; +#endif PlumaHistoryEntryPrivate *priv; }; diff --git a/pluma/pluma-io-error-message-area.c b/pluma/pluma-io-error-message-area.c index d6504634..38e19cca 100644 --- a/pluma/pluma-io-error-message-area.c +++ b/pluma/pluma-io-error-message-area.c @@ -144,7 +144,11 @@ set_message_area_text_and_icon (GtkWidget *message_area, gtk_label_set_use_markup (GTK_LABEL (primary_label), TRUE); gtk_label_set_line_wrap (GTK_LABEL (primary_label), TRUE); gtk_misc_set_alignment (GTK_MISC (primary_label), 0, 0.5); +#if GTK_CHECK_VERSION (3, 0, 0) + gtk_widget_set_can_focus (primary_label, TRUE); +#else GTK_WIDGET_SET_FLAGS (primary_label, GTK_CAN_FOCUS); +#endif gtk_label_set_selectable (GTK_LABEL (primary_label), TRUE); if (secondary_text != NULL) @@ -154,7 +158,11 @@ set_message_area_text_and_icon (GtkWidget *message_area, secondary_label = gtk_label_new (secondary_markup); g_free (secondary_markup); gtk_box_pack_start (GTK_BOX (vbox), secondary_label, TRUE, TRUE, 0); +#if GTK_CHECK_VERSION (3, 0, 0) + gtk_widget_set_can_focus (secondary_label, TRUE); +#else GTK_WIDGET_SET_FLAGS (secondary_label, GTK_CAN_FOCUS); +#endif gtk_label_set_use_markup (GTK_LABEL (secondary_label), TRUE); gtk_label_set_line_wrap (GTK_LABEL (secondary_label), TRUE); gtk_label_set_selectable (GTK_LABEL (secondary_label), TRUE); @@ -570,7 +578,11 @@ create_conversion_error_message_area (const gchar *primary_text, gtk_label_set_use_markup (GTK_LABEL (primary_label), TRUE); gtk_label_set_line_wrap (GTK_LABEL (primary_label), TRUE); gtk_misc_set_alignment (GTK_MISC (primary_label), 0, 0.5); +#if GTK_CHECK_VERSION (3, 0, 0) + gtk_widget_set_can_focus (primary_label, TRUE); +#else GTK_WIDGET_SET_FLAGS (primary_label, GTK_CAN_FOCUS); +#endif gtk_label_set_selectable (GTK_LABEL (primary_label), TRUE); if (secondary_text != NULL) @@ -580,7 +592,11 @@ create_conversion_error_message_area (const gchar *primary_text, secondary_label = gtk_label_new (secondary_markup); g_free (secondary_markup); gtk_box_pack_start (GTK_BOX (vbox), secondary_label, TRUE, TRUE, 0); +#if GTK_CHECK_VERSION (3, 0, 0) + gtk_widget_set_can_focus (secondary_label, TRUE); +#else GTK_WIDGET_SET_FLAGS (secondary_label, GTK_CAN_FOCUS); +#endif gtk_label_set_use_markup (GTK_LABEL (secondary_label), TRUE); gtk_label_set_line_wrap (GTK_LABEL (secondary_label), TRUE); gtk_label_set_selectable (GTK_LABEL (secondary_label), TRUE); @@ -853,7 +869,11 @@ pluma_file_already_open_warning_message_area_new (const gchar *uri) gtk_label_set_use_markup (GTK_LABEL (primary_label), TRUE); gtk_label_set_line_wrap (GTK_LABEL (primary_label), TRUE); gtk_misc_set_alignment (GTK_MISC (primary_label), 0, 0.5); +#if GTK_CHECK_VERSION (3, 0, 0) + gtk_widget_set_can_focus (primary_label, TRUE); +#else GTK_WIDGET_SET_FLAGS (primary_label, GTK_CAN_FOCUS); +#endif gtk_label_set_selectable (GTK_LABEL (primary_label), TRUE); secondary_text = _("pluma opened this instance of the file in a non-editable way. " @@ -863,7 +883,11 @@ pluma_file_already_open_warning_message_area_new (const gchar *uri) secondary_label = gtk_label_new (secondary_markup); g_free (secondary_markup); gtk_box_pack_start (GTK_BOX (vbox), secondary_label, TRUE, TRUE, 0); +#if GTK_CHECK_VERSION (3, 0, 0) + gtk_widget_set_can_focus (secondary_label, TRUE); +#else GTK_WIDGET_SET_FLAGS (secondary_label, GTK_CAN_FOCUS); +#endif gtk_label_set_use_markup (GTK_LABEL (secondary_label), TRUE); gtk_label_set_line_wrap (GTK_LABEL (secondary_label), TRUE); gtk_label_set_selectable (GTK_LABEL (secondary_label), TRUE); @@ -959,7 +983,11 @@ pluma_externally_modified_saving_error_message_area_new ( gtk_label_set_use_markup (GTK_LABEL (primary_label), TRUE); gtk_label_set_line_wrap (GTK_LABEL (primary_label), TRUE); gtk_misc_set_alignment (GTK_MISC (primary_label), 0, 0.5); +#if GTK_CHECK_VERSION (3, 0, 0) + gtk_widget_set_can_focus (primary_label, TRUE); +#else GTK_WIDGET_SET_FLAGS (primary_label, GTK_CAN_FOCUS); +#endif gtk_label_set_selectable (GTK_LABEL (primary_label), TRUE); secondary_text = _("If you save it, all the external changes could be lost. Save it anyway?"); @@ -968,7 +996,11 @@ pluma_externally_modified_saving_error_message_area_new ( secondary_label = gtk_label_new (secondary_markup); g_free (secondary_markup); gtk_box_pack_start (GTK_BOX (vbox), secondary_label, TRUE, TRUE, 0); +#if GTK_CHECK_VERSION (3, 0, 0) + gtk_widget_set_can_focus (secondary_label, TRUE); +#else GTK_WIDGET_SET_FLAGS (secondary_label, GTK_CAN_FOCUS); +#endif gtk_label_set_use_markup (GTK_LABEL (secondary_label), TRUE); gtk_label_set_line_wrap (GTK_LABEL (secondary_label), TRUE); gtk_label_set_selectable (GTK_LABEL (secondary_label), TRUE); @@ -1069,7 +1101,11 @@ pluma_no_backup_saving_error_message_area_new (const gchar *uri, gtk_label_set_use_markup (GTK_LABEL (primary_label), TRUE); gtk_label_set_line_wrap (GTK_LABEL (primary_label), TRUE); gtk_misc_set_alignment (GTK_MISC (primary_label), 0, 0.5); +#if GTK_CHECK_VERSION (3, 0, 0) + gtk_widget_set_can_focus (primary_label, TRUE); +#else GTK_WIDGET_SET_FLAGS (primary_label, GTK_CAN_FOCUS); +#endif gtk_label_set_selectable (GTK_LABEL (primary_label), TRUE); secondary_text = _("pluma could not back up the old copy of the file before saving the new one. " @@ -1080,7 +1116,11 @@ pluma_no_backup_saving_error_message_area_new (const gchar *uri, secondary_label = gtk_label_new (secondary_markup); g_free (secondary_markup); gtk_box_pack_start (GTK_BOX (vbox), secondary_label, TRUE, TRUE, 0); +#if GTK_CHECK_VERSION (3, 0, 0) + gtk_widget_set_can_focus (secondary_label, TRUE); +#else GTK_WIDGET_SET_FLAGS (secondary_label, GTK_CAN_FOCUS); +#endif gtk_label_set_use_markup (GTK_LABEL (secondary_label), TRUE); gtk_label_set_line_wrap (GTK_LABEL (secondary_label), TRUE); gtk_label_set_selectable (GTK_LABEL (secondary_label), TRUE); diff --git a/pluma/pluma-language-manager.c b/pluma/pluma-language-manager.c index 15554955..903e8275 100644 --- a/pluma/pluma-language-manager.c +++ b/pluma/pluma-language-manager.c @@ -30,6 +30,8 @@ */ #include +#include +#include #include "pluma-language-manager.h" #include "pluma-prefs-manager.h" @@ -76,7 +78,11 @@ pluma_language_manager_list_languages_sorted (GtkSourceLanguageManager *lm, GtkSourceLanguage *lang; lang = gtk_source_language_manager_get_language (lm, *ids); +#if GTK_CHECK_VERSION (3, 0, 0) + g_return_val_if_fail (GTK_SOURCE_IS_LANGUAGE (lang), NULL); +#else g_return_val_if_fail (GTK_IS_SOURCE_LANGUAGE (lang), NULL); +#endif ++ids; if (include_hidden || !gtk_source_language_get_hidden (lang)) diff --git a/pluma/pluma-language-manager.h b/pluma/pluma-language-manager.h index e5596262..0970b7cf 100644 --- a/pluma/pluma-language-manager.h +++ b/pluma/pluma-language-manager.h @@ -32,6 +32,7 @@ #ifndef __PLUMA_LANGUAGES_MANAGER_H__ #define __PLUMA_LANGUAGES_MANAGER_H__ +#include #include G_BEGIN_DECLS diff --git a/pluma/pluma-notebook.c b/pluma/pluma-notebook.c index 7a73397d..c792f4bb 100644 --- a/pluma/pluma-notebook.c +++ b/pluma/pluma-notebook.c @@ -100,7 +100,11 @@ enum static guint signals[LAST_SIGNAL] = { 0 }; static void +#if GTK_CHECK_VERSION (3, 0, 0) +pluma_notebook_dispose (GObject *object) +#else pluma_notebook_destroy (GtkObject *object) +#endif { PlumaNotebook *notebook = PLUMA_NOTEBOOK (object); @@ -120,19 +124,29 @@ pluma_notebook_destroy (GtkObject *object) notebook->priv->destroy_has_run = TRUE; } +#if GTK_CHECK_VERSION (3, 0, 0) + G_OBJECT_CLASS (pluma_notebook_parent_class)->dispose (object); +#else GTK_OBJECT_CLASS (pluma_notebook_parent_class)->destroy (object); +#endif } static void pluma_notebook_class_init (PlumaNotebookClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); +#if !GTK_CHECK_VERSION (3, 0, 0) GtkObjectClass *gtkobject_class = GTK_OBJECT_CLASS (klass); +#endif GtkNotebookClass *notebook_class = GTK_NOTEBOOK_CLASS (klass); object_class->finalize = pluma_notebook_finalize; +#if GTK_CHECK_VERSION (3, 0, 0) + object_class->dispose = pluma_notebook_dispose; +#else gtkobject_class->destroy = pluma_notebook_destroy; - +#endif + notebook_class->change_current_page = pluma_notebook_change_current_page; signals[TAB_ADDED] = @@ -247,10 +261,12 @@ find_tab_num_at_pos (PlumaNotebook *notebook, tab_pos = gtk_notebook_get_tab_pos (GTK_NOTEBOOK (notebook)); +#if !GTK_CHECK_VERSION (3, 0, 0) if (GTK_NOTEBOOK (notebook)->first_tab == NULL) { return AFTER_ALL_TABS; } +#endif /* For some reason unfullscreen + quick click can cause a wrong click event to be reported to the tab */ @@ -261,6 +277,7 @@ find_tab_num_at_pos (PlumaNotebook *notebook, while ((page = gtk_notebook_get_nth_page (nb, page_num)) != NULL) { + GtkAllocation allocation; GtkWidget *tab; gint max_x, max_y; gint x_root, y_root; @@ -268,17 +285,31 @@ find_tab_num_at_pos (PlumaNotebook *notebook, tab = gtk_notebook_get_tab_label (nb, page); g_return_val_if_fail (tab != NULL, AFTER_ALL_TABS); +#if GTK_CHECK_VERSION (3, 0, 0) + if (!gtk_widget_get_mapped (tab)) +#else if (!GTK_WIDGET_MAPPED (GTK_WIDGET (tab))) +#endif { ++page_num; continue; } +#if GTK_CHECK_VERSION (3, 0, 0) + gdk_window_get_origin (GDK_WINDOW (gtk_widget_get_window (tab)), +#else gdk_window_get_origin (GDK_WINDOW (tab->window), +#endif &x_root, &y_root); - max_x = x_root + tab->allocation.x + tab->allocation.width; - max_y = y_root + tab->allocation.y + tab->allocation.height; +#if GTK_CHECK_VERSION (3, 0, 0) + gtk_widget_get_allocation(tab, &allocation); +#else + allocation = tab->allocation; +#endif + + max_x = x_root + allocation.x + allocation.width; + max_y = y_root + allocation.y + allocation.height; if (((tab_pos == GTK_POS_TOP) || (tab_pos == GTK_POS_BOTTOM)) && @@ -658,7 +689,11 @@ pluma_notebook_new (void) static void pluma_notebook_switch_page_cb (GtkNotebook *notebook, +#if GTK_CHECK_VERSION (3, 0, 0) + GtkWidget *page, +#else GtkNotebookPage *page, +#endif guint page_num, gpointer data) { diff --git a/pluma/pluma-panel.c b/pluma/pluma-panel.c index 0123bcab..353e97c6 100644 --- a/pluma/pluma-panel.c +++ b/pluma/pluma-panel.c @@ -34,6 +34,9 @@ #include #include #include +#if GTK_CHECK_VERSION (3, 0, 0) +#include +#endif #include "pluma-close-button.h" #include "pluma-window.h" @@ -271,6 +274,7 @@ set_gtk_image_from_gtk_image (GtkImage *image, case GTK_IMAGE_EMPTY: gtk_image_clear (image); break; +#if !GTK_CHECK_VERSION (3, 0, 0) case GTK_IMAGE_PIXMAP: { GdkPixmap *pm; @@ -289,6 +293,7 @@ set_gtk_image_from_gtk_image (GtkImage *image, gtk_image_set_from_image (image, i, bm); } break; +#endif case GTK_IMAGE_PIXBUF: { GdkPixbuf *pb; @@ -367,7 +372,11 @@ sync_title (PlumaPanel *panel, static void notebook_page_changed (GtkNotebook *notebook, +#if GTK_CHECK_VERSION (3, 0, 0) + GtkWidget *page, +#else GtkNotebookPage *page, +#endif guint page_num, PlumaPanel *panel) { @@ -697,7 +706,11 @@ pluma_panel_add_item (PlumaPanel *panel, menu_label = gtk_label_new (name); gtk_misc_set_alignment (GTK_MISC (menu_label), 0.0, 0.5); +#if GTK_CHECK_VERSION (3, 0, 0) + if (!gtk_widget_get_visible (item)) +#else if (!GTK_WIDGET_VISIBLE (item)) +#endif gtk_widget_show (item); gtk_notebook_append_page_menu (GTK_NOTEBOOK (panel->priv->notebook), diff --git a/pluma/pluma-prefs-manager-app.c b/pluma/pluma-prefs-manager-app.c index 18db8fac..8d74d45b 100644 --- a/pluma/pluma-prefs-manager-app.c +++ b/pluma/pluma-prefs-manager-app.c @@ -1207,7 +1207,11 @@ pluma_prefs_manager_syntax_hl_enable_changed (GSettings *settings, while (l != NULL) { +#if GTK_CHECK_VERSION (3, 0, 0) + g_return_if_fail (GTK_SOURCE_IS_BUFFER (l->data)); +#else g_return_if_fail (GTK_IS_SOURCE_BUFFER (l->data)); +#endif gtk_source_buffer_set_highlight_syntax (GTK_SOURCE_BUFFER (l->data), enable); @@ -1313,7 +1317,11 @@ pluma_prefs_manager_source_style_scheme_changed (GSettings *settings, docs = pluma_app_get_documents (pluma_app_get_default ()); for (l = docs; l != NULL; l = l->next) { +#if GTK_CHECK_VERSION (3, 0, 0) + g_return_if_fail (GTK_SOURCE_IS_BUFFER (l->data)); +#else g_return_if_fail (GTK_IS_SOURCE_BUFFER (l->data)); +#endif gtk_source_buffer_set_style_scheme (GTK_SOURCE_BUFFER (l->data), style); diff --git a/pluma/pluma-print-job.c b/pluma/pluma-print-job.c index 69de06c3..72b24154 100644 --- a/pluma/pluma-print-job.c +++ b/pluma/pluma-print-job.c @@ -517,7 +517,11 @@ create_compositor (PlumaPrintJob *job) print_font_numbers = pluma_prefs_manager_get_print_font_numbers (); job->priv->compositor = GTK_SOURCE_PRINT_COMPOSITOR ( +#if GTK_CHECK_VERSION (3, 0, 0) + g_object_new (GTK_SOURCE_TYPE_PRINT_COMPOSITOR, +#else g_object_new (GTK_TYPE_SOURCE_PRINT_COMPOSITOR, +#endif "buffer", GTK_SOURCE_BUFFER (job->priv->doc), "tab-width", gtk_source_view_get_tab_width (GTK_SOURCE_VIEW (job->priv->view)), "highlight-syntax", gtk_source_buffer_get_highlight_syntax (GTK_SOURCE_BUFFER (job->priv->doc)) && diff --git a/pluma/pluma-print-preview.c b/pluma/pluma-print-preview.c index c37d85fa..350f7367 100644 --- a/pluma/pluma-print-preview.c +++ b/pluma/pluma-print-preview.c @@ -34,8 +34,11 @@ #include #include #include -#include #include +#include +#if GTK_CHECK_VERSION (3, 0, 0) +#include +#endif #include @@ -956,7 +959,11 @@ create_preview_layout (PlumaPrintPreview *preview) GDK_BUTTON_PRESS_MASK | GDK_KEY_PRESS_MASK); +#if GTK_CHECK_VERSION (3, 0, 0) + gtk_widget_set_can_focus (priv->layout, TRUE); +#else GTK_WIDGET_SET_FLAGS (priv->layout, GTK_CAN_FOCUS); +#endif g_signal_connect (priv->layout, "key-press-event", diff --git a/pluma/pluma-session.c b/pluma/pluma-session.c index cdb1a4ee..2cc4ec39 100644 --- a/pluma/pluma-session.c +++ b/pluma/pluma-session.c @@ -54,6 +54,10 @@ #include "dialogs/pluma-close-confirmation-dialog.h" #include "smclient/eggsmclient.h" +#if GTK_CHECK_VERSION (3, 0, 0) +#define GTK_WIDGET_VISIBLE gtk_widget_get_visible +#endif + /* The master client we use for SM */ static EggSMClient *master_client = NULL; diff --git a/pluma/pluma-status-combo-box.c b/pluma/pluma-status-combo-box.c index b7741aec..ed0f4917 100644 --- a/pluma/pluma-status-combo-box.c +++ b/pluma/pluma-status-combo-box.c @@ -173,18 +173,25 @@ menu_position_func (GtkMenu *menu, PlumaStatusComboBox *combo) { GtkRequisition request; + GtkAllocation allocation; *push_in = FALSE; gtk_widget_size_request (gtk_widget_get_toplevel (GTK_WIDGET (menu)), &request); /* get the origin... */ +#if GTK_CHECK_VERSION (3, 0, 0) + gdk_window_get_origin (gtk_widget_get_window (GTK_WIDGET (combo)), x, y); + gtk_widget_get_allocation (GTK_WIDGET (combo), &allocation); +#else gdk_window_get_origin (GTK_WIDGET (combo)->window, x, y); + allocation = GTK_WIDGET (combo)->allocation; +#endif /* make the menu as wide as the widget */ - if (request.width < GTK_WIDGET (combo)->allocation.width) + if (request.width < allocation.width) { - gtk_widget_set_size_request (GTK_WIDGET (menu), GTK_WIDGET (combo)->allocation.width, -1); + gtk_widget_set_size_request (GTK_WIDGET (menu), allocation.width, -1); } /* position it above the widget */ @@ -197,12 +204,18 @@ button_press_event (GtkWidget *widget, PlumaStatusComboBox *combo) { GtkRequisition request; + GtkAllocation allocation; gint max_height; gtk_widget_size_request (combo->priv->menu, &request); +#if GTK_CHECK_VERSION (3, 0, 0) + gtk_widget_get_allocation (GTK_WIDGET (combo), &allocation); +#else + allocation = GTK_WIDGET (combo)->allocation; +#endif /* do something relative to our own height here, maybe we can do better */ - max_height = GTK_WIDGET (combo)->allocation.height * 20; + max_height = allocation.height * 20; if (request.height > max_height) { diff --git a/pluma/pluma-statusbar.c b/pluma/pluma-statusbar.c index e0c9d0d0..21ab1053 100644 --- a/pluma/pluma-statusbar.c +++ b/pluma/pluma-statusbar.c @@ -76,6 +76,15 @@ get_overwrite_mode_length (void) return 2 + MAX (g_utf8_strlen (_("OVR"), -1), g_utf8_strlen (_("INS"), -1)); } +#if GTK_CHECK_VERSION (3, 0, 0) +static void +gtk_statusbar_set_has_resize_grip (GtkStatusbar *statusbar, gboolean state) +{ + /* nothing */ + /* https://developer.gnome.org/gtk3/stable/ch24s02.html#id-1.6.3.4.17 */ +} +#endif + static void pluma_statusbar_notify (GObject *object, GParamSpec *pspec) @@ -389,7 +398,11 @@ pluma_statusbar_flash_message (PlumaStatusbar *statusbar, msg); statusbar->priv->flash_timeout = g_timeout_add (flash_length, +#if GTK_CHECK_VERSION (3, 0, 0) + (GSourceFunc) remove_message_timeout, +#else (GtkFunction) remove_message_timeout, +#endif statusbar); g_free (msg); diff --git a/pluma/pluma-style-scheme-manager.c b/pluma/pluma-style-scheme-manager.c index a0eefc11..73625141 100644 --- a/pluma/pluma-style-scheme-manager.c +++ b/pluma/pluma-style-scheme-manager.c @@ -28,6 +28,10 @@ * $Id$ */ +#ifdef HAVE_CONFIG_H +#include +#endif + #include #include @@ -103,7 +107,11 @@ pluma_style_scheme_manager_list_schemes_sorted (GtkSourceStyleSchemeManager *man const gchar * const * scheme_ids; GSList *schemes = NULL; +#if GTK_CHECK_VERSION (3, 0, 0) + g_return_val_if_fail (GTK_SOURCE_IS_STYLE_SCHEME_MANAGER (manager), NULL); +#else g_return_val_if_fail (GTK_IS_SOURCE_STYLE_SCHEME_MANAGER (manager), NULL); +#endif scheme_ids = gtk_source_style_scheme_manager_get_scheme_ids (manager); @@ -254,7 +262,11 @@ _pluma_style_scheme_manager_install_scheme (GtkSourceStyleSchemeManager *manager const gchar* const *ids; +#if GTK_CHECK_VERSION (3, 0, 0) + g_return_val_if_fail (GTK_SOURCE_IS_STYLE_SCHEME_MANAGER (manager), NULL); +#else g_return_val_if_fail (GTK_IS_SOURCE_STYLE_SCHEME_MANAGER (manager), NULL); +#endif g_return_val_if_fail (fname != NULL, NULL); dirname = g_path_get_dirname (fname); @@ -343,7 +355,11 @@ _pluma_style_scheme_manager_uninstall_scheme (GtkSourceStyleSchemeManager *manag GtkSourceStyleScheme *scheme; const gchar *filename; +#if GTK_CHECK_VERSION (3, 0, 0) + g_return_val_if_fail (GTK_SOURCE_IS_STYLE_SCHEME_MANAGER (manager), FALSE); +#else g_return_val_if_fail (GTK_IS_SOURCE_STYLE_SCHEME_MANAGER (manager), FALSE); +#endif g_return_val_if_fail (id != NULL, FALSE); scheme = gtk_source_style_scheme_manager_get_scheme (manager, id); diff --git a/pluma/pluma-utils.c b/pluma/pluma-utils.c index b452eddd..bf0a6862 100644 --- a/pluma/pluma-utils.c +++ b/pluma/pluma-utils.c @@ -125,22 +125,29 @@ pluma_utils_menu_position_under_widget (GtkMenu *menu, { GtkWidget *widget; GtkRequisition requisition; + GtkAllocation allocation; widget = GTK_WIDGET (user_data); widget_get_origin (widget, x, y); gtk_widget_size_request (GTK_WIDGET (menu), &requisition); +#if GTK_CHECK_VERSION (3, 0, 0) + gtk_widget_get_allocation (widget, &allocation); +#else + allocation = widget->allocation; +#endif + if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) { - *x += widget->allocation.x + widget->allocation.width - requisition.width; + *x += allocation.x + allocation.width - requisition.width; } else { - *x += widget->allocation.x; + *x += allocation.x; } - *y += widget->allocation.y + widget->allocation.height; + *y += allocation.y + allocation.height; *push_in = TRUE; } @@ -234,7 +241,11 @@ pluma_dialog_add_button (GtkDialog *dialog, button = pluma_gtk_button_new_with_stock_icon (text, stock_id); g_return_val_if_fail (button != NULL, NULL); +#if GTK_CHECK_VERSION (3, 0, 0) + gtk_widget_set_can_default (button, TRUE); +#else GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); +#endif gtk_widget_show (button); @@ -900,10 +911,18 @@ pluma_utils_get_window_workspace (GtkWindow *gtkwindow) guint ret = PLUMA_ALL_WORKSPACES; g_return_val_if_fail (GTK_IS_WINDOW (gtkwindow), 0); +#if GTK_CHECK_VERSION (3, 0, 0) + g_return_val_if_fail (gtk_widget_get_realized (GTK_WIDGET (gtkwindow)), 0); +#else g_return_val_if_fail (GTK_WIDGET_REALIZED (GTK_WIDGET (gtkwindow)), 0); +#endif window = gtk_widget_get_window (GTK_WIDGET (gtkwindow)); +#if GTK_CHECK_VERSION (3, 0, 0) + display = gdk_window_get_display (window); +#else display = gdk_drawable_get_display (window); +#endif gdk_error_trap_push (); result = XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), GDK_WINDOW_XID (window), diff --git a/pluma/pluma-view.c b/pluma/pluma-view.c index cbd2299c..5132e966 100644 --- a/pluma/pluma-view.c +++ b/pluma/pluma-view.c @@ -37,7 +37,12 @@ #include #include +#include #include +#if GTK_CHECK_VERSION (3, 0, 0) +#include +#include +#endif #include @@ -48,6 +53,9 @@ #include "pluma-marshal.h" #include "pluma-utils.h" +#if GTK_CHECK_VERSION (3, 0, 0) +#define GTK_WIDGET_VISIBLE gtk_widget_get_visible +#endif #define PLUMA_VIEW_SCROLL_MARGIN 0.02 #define PLUMA_VIEW_SEARCH_DIALOG_TIMEOUT (30*1000) /* 30 seconds */ @@ -100,7 +108,11 @@ struct _PlumaViewPrivate /* The search entry completion is shared among all the views */ GtkListStore *search_completion_model = NULL; +#if GTK_CHECK_VERSION (3, 0, 0) +static void pluma_view_dispose (GObject *object); +#else static void pluma_view_destroy (GtkObject *object); +#endif static void pluma_view_finalize (GObject *object); static gint pluma_view_focus_out (GtkWidget *widget, GdkEventFocus *event); @@ -131,9 +143,13 @@ static gboolean reset_searched_text (PlumaView *view); static void hide_search_window (PlumaView *view, gboolean cancel); - +#if GTK_CHECK_VERSION (3, 0, 0) +static gboolean pluma_view_draw (GtkWidget *widget, + cairo_t *cr); +#else static gint pluma_view_expose (GtkWidget *widget, GdkEventExpose *event); +#endif static void search_highlight_updated_cb (PlumaDocument *doc, GtkTextIter *start, GtkTextIter *end, @@ -143,7 +159,11 @@ static void pluma_view_delete_from_cursor (GtkTextView *text_view, GtkDeleteType type, gint count); +#if GTK_CHECK_VERSION (3, 0, 0) +G_DEFINE_TYPE(PlumaView, pluma_view, GTK_SOURCE_TYPE_VIEW) +#else G_DEFINE_TYPE(PlumaView, pluma_view, GTK_TYPE_SOURCE_VIEW) +#endif /* Signals */ enum @@ -178,17 +198,27 @@ static void pluma_view_class_init (PlumaViewClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); +#if !GTK_CHECK_VERSION (3, 0, 0) GtkObjectClass *gtkobject_class = GTK_OBJECT_CLASS (klass); +#endif GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); GtkTextViewClass *text_view_class = GTK_TEXT_VIEW_CLASS (klass); GtkBindingSet *binding_set; +#if GTK_CHECK_VERSION (3, 0, 0) + object_class->dispose = pluma_view_dispose; +#else gtkobject_class->destroy = pluma_view_destroy; +#endif object_class->finalize = pluma_view_finalize; widget_class->focus_out_event = pluma_view_focus_out; +#if GTK_CHECK_VERSION (3, 0, 0) + widget_class->draw = pluma_view_draw; +#else widget_class->expose_event = pluma_view_expose; +#endif /* * Override the gtk_text_view_drag_motion and drag_drop @@ -389,7 +419,11 @@ pluma_view_init (PlumaView *view) } static void +#if GTK_CHECK_VERSION (3, 0, 0) +pluma_view_dispose (GObject *object) +#else pluma_view_destroy (GtkObject *object) +#endif { PlumaView *view; @@ -414,7 +448,11 @@ pluma_view_destroy (GtkObject *object) current_buffer_removed (view); g_signal_handlers_disconnect_by_func (view, on_notify_buffer_cb, NULL); +#if GTK_CHECK_VERSION (3, 0, 0) + (* G_OBJECT_CLASS (pluma_view_parent_class)->dispose) (object); +#else (* GTK_OBJECT_CLASS (pluma_view_parent_class)->destroy) (object); +#endif } static void @@ -900,14 +938,20 @@ send_focus_change (GtkWidget *widget, GdkEvent *fevent = gdk_event_new (GDK_FOCUS_CHANGE); g_object_ref (widget); - + +#if !GTK_CHECK_VERSION (2, 21, 0) if (in) GTK_WIDGET_SET_FLAGS (widget, GTK_HAS_FOCUS); else GTK_WIDGET_UNSET_FLAGS (widget, GTK_HAS_FOCUS); +#endif fevent->focus_change.type = GDK_FOCUS_CHANGE; +#if GTK_CHECK_VERSION (3, 0, 0) + fevent->focus_change.window = g_object_ref (gtk_widget_get_window (widget)); +#else fevent->focus_change.window = g_object_ref (widget->window); +#endif fevent->focus_change.in = in; gtk_widget_event (widget, fevent); @@ -974,7 +1018,11 @@ update_search_window_position (PlumaView *view) { gint x, y; gint view_x, view_y; +#if GTK_CHECK_VERSION (3, 0, 0) + GdkWindow *view_window = gtk_widget_get_window (GTK_WIDGET (view)); +#else GdkWindow *view_window = GTK_WIDGET (view)->window; +#endif gtk_widget_realize (view->priv->search_window); @@ -1428,16 +1476,25 @@ ensure_search_window (PlumaView *view) GtkWidget *vbox; GtkWidget *toplevel; GtkEntryCompletion *completion; + GtkWindowGroup *group; + GtkWindowGroup *search_group; toplevel = gtk_widget_get_toplevel (GTK_WIDGET (view)); +#if GTK_CHECK_VERSION (3, 0, 0) + group = gtk_window_get_group (GTK_WINDOW (toplevel)); + search_group = gtk_window_get_group (GTK_WINDOW (toplevel)); +#else + group = GTK_WINDOW (toplevel)->group; + search_group = GTK_WINDOW (view->priv->search_window)->group; +#endif if (view->priv->search_window != NULL) { - if (GTK_WINDOW (toplevel)->group) - gtk_window_group_add_window (GTK_WINDOW (toplevel)->group, + if (group) + gtk_window_group_add_window (group, GTK_WINDOW (view->priv->search_window)); - else if (GTK_WINDOW (view->priv->search_window)->group) - gtk_window_group_remove_window (GTK_WINDOW (view->priv->search_window)->group, + else if (search_group) + gtk_window_group_remove_window (search_group, GTK_WINDOW (view->priv->search_window)); customize_for_search_mode (view); @@ -1447,8 +1504,8 @@ ensure_search_window (PlumaView *view) view->priv->search_window = gtk_window_new (GTK_WINDOW_POPUP); - if (GTK_WINDOW (toplevel)->group) - gtk_window_group_add_window (GTK_WINDOW (toplevel)->group, + if (group) + gtk_window_group_add_window (group, GTK_WINDOW (view->priv->search_window)); gtk_window_set_modal (GTK_WINDOW (view->priv->search_window), TRUE); @@ -1746,7 +1803,11 @@ start_interactive_search_real (PlumaView *view) GTK_WIDGET_VISIBLE (view->priv->search_window)) return TRUE; +#if GTK_CHECK_VERSION (3, 0, 0) + if (!gtk_widget_has_focus (view)) +#else if (!GTK_WIDGET_HAS_FOCUS (view)) +#endif return FALSE; buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)); @@ -1816,18 +1877,31 @@ start_interactive_goto_line (PlumaView *view) return start_interactive_search_real (view); } +#if GTK_CHECK_VERSION (3, 0, 0) +static gboolean +pluma_view_draw (GtkWidget *widget, + cairo_t *cr) +#else static gint pluma_view_expose (GtkWidget *widget, GdkEventExpose *event) +#endif { GtkTextView *text_view; PlumaDocument *doc; +#if GTK_CHECK_VERSION (3, 0, 0) + GdkWindow *window; +#endif text_view = GTK_TEXT_VIEW (widget); doc = PLUMA_DOCUMENT (gtk_text_view_get_buffer (text_view)); - +#if GTK_CHECK_VERSION (3, 0, 0) + window = gtk_text_view_get_window (text_view, GTK_TEXT_WINDOW_TEXT); + if (gtk_cairo_should_draw_window (cr, window) && +#else if ((event->window == gtk_text_view_get_window (text_view, GTK_TEXT_WINDOW_TEXT)) && +#endif pluma_document_get_enable_search_highlighting (doc)) { GdkRectangle visible_rect; @@ -1846,7 +1920,11 @@ pluma_view_expose (GtkWidget *widget, &iter2); } +#if GTK_CHECK_VERSION (3, 0, 0) + return GTK_WIDGET_CLASS (pluma_view_parent_class)->draw (widget, cr); +#else return (* GTK_WIDGET_CLASS (pluma_view_parent_class)->expose_event)(widget, event); +#endif } static GdkAtom @@ -1882,7 +1960,13 @@ pluma_view_drag_motion (GtkWidget *widget, /* If this is a URL, deal with it here */ if (drag_get_uri_target (widget, context) != GDK_NONE) { - gdk_drag_status (context, context->suggested_action, timestamp); + gdk_drag_status (context, +#if GTK_CHECK_VERSION (3, 0, 0) + gdk_drag_context_get_suggested_action (context), +#else + context->suggested_action, +#endif + timestamp); result = TRUE; } @@ -2062,6 +2146,7 @@ search_highlight_updated_cb (PlumaDocument *doc, } } +#if !GTK_CHECK_VERSION (3, 0, 0) /* There is no "official" way to reset the im context in GtkTextView */ static void reset_im_context (GtkTextView *text_view) @@ -2072,6 +2157,7 @@ reset_im_context (GtkTextView *text_view) gtk_im_context_reset (text_view->im_context); } } +#endif static void delete_line (GtkTextView *text_view, @@ -2083,7 +2169,11 @@ delete_line (GtkTextView *text_view, buffer = gtk_text_view_get_buffer (text_view); +#if GTK_CHECK_VERSION (3, 0, 0) + gtk_text_view_reset_im_context (text_view); +#else reset_im_context (text_view); +#endif /* If there is a selection delete the selected lines and * ignore count */ diff --git a/pluma/pluma-window.c b/pluma/pluma-window.c index e4f6a541..b783d62c 100644 --- a/pluma/pluma-window.c +++ b/pluma/pluma-window.c @@ -38,6 +38,7 @@ #include #include +#include #include "pluma-ui.h" #include "pluma-window.h" @@ -61,6 +62,10 @@ #include "osx/pluma-osx.h" #endif +#if GTK_CHECK_VERSION (3, 0, 0) +#define GTK_WIDGET_VISIBLE gtk_widget_get_visible +#endif + #define LANGUAGE_NONE (const gchar *)"LangNone" #define PLUMA_UIFILE "pluma-ui.xml" #define TAB_WIDTH_DATA "PlumaWindowTabWidthData" @@ -2434,8 +2439,12 @@ language_changed (GObject *object, } static void -notebook_switch_page (GtkNotebook *book, +notebook_switch_page (GtkNotebook *book, +#if GTK_CHECK_VERSION (3, 0, 0) + GtkWidget *pg, +#else GtkNotebookPage *pg, +#endif gint page_num, PlumaWindow *window) { @@ -3597,13 +3606,20 @@ static void vpaned_restore_position (GtkWidget *widget, PlumaWindow *window) { + GtkAllocation allocation; gint pos; +#if GTK_CHECK_VERSION (3, 0, 0) + gtk_widget_get_allocation (widget, &allocation); +#else + allocation = widget->allocation; +#endif + pluma_debug_message (DEBUG_WINDOW, "Restoring vpaned position: bottom panel size %d", window->priv->bottom_panel_size); - pos = widget->allocation.height - + pos = allocation.height - MAX (50, window->priv->bottom_panel_size); gtk_paned_set_position (GTK_PANED (window->priv->vpaned), pos); diff --git a/pluma/pluma.c b/pluma/pluma.c index 61babb3f..a2e911af 100644 --- a/pluma/pluma.c +++ b/pluma/pluma.c @@ -397,7 +397,7 @@ on_message_received (const char *message, * terminal. We also need to make sure that the window * has been realized otherwise it will not work. lame. */ - if (!GTK_WIDGET_REALIZED (window)) + if (!gtk_widget_get_realized (window)) gtk_widget_realize (GTK_WIDGET (window)); #ifdef GDK_WINDOWING_X11 @@ -556,10 +556,14 @@ main (int argc, char *argv[]) gchar *icon_dir; /* Init type system as soon as possible */ +#if !GLIB_CHECK_VERSION (2, 36, 0) g_type_init (); +#endif /* Init glib threads asap */ +#if !GLIB_CHECK_VERSION (2, 32, 0) g_thread_init (NULL); +#endif /* Setup debugging */ pluma_debug_init (); diff --git a/pluma/smclient/eggsmclient-private.h b/pluma/smclient/eggsmclient-private.h index 2e41d6d9..d13035bf 100755 --- a/pluma/smclient/eggsmclient-private.h +++ b/pluma/smclient/eggsmclient-private.h @@ -20,7 +20,10 @@ #ifndef __EGG_SM_CLIENT_PRIVATE_H__ #define __EGG_SM_CLIENT_PRIVATE_H__ +#include +#if !GTK_CHECK_VERSION (3, 0, 0) #include +#endif #include "eggsmclient.h" G_BEGIN_DECLS diff --git a/pluma/smclient/eggsmclient-xsmp.c b/pluma/smclient/eggsmclient-xsmp.c index 75fced19..688e20eb 100755 --- a/pluma/smclient/eggsmclient-xsmp.c +++ b/pluma/smclient/eggsmclient-xsmp.c @@ -367,7 +367,11 @@ sm_client_xsmp_startup (EggSMClient *client, free (ret_client_id); gdk_threads_enter (); +#if GTK_CHECK_VERSION (3, 0, 0) + gdk_x11_set_sm_client_id (xsmp->client_id); +#else gdk_set_sm_client_id (xsmp->client_id); +#endif gdk_threads_leave (); g_debug ("Got client ID \"%s\"", xsmp->client_id); -- cgit v1.2.1