[shotwell] Don't use GtkHeaderBar on dialogs if the gtk-dialogs-use-header setting is not set
- From: Jens Georg <jensgeorg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [shotwell] Don't use GtkHeaderBar on dialogs if the gtk-dialogs-use-header setting is not set
- Date: Sat, 16 Apr 2016 16:30:51 +0000 (UTC)
commit ed6397c27094c113eb45ab08a0fcb5ad54859d91
Author: Robert Ancell <robert ancell canonical com>
Date: Tue May 26 18:24:10 2015 +1200
Don't use GtkHeaderBar on dialogs if the gtk-dialogs-use-header setting is not set
https://bugzilla.gnome.org/show_bug.cgi?id=749874
src/Dialogs.vala | 22 +++++++++++++---
src/Properties.vala | 4 ++-
src/data_imports/DataImportsUI.vala | 47 ++++++++++++++++++++++++++++++++---
src/publishing/PublishingUI.vala | 45 ++++++++++++++++++++++++++++++---
4 files changed, 105 insertions(+), 13 deletions(-)
---
diff --git a/src/Dialogs.vala b/src/Dialogs.vala
index d760e73..24ce90c 100644
--- a/src/Dialogs.vala
+++ b/src/Dialogs.vala
@@ -168,7 +168,9 @@ public class ExportDialog : Gtk.Dialog {
private bool in_insert = false;
public ExportDialog(string title) {
- Object (use_header_bar: 1);
+ bool use_header;
+ Gtk.Settings.get_default ().get ("gtk-dialogs-use-header", out use_header);
+ Object (use_header_bar: use_header ? 1 : 0);
this.title = title;
resizable = false;
@@ -1191,7 +1193,9 @@ public class TextEntryDialog : Gtk.Dialog {
private Gtk.ButtonBox action_area_box;
public TextEntryDialog() {
- Object (use_header_bar: 1);
+ bool use_header;
+ Gtk.Settings.get_default ().get ("gtk-dialogs-use-header", out use_header);
+ Object (use_header_bar: use_header ? 1 : 0);
}
public void set_builder(Gtk.Builder builder) {
@@ -1264,7 +1268,9 @@ public class MultiTextEntryDialog : Gtk.Dialog {
private Gtk.ButtonBox action_area_box;
public MultiTextEntryDialog() {
- Object (use_header_bar: 1);
+ bool use_header;
+ Gtk.Settings.get_default ().get ("gtk-dialogs-use-header", out use_header);
+ Object (use_header_bar: use_header ? 1 : 0);
}
public void set_builder(Gtk.Builder builder) {
@@ -1649,7 +1655,9 @@ public class AdjustDateTimeDialog : Gtk.Dialog {
bool contains_video = false, bool only_video = false) {
assert(source != null);
- Object(use_header_bar: 1);
+ bool use_header;
+ Gtk.Settings.get_default ().get ("gtk-dialogs-use-header", out use_header);
+ Object(use_header_bar: use_header ? 1 : 0);
set_modal(true);
set_resizable(false);
@@ -2278,6 +2286,12 @@ public class PreferencesDialog {
builder = AppWindow.create_builder();
dialog = builder.get_object("preferences_dialog") as Gtk.Dialog;
+ bool use_header;
+ Gtk.Settings.get_default ().get ("gtk-dialogs-use-header", out use_header);
+ if (!use_header) {
+ Gtk.Widget null_titlebar = null;
+ dialog.set_titlebar (null_titlebar);
+ }
dialog.set_parent_window(AppWindow.get_instance().get_parent_window());
dialog.set_transient_for(AppWindow.get_instance());
dialog.delete_event.connect(on_delete);
diff --git a/src/Properties.vala b/src/Properties.vala
index 88e0e1d..a369649 100644
--- a/src/Properties.vala
+++ b/src/Properties.vala
@@ -630,7 +630,9 @@ private class ExtendedPropertiesWindow : Gtk.Dialog {
}
public ExtendedPropertiesWindow(Gtk.Window owner) {
- Object(use_header_bar: 1);
+ bool use_header;
+ Gtk.Settings.get_default ().get ("gtk-dialogs-use-header", out use_header);
+ Object(use_header_bar: use_header ? 1 : 0);
add_events(Gdk.EventMask.BUTTON_PRESS_MASK | Gdk.EventMask.KEY_PRESS_MASK);
focus_on_map = true;
diff --git a/src/data_imports/DataImportsUI.vala b/src/data_imports/DataImportsUI.vala
index 7b975a7..67ba2b9 100644
--- a/src/data_imports/DataImportsUI.vala
+++ b/src/data_imports/DataImportsUI.vala
@@ -208,13 +208,17 @@ public class DataImportsDialog : Gtk.Dialog {
private Spit.DataImports.ConcreteDataImportsHost host;
protected DataImportsDialog() {
- Object(use_header_bar: 1);
- ((Gtk.HeaderBar) get_header_bar()).set_show_close_button(false);
+ bool use_header;
+ Gtk.Settings.get_default ().get ("gtk-dialogs-use-header", out use_header);
+ Object(use_header_bar: use_header ? 1 : 0);
+ if (use_header)
+ ((Gtk.HeaderBar) get_header_bar()).set_show_close_button(false);
resizable = false;
delete_event.connect(on_window_close);
string title = _("Import From Application");
+ string label = _("Import media _from:");
set_title(title);
@@ -245,6 +249,37 @@ public class DataImportsDialog : Gtk.Dialog {
service_selector_box.set_active(0);
service_selector_box.changed.connect(on_service_changed);
+
+ if (!use_header)
+ {
+ var service_selector_box_label = new Gtk.Label.with_mnemonic(label);
+ service_selector_box_label.set_mnemonic_widget(service_selector_box);
+ service_selector_box_label.set_alignment(0.0f, 0.5f);
+
+ /* the wrapper is not an extraneous widget -- it's necessary to prevent the service
+ selection box from growing and shrinking whenever its parent's size changes.
+ When wrapped inside a Gtk.Alignment, the Alignment grows and shrinks instead of
+ the service selection box. */
+ Gtk.Alignment service_selector_box_wrapper = new Gtk.Alignment(1.0f, 0.5f, 0.0f, 0.0f);
+ service_selector_box_wrapper.add(service_selector_box);
+
+ Gtk.Box service_selector_layouter = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 8);
+ service_selector_layouter.set_border_width(12);
+ service_selector_layouter.add(service_selector_box_label);
+ service_selector_layouter.pack_start(service_selector_box_wrapper, true, true, 0);
+
+ /* 'service area' is the selector assembly plus the horizontal rule dividing it from the
+ rest of the dialog */
+ Gtk.Box service_area_layouter = new Gtk.Box(Gtk.Orientation.VERTICAL, 0);
+ service_area_layouter.pack_start(service_selector_layouter, true, true, 0);
+ Gtk.Separator service_central_separator = new Gtk.Separator(Gtk.Orientation.HORIZONTAL);
+ service_area_layouter.add(service_central_separator);
+
+ Gtk.Alignment service_area_wrapper = new Gtk.Alignment(0.0f, 0.0f, 1.0f, 0.0f);
+ service_area_wrapper.add(service_area_layouter);
+
+ ((Gtk.Box) get_content_area()).pack_start(service_area_wrapper, false, false, 0);
+ }
}
// Intall the central area in all cases
@@ -255,8 +290,12 @@ public class DataImportsDialog : Gtk.Dialog {
close_cancel_button.set_can_default(true);
close_cancel_button.clicked.connect(on_close_cancel_clicked);
- ((Gtk.HeaderBar) get_header_bar()).pack_start(close_cancel_button);
- ((Gtk.HeaderBar) get_header_bar()).pack_end(service_selector_box);
+ if (use_header) {
+ ((Gtk.HeaderBar) get_header_bar()).pack_start(close_cancel_button);
+ ((Gtk.HeaderBar) get_header_bar()).pack_end(service_selector_box);
+ }
+ else
+ ((Gtk.Box) get_action_area()).add(close_cancel_button);
set_standard_window_mode();
diff --git a/src/publishing/PublishingUI.vala b/src/publishing/PublishingUI.vala
index a74bfaf..1722b17 100644
--- a/src/publishing/PublishingUI.vala
+++ b/src/publishing/PublishingUI.vala
@@ -156,8 +156,11 @@ public class PublishingDialog : Gtk.Dialog {
protected PublishingDialog(Gee.Collection<MediaSource> to_publish) {
assert(to_publish.size > 0);
- Object(use_header_bar: 1);
- ((Gtk.HeaderBar) get_header_bar()).set_show_close_button(false);
+ bool use_header;
+ Gtk.Settings.get_default ().get ("gtk-dialogs-use-header", out use_header);
+ Object(use_header_bar: use_header ? 1 : 0);
+ if (use_header)
+ ((Gtk.HeaderBar) get_header_bar()).set_show_close_button(false);
resizable = false;
delete_event.connect(on_window_close);
@@ -243,6 +246,36 @@ public class PublishingDialog : Gtk.Dialog {
service_selector_box.changed.connect(on_service_changed);
+ if (!use_header)
+ {
+ var service_selector_box_label = new Gtk.Label.with_mnemonic(label);
+ service_selector_box_label.set_mnemonic_widget(service_selector_box);
+ service_selector_box_label.set_alignment(0.0f, 0.5f);
+
+ /* the wrapper is not an extraneous widget -- it's necessary to prevent the service
+ selection box from growing and shrinking whenever its parent's size changes.
+ When wrapped inside a Gtk.Alignment, the Alignment grows and shrinks instead of
+ the service selection box. */
+ Gtk.Alignment service_selector_box_wrapper = new Gtk.Alignment(1.0f, 0.5f, 0.0f, 0.0f);
+ service_selector_box_wrapper.add(service_selector_box);
+
+ Gtk.Box service_selector_layouter = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 8);
+ service_selector_layouter.set_border_width(12);
+ service_selector_layouter.add(service_selector_box_label);
+ service_selector_layouter.pack_start(service_selector_box_wrapper, true, true, 0);
+
+ /* 'service area' is the selector assembly plus the horizontal rule dividing it from the
+ rest of the dialog */
+ Gtk.Box service_area_layouter = new Gtk.Box(Gtk.Orientation.VERTICAL, 0);
+ service_area_layouter.add(service_selector_layouter);
+ service_area_layouter.add(new Gtk.Separator(Gtk.Orientation.HORIZONTAL));
+
+ Gtk.Alignment service_area_wrapper = new Gtk.Alignment(0.0f, 0.0f, 1.0f, 0.0f);
+ service_area_wrapper.add(service_area_layouter);
+
+ get_content_area().pack_start(service_area_wrapper, false, false, 0);
+ }
+
central_area_layouter = new Gtk.Box(Gtk.Orientation.VERTICAL, 0);
get_content_area().pack_start(central_area_layouter, true, true, 0);
@@ -250,8 +283,12 @@ public class PublishingDialog : Gtk.Dialog {
close_cancel_button = new Gtk.Button.with_mnemonic("_Cancel");
close_cancel_button.set_can_default(true);
close_cancel_button.clicked.connect(on_close_cancel_clicked);
- ((Gtk.HeaderBar) get_header_bar()).pack_start(close_cancel_button);
- ((Gtk.HeaderBar) get_header_bar()).pack_end(service_selector_box);
+ if (use_header) {
+ ((Gtk.HeaderBar) get_header_bar()).pack_start(close_cancel_button);
+ ((Gtk.HeaderBar) get_header_bar()).pack_end(service_selector_box);
+ }
+ else
+ ((Gtk.Container) get_action_area()).add(close_cancel_button);
set_standard_window_mode();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]