From 61cd8faf5355b7091646efea81ca5f47113996f1 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Mon, 3 Apr 2006 09:58:40 +0000 Subject: [PATCH] Disable margin from printers if there are no printers. 2006-04-03 Alexander Larsson * gtk/gtkpagesetupunixdialog.c: Disable margin from printers if there are no printers. * gtk/gtkpapersize.c: Fix build. --- ChangeLog | 8 ++++++++ ChangeLog.pre-2-10 | 8 ++++++++ gtk/gtkpagesetupunixdialog.c | 35 +++++++++++++++++++++++++++++++++-- gtk/gtkpapersize.c | 2 +- 4 files changed, 50 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index fe144113a3..42dd05cfe8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2006-04-03 Alexander Larsson + + * gtk/gtkpagesetupunixdialog.c: + Disable margin from printers if there are no printers. + + * gtk/gtkpapersize.c: + Fix build. + 2006-04-01 Matthias Clasen * gtk/gtk.symbols: protect unix-only symbols by diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index fe144113a3..42dd05cfe8 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,11 @@ +2006-04-03 Alexander Larsson + + * gtk/gtkpagesetupunixdialog.c: + Disable margin from printers if there are no printers. + + * gtk/gtkpapersize.c: + Fix build. + 2006-04-01 Matthias Clasen * gtk/gtk.symbols: protect unix-only symbols by diff --git a/gtk/gtkpagesetupunixdialog.c b/gtk/gtkpagesetupunixdialog.c index 1a7f0710c7..f6e7ef316e 100644 --- a/gtk/gtkpagesetupunixdialog.c +++ b/gtk/gtkpagesetupunixdialog.c @@ -1417,6 +1417,24 @@ custom_paper_printer_data_func (GtkCellLayout *cell_layout, g_object_unref (printer); } +static void +update_combo_sensitivity_from_printers (CustomPaperDialog *data) +{ + GtkTreeIter iter; + gboolean sensitive; + GtkTreeSelection *selection; + + sensitive = FALSE; + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (data->treeview)); + if (gtk_tree_model_get_iter_first (data->dialog->priv->printer_list, &iter) && + gtk_tree_model_iter_next (data->dialog->priv->printer_list, &iter) && + gtk_tree_selection_get_selected (selection, NULL, &iter)) + sensitive = TRUE; + + g_print ("sensitive: %d\n", sensitive); + gtk_widget_set_sensitive (data->printer_combo, sensitive); +} + static void update_custom_widgets_from_list (CustomPaperDialog *data) { @@ -1452,7 +1470,6 @@ update_custom_widgets_from_list (CustomPaperDialog *data) unit_widget_set_sensitive (data->bottom_widget, TRUE); unit_widget_set_sensitive (data->left_widget, TRUE); unit_widget_set_sensitive (data->right_widget, TRUE); - gtk_widget_set_sensitive (data->printer_combo, TRUE); } else { @@ -1462,8 +1479,9 @@ update_custom_widgets_from_list (CustomPaperDialog *data) unit_widget_set_sensitive (data->bottom_widget, FALSE); unit_widget_set_sensitive (data->left_widget, FALSE); unit_widget_set_sensitive (data->right_widget, FALSE); - gtk_widget_set_sensitive (data->printer_combo, FALSE); } + + update_combo_sensitivity_from_printers (data); data->non_user_change = FALSE; } @@ -1766,6 +1784,7 @@ run_custom_paper_dialog (GtkPageSetupUnixDialog *dialog) GtkTreeSelection *selection; CustomPaperDialog *data; GtkUnit user_units; + gulong printer_tag1, printer_tag2; custom_dialog = gtk_dialog_new_with_buttons (_("Manage Custom Sizes"), GTK_WINDOW (dialog), @@ -1943,6 +1962,14 @@ run_custom_paper_dialog (GtkPageSetupUnixDialog *dialog) combo = gtk_combo_box_new_with_model (GTK_TREE_MODEL (dialog->priv->printer_list)); data->printer_combo = combo; + + printer_tag1 = + g_signal_connect_swapped (dialog->priv->printer_list, "row_inserted", + G_CALLBACK (update_combo_sensitivity_from_printers), data); + printer_tag2 = + g_signal_connect_swapped (dialog->priv->printer_list, "row_deleted", + G_CALLBACK (update_combo_sensitivity_from_printers), data); + update_combo_sensitivity_from_printers (data); cell = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), cell, TRUE); @@ -1977,6 +2004,10 @@ run_custom_paper_dialog (GtkPageSetupUnixDialog *dialog) gtk_widget_destroy (custom_dialog); save_custom_papers (dialog->priv->custom_paper_list); + + g_signal_handler_disconnect (dialog->priv->printer_list, printer_tag1); + g_signal_handler_disconnect (dialog->priv->printer_list, printer_tag2); + } diff --git a/gtk/gtkpapersize.c b/gtk/gtkpapersize.c index 6ac1f3af45..4f7a8f73d7 100644 --- a/gtk/gtkpapersize.c +++ b/gtk/gtkpapersize.c @@ -22,7 +22,7 @@ #include #include #include -#ifdef HAVE_LANGINFO_H +#if defined(HAVE__NL_PAPER_HEIGHT) && defined(HAVE__NL_PAPER_WIDTH) #include #endif