summaryrefslogtreecommitdiff
path: root/src/publishing/PublishingUI.vala
diff options
context:
space:
mode:
Diffstat (limited to 'src/publishing/PublishingUI.vala')
-rw-r--r--src/publishing/PublishingUI.vala47
1 files changed, 42 insertions, 5 deletions
diff --git a/src/publishing/PublishingUI.vala b/src/publishing/PublishingUI.vala
index a74bfaf..f1e4ce6 100644
--- a/src/publishing/PublishingUI.vala
+++ b/src/publishing/PublishingUI.vala
@@ -1,4 +1,4 @@
-/* Copyright 2011-2015 Yorba Foundation
+/* Copyright 2016 Software Freedom Conservancy Inc.
*
* This software is licensed under the GNU Lesser General Public License
* (version 2.1 or later). See the COPYING file in this distribution.
@@ -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();