Implement decent keyboard nav for AccountsEditor and editor panes
Return to previous panes using escape/back/(left|right), navigate between settings list items using up/down. Implementation courtesy https://blogs.gnome.org/mclasen/2014/02/27/getting-the-details-right/
This commit is contained in:
parent
3265f4626c
commit
bb629999a6
11 changed files with 442 additions and 227 deletions
|
|
@ -26,6 +26,12 @@ internal class Accounts.EditorAddPane : Gtk.Grid, EditorPane {
|
|||
[GtkChild]
|
||||
private Gtk.Overlay osd_overlay;
|
||||
|
||||
[GtkChild]
|
||||
private Gtk.Grid pane_content;
|
||||
|
||||
[GtkChild]
|
||||
private Gtk.Adjustment pane_adjustment;
|
||||
|
||||
[GtkChild]
|
||||
private Gtk.ListBox details_list;
|
||||
|
||||
|
|
@ -66,6 +72,8 @@ internal class Accounts.EditorAddPane : Gtk.Grid, EditorPane {
|
|||
this.accounts = application.controller.account_manager;
|
||||
this.engine = application.engine;
|
||||
|
||||
this.pane_content.set_focus_vadjustment(this.pane_adjustment);
|
||||
|
||||
this.details_list.set_header_func(Editor.seperator_headers);
|
||||
this.receiving_list.set_header_func(Editor.seperator_headers);
|
||||
this.sending_list.set_header_func(Editor.seperator_headers);
|
||||
|
|
@ -331,6 +339,32 @@ internal class Accounts.EditorAddPane : Gtk.Grid, EditorPane {
|
|||
this.editor.pop();
|
||||
}
|
||||
|
||||
[GtkCallback]
|
||||
private bool on_list_keynav_failed(Gtk.Widget widget,
|
||||
Gtk.DirectionType direction) {
|
||||
bool ret = Gdk.EVENT_PROPAGATE;
|
||||
Gtk.Container? next = null;
|
||||
if (direction == Gtk.DirectionType.DOWN) {
|
||||
if (widget == this.details_list) {
|
||||
next = this.receiving_list;
|
||||
} else if (widget == this.receiving_list) {
|
||||
next = this.sending_list;
|
||||
}
|
||||
} else if (direction == Gtk.DirectionType.UP) {
|
||||
if (widget == this.sending_list) {
|
||||
next = this.receiving_list;
|
||||
} else if (widget == this.receiving_list) {
|
||||
next = this.details_list;
|
||||
}
|
||||
}
|
||||
|
||||
if (next != null) {
|
||||
next.child_focus(direction);
|
||||
ret = Gdk.EVENT_STOP;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -359,6 +393,22 @@ private abstract class Accounts.EntryRow : AddPaneRow<Gtk.Entry> {
|
|||
this.value.width_chars = 32;
|
||||
}
|
||||
|
||||
public override bool focus(Gtk.DirectionType direction) {
|
||||
bool ret = Gdk.EVENT_PROPAGATE;
|
||||
switch (direction) {
|
||||
case Gtk.DirectionType.TAB_FORWARD:
|
||||
case Gtk.DirectionType.TAB_BACKWARD:
|
||||
ret = this.value.child_focus(direction);
|
||||
break;
|
||||
|
||||
default:
|
||||
ret = base.focus(direction);
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -24,6 +24,12 @@ internal class Accounts.EditorEditPane : Gtk.Grid, EditorPane, AccountPane {
|
|||
[GtkChild]
|
||||
private Gtk.HeaderBar header;
|
||||
|
||||
[GtkChild]
|
||||
private Gtk.Grid pane_content;
|
||||
|
||||
[GtkChild]
|
||||
private Gtk.Adjustment pane_adjustment;
|
||||
|
||||
[GtkChild]
|
||||
private Gtk.ListBox details_list;
|
||||
|
||||
|
|
@ -47,6 +53,8 @@ internal class Accounts.EditorEditPane : Gtk.Grid, EditorPane, AccountPane {
|
|||
this.editor = editor;
|
||||
this.account = account;
|
||||
|
||||
this.pane_content.set_focus_vadjustment(this.pane_adjustment);
|
||||
|
||||
this.details_list.set_header_func(Editor.seperator_headers);
|
||||
this.details_list.add(new NicknameRow(account));
|
||||
|
||||
|
|
@ -64,21 +72,14 @@ internal class Accounts.EditorEditPane : Gtk.Grid, EditorPane, AccountPane {
|
|||
this.signature_preview.events | Gdk.EventType.FOCUS_CHANGE
|
||||
);
|
||||
this.signature_preview.content_loaded.connect(() => {
|
||||
debug("Signature loaded");
|
||||
// Only enable editability after the content has fully
|
||||
// loaded to avoid the WebProcess crashing.
|
||||
this.signature_preview.set_editable.begin(true, null);
|
||||
});
|
||||
this.signature_preview.document_modified.connect(() => {
|
||||
debug("Signature changed");
|
||||
this.signature_changed = true;
|
||||
});
|
||||
this.signature_preview.focus_in_event.connect(() => {
|
||||
debug("Sig focus in");
|
||||
return Gdk.EVENT_PROPAGATE;
|
||||
});
|
||||
this.signature_preview.focus_out_event.connect(() => {
|
||||
debug("Sig focus out");
|
||||
// This event will also be fired if the top-level
|
||||
// window loses focus, e.g. if the user alt-tabs away,
|
||||
// so don't execute the command if the signature web
|
||||
|
|
@ -196,6 +197,36 @@ internal class Accounts.EditorEditPane : Gtk.Grid, EditorPane, AccountPane {
|
|||
this.editor.pop();
|
||||
}
|
||||
|
||||
[GtkCallback]
|
||||
private bool on_list_keynav_failed(Gtk.Widget widget,
|
||||
Gtk.DirectionType direction) {
|
||||
bool ret = Gdk.EVENT_PROPAGATE;
|
||||
Gtk.Container? next = null;
|
||||
if (direction == Gtk.DirectionType.DOWN) {
|
||||
if (widget == this.details_list) {
|
||||
next = this.senders_list;
|
||||
} else if (widget == this.senders_list) {
|
||||
this.signature_preview.grab_focus();
|
||||
} else if (widget == this.signature_preview) {
|
||||
next = this.settings_list;
|
||||
}
|
||||
} else if (direction == Gtk.DirectionType.UP) {
|
||||
if (widget == this.settings_list) {
|
||||
this.signature_preview.grab_focus();
|
||||
} else if (widget == this.signature_preview) {
|
||||
next = this.senders_list;
|
||||
} else if (widget == this.senders_list) {
|
||||
next = this.details_list;
|
||||
}
|
||||
}
|
||||
|
||||
if (next != null) {
|
||||
next.child_focus(direction);
|
||||
ret = Gdk.EVENT_STOP;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -40,6 +40,12 @@ internal class Accounts.EditorListPane : Gtk.Grid, EditorPane {
|
|||
[GtkChild]
|
||||
private Gtk.Overlay osd_overlay;
|
||||
|
||||
[GtkChild]
|
||||
private Gtk.Grid pane_content;
|
||||
|
||||
[GtkChild]
|
||||
private Gtk.Adjustment pane_adjustment;
|
||||
|
||||
[GtkChild]
|
||||
private Gtk.Grid welcome_panel;
|
||||
|
||||
|
|
@ -64,6 +70,8 @@ internal class Accounts.EditorListPane : Gtk.Grid, EditorPane {
|
|||
this.accounts =
|
||||
((GearyApplication) editor.application).controller.account_manager;
|
||||
|
||||
this.pane_content.set_focus_vadjustment(this.pane_adjustment);
|
||||
|
||||
this.accounts_list.set_header_func(Editor.seperator_headers);
|
||||
this.accounts_list.set_sort_func(ordinal_sort);
|
||||
foreach (Geary.AccountInformation account in this.accounts.iterable()) {
|
||||
|
|
@ -238,6 +246,22 @@ internal class Accounts.EditorListPane : Gtk.Grid, EditorPane {
|
|||
}
|
||||
}
|
||||
|
||||
[GtkCallback]
|
||||
private bool on_list_keynav_failed(Gtk.Widget widget,
|
||||
Gtk.DirectionType direction) {
|
||||
bool ret = Gdk.EVENT_PROPAGATE;
|
||||
if (direction == Gtk.DirectionType.DOWN &&
|
||||
widget == this.accounts_list) {
|
||||
this.service_list.child_focus(direction);
|
||||
ret = Gdk.EVENT_STOP;
|
||||
} else if (direction == Gtk.DirectionType.UP &&
|
||||
widget == this.service_list) {
|
||||
this.accounts_list.child_focus(direction);
|
||||
ret = Gdk.EVENT_STOP;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -20,6 +20,12 @@ internal class Accounts.EditorServersPane : Gtk.Grid, EditorPane, AccountPane {
|
|||
[GtkChild]
|
||||
private Gtk.HeaderBar header;
|
||||
|
||||
[GtkChild]
|
||||
private Gtk.Grid pane_content;
|
||||
|
||||
[GtkChild]
|
||||
private Gtk.Adjustment pane_adjustment;
|
||||
|
||||
[GtkChild]
|
||||
private Gtk.ListBox details_list;
|
||||
|
||||
|
|
@ -34,6 +40,8 @@ internal class Accounts.EditorServersPane : Gtk.Grid, EditorPane, AccountPane {
|
|||
this.editor = editor;
|
||||
this.account = account;
|
||||
|
||||
this.pane_content.set_focus_vadjustment(this.pane_adjustment);
|
||||
|
||||
this.details_list.set_header_func(Editor.seperator_headers);
|
||||
this.details_list.add(
|
||||
new ServiceProviderRow<EditorServersPane>(
|
||||
|
|
@ -81,6 +89,32 @@ internal class Accounts.EditorServersPane : Gtk.Grid, EditorPane, AccountPane {
|
|||
private void on_apply_button_clicked() {
|
||||
}
|
||||
|
||||
[GtkCallback]
|
||||
private bool on_list_keynav_failed(Gtk.Widget widget,
|
||||
Gtk.DirectionType direction) {
|
||||
bool ret = Gdk.EVENT_PROPAGATE;
|
||||
Gtk.Container? next = null;
|
||||
if (direction == Gtk.DirectionType.DOWN) {
|
||||
if (widget == this.details_list) {
|
||||
next = this.receiving_list;
|
||||
} else if (widget == this.receiving_list) {
|
||||
next = this.sending_list;
|
||||
}
|
||||
} else if (direction == Gtk.DirectionType.UP) {
|
||||
if (widget == this.sending_list) {
|
||||
next = this.receiving_list;
|
||||
} else if (widget == this.receiving_list) {
|
||||
next = this.details_list;
|
||||
}
|
||||
}
|
||||
|
||||
if (next != null) {
|
||||
next.child_focus(direction);
|
||||
ret = Gdk.EVENT_STOP;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
private void on_account_changed() {
|
||||
update_header();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -65,6 +65,31 @@ public class Accounts.Editor : Gtk.Dialog {
|
|||
push(this.editor_list_pane);
|
||||
}
|
||||
|
||||
public override bool key_press_event(Gdk.EventKey event) {
|
||||
bool ret = Gdk.EVENT_PROPAGATE;
|
||||
|
||||
if (get_current_pane() != this.editor_list_pane) {
|
||||
Gdk.ModifierType state = (
|
||||
event.state & Gtk.accelerator_get_default_mod_mask()
|
||||
);
|
||||
bool is_ltr = (get_direction() == Gtk.TextDirection.LTR);
|
||||
if (event.keyval == Gdk.Key.Escape ||
|
||||
event.keyval == Gdk.Key.Back ||
|
||||
(state == Gdk.ModifierType.MOD1_MASK &&
|
||||
(is_ltr && event.keyval == Gdk.Key.Left) ||
|
||||
(!is_ltr && event.keyval == Gdk.Key.Right))) {
|
||||
pop();
|
||||
ret = Gdk.EVENT_STOP;
|
||||
}
|
||||
}
|
||||
|
||||
if (ret != Gdk.EVENT_STOP) {
|
||||
ret = base.key_press_event(event);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
public override void destroy() {
|
||||
this.editor_panes.notify["visible-child"].disconnect(on_pane_changed);
|
||||
base.destroy();
|
||||
|
|
|
|||
|
|
@ -1,7 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generated with glade 3.22.0 -->
|
||||
<!-- Generated with glade 3.22.1 -->
|
||||
<interface>
|
||||
<requires lib="gtk+" version="3.20"/>
|
||||
<object class="GtkAdjustment" id="pane_adjustment">
|
||||
<property name="upper">100</property>
|
||||
<property name="step_increment">1</property>
|
||||
<property name="page_increment">10</property>
|
||||
</object>
|
||||
<template class="AccountsEditorAddPane" parent="GtkGrid">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
|
|
@ -15,6 +20,8 @@
|
|||
<property name="can_focus">True</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="vadjustment">pane_adjustment</property>
|
||||
<property name="hscrollbar_policy">never</property>
|
||||
<property name="shadow_type">in</property>
|
||||
<child>
|
||||
<object class="GtkViewport">
|
||||
|
|
@ -22,7 +29,7 @@
|
|||
<property name="can_focus">False</property>
|
||||
<property name="shadow_type">none</property>
|
||||
<child>
|
||||
<object class="GtkGrid">
|
||||
<object class="GtkGrid" id="pane_content">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
|
|
@ -36,6 +43,7 @@
|
|||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="selection_mode">none</property>
|
||||
<signal name="keynav-failed" handler="on_list_keynav_failed" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
|
|
@ -77,6 +85,7 @@
|
|||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="selection_mode">none</property>
|
||||
<signal name="keynav-failed" handler="on_list_keynav_failed" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
|
|
@ -124,6 +133,7 @@
|
|||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="selection_mode">none</property>
|
||||
<signal name="keynav-failed" handler="on_list_keynav_failed" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
|
|
@ -139,7 +149,7 @@
|
|||
</packing>
|
||||
</child>
|
||||
<style>
|
||||
<class name="geary-account-view"/>
|
||||
<class name="geary-accounts-editor-pane-content"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
|
|
@ -156,6 +166,9 @@
|
|||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<style>
|
||||
<class name="geary-accounts-editor-pane"/>
|
||||
</style>
|
||||
</template>
|
||||
<object class="GtkHeaderBar" id="header">
|
||||
<property name="visible">True</property>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,76 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generated with glade 3.22.0 -->
|
||||
<!-- Generated with glade 3.22.1 -->
|
||||
<interface>
|
||||
<requires lib="gtk+" version="3.20"/>
|
||||
<object class="GtkHeaderBar" id="header">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="title">Edit Account</property>
|
||||
<property name="subtitle">Account Name</property>
|
||||
<property name="has_subtitle">False</property>
|
||||
<property name="show_close_button">True</property>
|
||||
<child>
|
||||
<object class="GtkGrid">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="back_button">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<signal name="clicked" handler="on_back_button_clicked" swapped="no"/>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="no_show_all">True</property>
|
||||
<property name="icon_name">go-previous-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkGrid">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="undo_button">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="action_name">win.undo</property>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="no_show_all">True</property>
|
||||
<property name="icon_name">edit-undo-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="pack_type">end</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkAdjustment" id="pane_adjustment">
|
||||
<property name="upper">100</property>
|
||||
<property name="step_increment">1</property>
|
||||
<property name="page_increment">10</property>
|
||||
</object>
|
||||
<template class="AccountsEditorEditPane" parent="GtkGrid">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
|
|
@ -11,6 +80,7 @@
|
|||
<property name="can_focus">True</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="vadjustment">pane_adjustment</property>
|
||||
<property name="hscrollbar_policy">never</property>
|
||||
<property name="min_content_height">400</property>
|
||||
<child>
|
||||
|
|
@ -18,7 +88,7 @@
|
|||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkGrid">
|
||||
<object class="GtkGrid" id="pane_content">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
|
|
@ -33,6 +103,7 @@
|
|||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="selection_mode">none</property>
|
||||
<signal name="keynav-failed" handler="on_list_keynav_failed" swapped="no"/>
|
||||
<signal name="row-activated" handler="on_setting_activated" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
|
|
@ -72,6 +143,7 @@
|
|||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="selection_mode">none</property>
|
||||
<signal name="keynav-failed" handler="on_list_keynav_failed" swapped="no"/>
|
||||
<signal name="row-activated" handler="on_setting_activated" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
|
|
@ -148,6 +220,7 @@
|
|||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="selection_mode">none</property>
|
||||
<signal name="keynav-failed" handler="on_list_keynav_failed" swapped="no"/>
|
||||
<signal name="row-activated" handler="on_setting_activated" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
|
|
@ -170,7 +243,7 @@
|
|||
<property name="label" translatable="yes" comments="This is a button in the account settings to show server settings.">Server Settings</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<signal name="clicked" handler="on_server_settings_clicked" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
|
|
@ -185,7 +258,7 @@
|
|||
<property name="label" translatable="yes" comments="This is the remove account button in the account settings.">Remove Account</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="tooltip_text" translatable="yes">Remove this account from Geary</property>
|
||||
<signal name="clicked" handler="on_remove_account_clicked" swapped="no"/>
|
||||
<style>
|
||||
|
|
@ -210,7 +283,7 @@
|
|||
</packing>
|
||||
</child>
|
||||
<style>
|
||||
<class name="geary-account-view"/>
|
||||
<class name="geary-accounts-editor-pane-content"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
|
|
@ -222,69 +295,8 @@
|
|||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<style>
|
||||
<class name="geary-accounts-editor-pane"/>
|
||||
</style>
|
||||
</template>
|
||||
<object class="GtkHeaderBar" id="header">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="title">Edit Account</property>
|
||||
<property name="subtitle">Account Name</property>
|
||||
<property name="has_subtitle">False</property>
|
||||
<property name="show_close_button">True</property>
|
||||
<child>
|
||||
<object class="GtkGrid">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="back_button">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<signal name="clicked" handler="on_back_button_clicked" swapped="no"/>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="no_show_all">True</property>
|
||||
<property name="icon_name">go-previous-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkGrid">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="undo_button">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="action_name">win.undo</property>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="no_show_all">True</property>
|
||||
<property name="icon_name">edit-undo-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="pack_type">end</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</interface>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,19 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generated with glade 3.22.0 -->
|
||||
<!-- Generated with glade 3.22.1 -->
|
||||
<interface>
|
||||
<requires lib="gtk+" version="3.20"/>
|
||||
<object class="GtkHeaderBar" id="header">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="title">Accounts</property>
|
||||
<property name="has_subtitle">False</property>
|
||||
<property name="show_close_button">True</property>
|
||||
</object>
|
||||
<object class="GtkAdjustment" id="pane_adjustment">
|
||||
<property name="upper">100</property>
|
||||
<property name="step_increment">1</property>
|
||||
<property name="page_increment">10</property>
|
||||
</object>
|
||||
<template class="AccountsEditorListPane" parent="GtkGrid">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
|
|
@ -17,6 +29,7 @@
|
|||
<property name="can_focus">True</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="vadjustment">pane_adjustment</property>
|
||||
<property name="hscrollbar_policy">never</property>
|
||||
<property name="min_content_height">400</property>
|
||||
<child>
|
||||
|
|
@ -24,7 +37,7 @@
|
|||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkGrid">
|
||||
<object class="GtkGrid" id="pane_content">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
|
|
@ -98,6 +111,7 @@
|
|||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="selection_mode">none</property>
|
||||
<signal name="keynav-failed" handler="on_list_keynav_failed" swapped="no"/>
|
||||
<signal name="row-activated" handler="on_row_activated" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
|
|
@ -144,6 +158,7 @@
|
|||
<property name="can_focus">False</property>
|
||||
<property name="valign">start</property>
|
||||
<property name="selection_mode">none</property>
|
||||
<signal name="keynav-failed" handler="on_list_keynav_failed" swapped="no"/>
|
||||
<signal name="row-activated" handler="on_row_activated" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
|
|
@ -157,7 +172,7 @@
|
|||
</packing>
|
||||
</child>
|
||||
<style>
|
||||
<class name="geary-account-view"/>
|
||||
<class name="geary-accounts-editor-pane-content"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
|
|
@ -174,12 +189,8 @@
|
|||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<style>
|
||||
<class name="geary-accounts-editor-pane"/>
|
||||
</style>
|
||||
</template>
|
||||
<object class="GtkHeaderBar" id="header">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="title">Accounts</property>
|
||||
<property name="has_subtitle">False</property>
|
||||
<property name="show_close_button">True</property>
|
||||
</object>
|
||||
</interface>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generated with glade 3.22.0 -->
|
||||
<!-- Generated with glade 3.22.1 -->
|
||||
<interface>
|
||||
<requires lib="gtk+" version="3.20"/>
|
||||
<template class="AccountsEditorRemovePane" parent="GtkGrid">
|
||||
|
|
@ -104,7 +104,7 @@
|
|||
</packing>
|
||||
</child>
|
||||
<style>
|
||||
<class name="geary-account-view"/>
|
||||
<class name="geary-accounts-editor-pane-content"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
|
|
@ -112,6 +112,9 @@
|
|||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<style>
|
||||
<class name="geary-accounts-editor-pane"/>
|
||||
</style>
|
||||
</template>
|
||||
<object class="GtkHeaderBar" id="header">
|
||||
<property name="visible">True</property>
|
||||
|
|
|
|||
|
|
@ -1,140 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generated with glade 3.22.0 -->
|
||||
<!-- Generated with glade 3.22.1 -->
|
||||
<interface>
|
||||
<requires lib="gtk+" version="3.20"/>
|
||||
<template class="AccountsEditorServersPane" parent="GtkGrid">
|
||||
<property name="name">1</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="hscrollbar_policy">never</property>
|
||||
<property name="min_content_height">400</property>
|
||||
<child>
|
||||
<object class="GtkViewport">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkGrid">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="label_xalign">0</property>
|
||||
<property name="shadow_type">in</property>
|
||||
<child>
|
||||
<object class="GtkListBox" id="receiving_list">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="selection_mode">none</property>
|
||||
</object>
|
||||
</child>
|
||||
<child type="label_item">
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="label" translatable="yes">Receiving</property>
|
||||
<style>
|
||||
<class name="geary-settings-heading"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="label_xalign">0</property>
|
||||
<property name="shadow_type">in</property>
|
||||
<child>
|
||||
<object class="GtkListBox" id="sending_list">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="selection_mode">none</property>
|
||||
</object>
|
||||
</child>
|
||||
<child type="label_item">
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">4</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="label" translatable="yes">Sending</property>
|
||||
<style>
|
||||
<class name="geary-settings-heading"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="label_xalign">0</property>
|
||||
<property name="shadow_type">in</property>
|
||||
<child>
|
||||
<object class="GtkListBox" id="details_list">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="selection_mode">none</property>
|
||||
</object>
|
||||
</child>
|
||||
<child type="label_item">
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<style>
|
||||
<class name="geary-account-view"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
</template>
|
||||
<object class="GtkHeaderBar" id="header">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
|
|
@ -187,4 +54,149 @@
|
|||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkAdjustment" id="pane_adjustment">
|
||||
<property name="upper">100</property>
|
||||
<property name="step_increment">1</property>
|
||||
<property name="page_increment">10</property>
|
||||
</object>
|
||||
<template class="AccountsEditorServersPane" parent="GtkGrid">
|
||||
<property name="name">1</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="vadjustment">pane_adjustment</property>
|
||||
<property name="hscrollbar_policy">never</property>
|
||||
<property name="min_content_height">400</property>
|
||||
<child>
|
||||
<object class="GtkViewport">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkGrid" id="pane_content">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="label_xalign">0</property>
|
||||
<property name="shadow_type">in</property>
|
||||
<child>
|
||||
<object class="GtkListBox" id="receiving_list">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="selection_mode">none</property>
|
||||
<signal name="keynav-failed" handler="on_list_keynav_failed" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
<child type="label_item">
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="label" translatable="yes">Receiving</property>
|
||||
<style>
|
||||
<class name="geary-settings-heading"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="label_xalign">0</property>
|
||||
<property name="shadow_type">in</property>
|
||||
<child>
|
||||
<object class="GtkListBox" id="sending_list">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="selection_mode">none</property>
|
||||
<signal name="keynav-failed" handler="on_list_keynav_failed" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
<child type="label_item">
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">4</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="label" translatable="yes">Sending</property>
|
||||
<style>
|
||||
<class name="geary-settings-heading"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="label_xalign">0</property>
|
||||
<property name="shadow_type">in</property>
|
||||
<child>
|
||||
<object class="GtkListBox" id="details_list">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="selection_mode">none</property>
|
||||
<signal name="keynav-failed" handler="on_list_keynav_failed" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
<child type="label_item">
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<style>
|
||||
<class name="geary-accounts-editor-pane-content"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<style>
|
||||
<class name="geary-accounts-editor-pane"/>
|
||||
</style>
|
||||
</template>
|
||||
</interface>
|
||||
|
|
|
|||
|
|
@ -183,8 +183,8 @@ grid.geary-message-summary {
|
|||
|
||||
/* Accounts.Editor */
|
||||
|
||||
grid.geary-account-view {
|
||||
margin: 32px 128px;
|
||||
grid.geary-accounts-editor-pane-content {
|
||||
padding: 32px 128px;
|
||||
}
|
||||
|
||||
grid.geary-account-view image:dir(ltr) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue