| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
EActivity now uses a GCancellable to manage cancellations, instead of
having its own redundant cancellation API. API changes are as follows:
+ e_activity_get_cancellable()
+ e_activity_set_cancellable()
- e_activity_cancel()
- e_activity_is_cancelled()
- e_activity_get_allow_cancel()
- e_activity_set_allow_cancel()
EActivity's "cancelled" signal remains, but only as a repeater for
GCancellable::cancelled signals. It should not be emitted directly.
The presence of a GCancellable implies that cancellation is allowed.
EActivity does not create its own default GCancellable, it has to be
given one.
If a CamelOperation (cast as a GCancellable) is given, EActivity will
configure itself to listen for status updates from the CamelOperation
and propagate the information to its own "primary-text" and "percent"
properties.
These changes allowed me to start cleaning up some of the incredibly
convoluted logic in mail-mt.c -- in particular, mail_operation_status()
is completely gone now. mail-mt.c is still in a transitional state --
much more significant changes coming soon.
|
|
|
|
|
|
|
| |
In GTK+ 2.21.8, the keysym names were renamed from GDK_* to GDK_KEY_*.
I've added backward-compatibility macors to gtk-compat.h, which can be
dumped as soon as we require GTK+ >= 2.22.0.
|
| |
|
|
|
|
|
|
| |
All this time I never realized the subject-thread plugin was nothing
more than a stupid checkbox. The actual thread-by-subject code lives
in the core mail library.
|
|
|
|
| |
EConfig and EMAccountEditor are very, very brittle.
|
|
|
|
|
| |
The patch suggests displaying the calendar name and group instead of uri
for the source of error.
|
|
|
|
|
| |
Load sensapi.dll only from system directory where it should normally
be and not from any random place.
|
|
|
|
|
|
| |
- Fix GtkVBox orientations.
- Reduce container widgets.
- Remove unused widgets.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove some options from Mail Preferences that aren't worth the screen
real estate they take up. For now, the corresponding GConf keys still
remain and are honored by Evolution. These same options were already
removed for Express mode.
Options removed are:
[ ] Mark messages as read after XXX seconds
[ ] Do not display messages when text size exceeds XXX KB
[ ] Shrink To / Cc / Bcc headers to XXX addresses
[ ] Enable Magic Spacebar
[ ] Enable Search Folders
|
|
|
|
| |
How ironic.
|
| |
|
|
|
|
|
|
|
| |
If we're using GTK+ 2.21.8 (where gtk_dialog_set_has_separator() is
deprecated but the property is still present and defaults to TRUE), we
still need to set the property to FALSE. So instead use g_object_set()
up through GTK+ 2.90.6, after which the property itself is gone.
|
| |
|
|
|
|
|
|
| |
Unfortunately the default value for this property is TRUE (bzzt, WRONG!)
so we can't just remove the function outright until we require GTK+ 2.22.
It was deprecated in GTK+ 2.21.8.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Given the way the autosave feature was awkwardly bolted on to the
composer, an EExtension seemed like a natural fit. And it helped
clean up some object lifecycle hacks (and bugs).
What we have now is a new module consisting of two EExtensions:
EComposerAutosave extends EMsgComposer and determines when to
kick off an asynchronous autosave operation.
EComposerRegistry extends EShell and offers to restore orphaned
autosave files on startup (which is also asynchronous now).
e-autosave-utils.c holds the actual asynchronous functions and a few
other miscellaneous utility functions.
Source code for the new module lives in /modules/composer-autosave.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
EMailShellContent implements the EMailReader interface but acts as a
proxy for EMailPanedView, from which it obtains MessageList and EWebView
widgets. The problem was both classes call e_mail_reader_init_private()
which connects to signals emitted from the MessageList and EWebView
widgets. But since EMailShellContent is a proxy for EMailPanedView,
the signals were being connected twice.
This commit does away with e_mail_reader_init_private(), instead adding
options to e_mail_reader_init() to control what parts of initialization
to run. It's an ugly and temporary hack.
I'm beginning to realize EMailReader is too bloated and needs rethought.
EMailReader should just manage actions. EMailView should own and manage
the widgets, and EMailReader should just have a get_mail_view() method
so it has access to those widgets. That way the EMailView subclasses
won't have to implement EMailReader themselves and wind up allocating
a bunch of duplicate, unused actions.
It's too close to a stable release to rip these interfaces apart and
reorganize them. I'll try to do that for 2.33 to help make the design
more intuitive.
|
| |
|
|
|
|
| |
As reported in Red Hat bugzilla in 626810
|
|
|
|
|
|
|
| |
Prefer thread-safe G_DEFINE_TYPE and G_DEFINE_INTERFACE macros over
manual GType registration.
This is just a start... lots more to do.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Similar to e_load_book_source_async() in libedataserverui (and may wind
up there eventually). This replaces e_auth_new_cal_from_source().
void e_load_cal_source_async (ESource *source,
ECalSourceType source_type,
icaltimezone *default_zone,
GtkWindow *parent,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
ECal * e_load_cal_source_finish (ESource *source,
GAsyncResult *result,
GError **error);
|
|
|
|
| |
using g_signal_connect_object in many places; fixes bgo#627525#
|
|
|
|
| |
For handling "new-contact" and "new-contact-list" actions.
|
|
|
|
|
|
| |
It's easier to use than addressbook_load() but requires starting with
an ESource rather than an EBook, and there's a couple places left where
that's not so easy. I'll spend more time on it later.
|
| |
|
| |
|
|
|
|
| |
Reduce the composer's dependency on e_shell_get_default().
|
|
|
|
|
|
|
|
|
| |
e_preferences_window to take factory callbacks and store a reference
to the shell. - This makes start-up substantially faster, particularly
on Atom (eg.).
Remove a number of idle handlers used to create these UIs in the
first instance, cleaning the code.
|
| |
|
| |
|
| |
|
|
|
|
| |
Found similar bugs in EShellMemoContent and EShellTaskContent.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Migration runs just before the main loop starts.
It's just a sequence of local directory and file renames.
|
| |
|
| |
|
|
|
|
|
| |
David's solution is simpler: check if the HTML widget is mapped.
Avoids having to propagate the property to Srini's new classes.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Remove redundant logic (we call e_source_list_ensure_group() and then
proceed to do the same thing it just did), and use "local:" as the base
URI for the "On This Computer" group.
This requires commit 9e0845207b39f256f7e81d388741ed30a764ea7b in
Evolution-Data-Server to work properly.
|
| |
|
|
|
|
|
| |
...with a dropdown menu like the Forward button, and configuration for
whether it tries to do 'Reply to List' by default.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
This gives EShellSearchbar something concrete to call to direct focus
away from itself instead of tabbing forward and hoping for the best.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Convert the "startup-wizard" EPlugin to an EExtension, and fix up the
importing UI a bit (but it still needs a lot more love). Importing
progress is now shown directly in the GtkAssistant window.
Define a new EConfigItem type (E_CONFIG_PAGE_PROGRESS) for creating
progress pages in a GtkAssistant.
Also, change EMAccountEditor semantics slightly: you now have to call
e_config_create_window() manually after creating a new EMAccountEditor
instance. This allows extra EConfigItems (specifications for the window
content) to be added manually before the window is created.
|
|
|
|
|
|
|
|
|
|
| |
EMFormatHTML now holds a sealed EWebView instead of a public GtkHTML,
accessible through em_format_html_get_web_view().
Rename e_mail_reader_get_html_display() to e_mail_reader_get_formatter()
and have it return an EMFormatHTML instead of an EMFormatHTMLDisplay,
since that's usually the type you want (or else an EMFormat, but never
an EMFormatHTMLDisplay).
|
| |
|
|
|
|
|
|
|
| |
Converted size restoration of all preview panes to be triggered by
EShellWindow::shell-view-created signal. The signal is emitted when
the view is fully initialized and visible. Shell views can use that
as a trigger for restoring pane sizes from GConf.
|
| |
|
| |
|
|
|
|
|
|
|
| |
This reverts commit 43e2c871a418b560b391af00df2b10896055026c.
Correct icon name is "mail-mark-notjunk". The previous fix got
clobbered by the express2 merge.
|
| |
|
| |
|
|\ |
|
| | |
|
| | |
|
| |\ |
|
| | |
| | |
| | |
| | | |
are created
|
| | | |
|
| |\ \ |
|
| | |\| |
|
| | | | |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This reverts commit edf6286a38279e6db82dee4da50e94c587f06e02.
gnome-icon-theme got it wrong, not us. See bug #616954.
|
| | | | |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
mail-mark-notjunk -> mail-mark-not-junk
|
| |/ /
| | |
| | |
| | | |
calendar in standalone mode
|
| |\ \ |
|
| | | |
| | | |
| | | |
| | | | |
for adding in calendar since it doesn't have a toolbar.
|
| |/ / |
|
| | |
| | |
| | |
| | | |
filter.
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | | |
mail-mark-notjunk -> mail-mark-not-junk
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
and make sure it doesn't get smaller than that. Also pick the pane
position from the right place.
|
| | |
| | |
| | |
| | |
| | |
| | | |
That was just for development. Now we hardcode the lists of widgets.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
|
| | | |
|
| | | |
|
| |\| |
|
| | | |
|
| | | |
|
| |\ \ |
|
| | | | |
|
| |/ / |
|
| | | |
|
| | |
| | |
| | |
| | | |
Signed-off-by: Federico Mena Quintero <federico@novell.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We have two preferences for showing week numbers in various places.
We will combine these to be a single preference. This change replaces
/apps/evolution/calendar/display/day_view_show_week_number
with a general /apps/evolution/calendar/display/show_week_numbers.
We'll deal with the other preference in subsequent commits.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
|
| | | |
|
| |\ \ |
|
| | |\| |
|
| | | | |
|
| |/ /
| | |
| | |
| | | |
use the new / stock shell versions now.
|
| | | |
|
| |\ \ |
|
| | |\|
| | | |
| | | |
| | | |
| | | |
| | | | |
Note that express2 got some documentation for EExtensible and friends,
and that documentation is not in gnome-2-30 yet. We need to cherry-pick
those commits into gnome-2-30 and elsewhere.
|
| | | | |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The implementation is done using System Event Notification Service
by implementing ConnectionMade ConnectionMadeNoQOCInfo and
ConnectionLost methods of ISensNetwork interface.
Make the subscription to the network status notification receive
the event only if the ownerof the subscription is logged on to
the same computer as the publisher. This makes this module work
on Windows Vista and Windows 7 with normal user account.
Don't try to build Windows SENS when not building for Windows.
Extract the relevant COM structs and typedefs from mingw-w64 headers
to allow to build the module with mingw.org toolchain and fix
build breakages with Microsoft compilers.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This demonstrates how to extend EShell without having to modify and
recompile e-shell.c. If NetworkManager integration is enabled, the
extension is loaded automatically when the EShell is created.
The same pattern can be applied to integrate other network monitoring
software like ConnMan or Microsoft's Wireless Zero Configuration.
|
| | | |
| | | |
| | | |
| | | | |
Signed-off-by: Federico Mena Quintero <federico@novell.com>
|
| |/ /
| | |
| | |
| | | |
Signed-off-by: Federico Mena Quintero <federico@novell.com>
|
| | |
| | |
| | |
| | |
| | |
| | | |
Composer and signature editor always default to HTML in Express mode.
Hide the corresponding composer preference. This will not affect the
user preference in normal mode.
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
For express mode:
- Move the search bar up to the toolbar.
- Hide the "filter" combo box and lock down the first item.
- Hide the "scope" combo box and lock down the first item.
(This is the combo box with "Current Folder" only in the mailer.)
- EShellView owns the search bar widget now instead of EShellContent.
- Insert several nasty hacks that will likely come back to bite me.
Conflicts:
doc/reference/shell/eshell-sections.txt
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
configure.ac
modules/Makefile.am
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Make EWebView extensible and register an extension to automatically
bind every EWebView instance to the appropriate EShellSettings.
Conflicts:
widgets/misc/e-web-view.c
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This demonstrates how to extend EShell without having to modify and
recompile e-shell.c. If NetworkManager integration is enabled, the
extension is loaded automatically when the EShell is created.
The same pattern can be applied to integrate other network monitoring
software like ConnMan or Microsoft's Wireless Zero Configuration.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Make ECalendarItem, ECalendarView, ECalModel, EDateEdit, EMeetingStore,
and EMeetingTimeSelector extensible and register extensions to
automatically bind every instance to the appropriate EShellSettings.
Conflicts:
calendar/gui/gnome-cal.c
modules/calendar/e-cal-shell-content.c
|
| | |
| | |
| | |
| | |
| | | |
Make EMFormatHTML extensible and register an extension to automatically
bind every EMFormatHTML instance to the appropriate EShellSettings.
|
| |/ |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
We measure a sample string, and then clamp this to one fourth of the
screen's width; we do some voodoo to guess the monitor we are in.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
are created
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
This reverts commit edf6286a38279e6db82dee4da50e94c587f06e02.
gnome-icon-theme got it wrong, not us. See bug #616954.
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
mail-mark-notjunk -> mail-mark-not-junk
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Still remaining:
GtkAccessible::widget
GtkAssistant::forward
GtkAssistant::back
GtkObject::flags
GtkTreeStore::stamp
The GtkAssistant fields are related to bug #596428. We don't
need accessor functions so much as the enhancement described
there implemented.
https://bugzilla.gnome.org/show_bug.cgi?id=615613
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
Composer and signature editor always default to HTML in Express mode.
Hide the corresponding composer preference. This will not affect the
user preference in normal mode.
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
There's too much ancient, crufty code there that we can't realistically
support anymore. A workaround for those poor users still on 1.x is to
upgrade to some 2.x release first, then upgrade again to 3.x. An error
dialog explaining this will be shown at startup.
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
Don't try to build Windows SENS when not building for Windows.
Extract the relevant COM structs and typedefs from mingw-w64 headers
to allow to build the module with mingw.org toolchain and fix
build breakages with Microsoft compilers.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Removed the following menu items under View:
Hide Selected Messages
Hide Read Messages
Show Hidden Messages
These options are confusing and don't fit with the rest of the mailer
design.
Hidden messages were tracked by folder in:
~/.evolution/mail/config/hidestate-<<folder-uri>>
So by simply not loading those files any more we reveal all previously
hidden messages and avoid any risk of lost messages.
Also inverted "Hide Deleted Messages" to "Show Deleted Messages".
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
For express mode:
- Move the search bar up to the toolbar.
- Hide the "filter" combo box and lock down the first item.
- Hide the "scope" combo box and lock down the first item.
(This is the combo box with "Current Folder" only in the mailer.)
- EShellView owns the search bar widget now instead of EShellContent.
- Insert several nasty hacks that will likely come back to bite me.
|
| |
| |
| |
| | |
Implement the Windows SENS network monitoring in plain C
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
We just clamp this to one fourth of the screen's width; we do
some voodoo to guess the monitor we are in.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
|
| | |
|
| |
| |
| |
| | |
and variables so that they look more like what we do in Evolution
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Check actually the return values and bail out if the registration
to receive system events failed.
Reformat the code to be consistent wrt tabs vs. space use.
Extract frequently used patterns into an inline function.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Make the MySensNetwork class inherit from ISensNetwork interface
instead of IDispatch (this assures, inter alia, that we use the
right function signatures for the callbacks).
Make the subscription to the network status notification receive
the event only if the ownerof the subscription is logged on to
the same computer as the publisher. This makes this module work
on Windows Vista and Windows 7 with normal user account.
|
| |
| |
| |
| |
| |
| |
| |
| | |
The implementation is done using System Event Notification Service
by implementing ConnectionMade ConnectionMadeNoQOCInfo and
ConnectionLost methods of ISensNetwork interface.
Introduces C++ dependency for Windows port only
|
| | |
|
| |
| |
| |
| | |
Signed-off-by: Federico Mena Quintero <federico@novell.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We do this by measuring a template string, which contains a sample name for an email account.
This is what normally gets displayed in the folder tree, so such a sample string
should give a reasonable width.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
Conflicts:
modules/mail/e-mail-shell-sidebar.c
|
| |
| |
| |
| | |
Signed-off-by: Federico Mena Quintero <federico@novell.com>
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
We do this by measuring a template string, which contains a sample name for an email account.
This is what normally gets displayed in the folder tree, so such a sample string
should give a reasonable width.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
|
| |
| |
| |
| |
| | |
Make EWebView extensible and register an extension to automatically
bind every EWebView instance to the appropriate EShellSettings.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This demonstrates how to extend EShell without having to modify and
recompile e-shell.c. If NetworkManager integration is enabled, the
extension is loaded automatically when the EShell is created.
The same pattern can be applied to integrate other network monitoring
software like ConnMan or Microsoft's Wireless Zero Configuration.
|
| |
| |
| |
| |
| |
| | |
Make ECalendarItem, ECalendarView, ECalModel, EDateEdit, EMeetingStore,
and EMeetingTimeSelector extensible and register extensions to
automatically bind every instance to the appropriate EShellSettings.
|
| |
| |
| |
| |
| | |
Make EMFormatHTML extensible and register an extension to automatically
bind every EMFormatHTML instance to the appropriate EShellSettings.
|
|/ |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Replace the EVO_EXPRESS environment variable with an --express command
line option. (Note, this adds a new translatable string for --help.)
Add an EUIManager class with an "express-mode" property and custom load
functions that use our new "express" preprocessor. This replaces the UI
manager functions in e-utils.c.
(Also going to see if I can get GTK+ to add an "add_ui_from_string"
method to GtkUIManagerClass that we can override. Then we could just
call gtk_ui_manager_add_ui_from_string() and the preprocessor would
automatically do its thing and chain up.)
Add an "express-mode" read-only GObject property to EShell.
Add e_shell_configure_ui_manager() to e-shell-utils.c. For now this
just creates a one-way property binding:
EShell:express-mode -> EUIManager:express-mode
Call this immediately after e_ui_manager_new(). (EUIManager can't do
this itself because it lives too low in the dependency hierarchy and
doesn't know about EShell.)
|
|
|
|
|
| |
extend them to plugins - use a simple one-off boolean on the UI Manager
instead of exhaustively trying to propagate this information everywhere.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
get a gtk_widget_destroy invocation, which meant we left some
callbacks registered, long after our child 'views' were destroyed
causing sudden death in update_marcus_bains_line_cb, manipulating
views.
|
| |
|
| |
|
|
|
|
| |
Requires e_source_selector_select_exclusive() from libedataserverui.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Neither ETree::key-press nor ETableItem::key-press signal definitions
specify a GSignalAccumulator that terminates the signal emission when
a handler returns TRUE, and Evolution 2.29 connects multiple handlers
to ETree::key-press.
When the space key is pressed, the first handler implements the magic
space bar behavior and returns TRUE, which should terminate signal
emission but doesn't because there's no accumulator function on the
signal. So the second handler runs and checks for other keys besides
space. It returns FALSE since it didn't handle the key press.
End result: emission site gets back FALSE (from the second handler) as
the return value, so it thinks the key press was not handled at all and
invokes the fallback handler -- e_selection_model_toggle_single_row() --
which -unselects- the newly selected row, making it appear the next
unread message was never selected.
Several other ETable-related signals that return "handled" flags also
lack GSignalAccumulator functions. I've made a note to myself to fix
those as well.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Avoid listing calendar and directory targets explicitly, so that
e-selection.c contains the one and only master list. Still need
to figure out how to centralize "text/x-source-vcard".
|
| |
|
| |
|
|
|
|
| |
Also, let EShellSearchbar handle search state persistence.
|
| |
|