We previously had a dedicate view for handling search,
based on model filtering and a custom panel to display
that differently.
After moving to GtkListBox, search can be trivially
done by using a filtering function, and widgets can
be fine-tuned to display extra information.
This patch, then, reimplements the search using a filtering
function over the panels' list.
https://bugzilla.gnome.org/show_bug.cgi?id=766922
The latest mockups use a list instead of icon grid. This
commit, after all the work porting the current UI to use
a side list, replacing the temporary icon grid.
https://bugzilla.gnome.org/show_bug.cgi?id=766922
Since the window can shrink down too much, it makes
sense for us to have a sane default width and height.
720x480 was chosen because that's the default resolution
for CRT TVs.
https://bugzilla.gnome.org/show_bug.cgi?id=766922
The first headerbar and the sidelist should stay synchronized,
and this commit does so by setting the width request of the
headerbar to the allocated width of the sidelist.
https://bugzilla.gnome.org/show_bug.cgi?id=766922
This commit introduces the second headerbar, where the
panel title and the panel widgets are displayed. It also
adapts the code to use the second headerbar when needed.
https://bugzilla.gnome.org/show_bug.cgi?id=766922
Since the search bar has been moved to above the sidelist, it
makes sense to have the search button on the start of the
headerbar, strengthening the relation between both widgets.
https://bugzilla.gnome.org/show_bug.cgi?id=766922
In order to prepare ourselves for the future changes,
having the window as a template class is hugely advantageous
for we'll be able to modify the interface much more
quickly and cleanly.
This commit makes the window a template class, and only
that. No behavioral changes, nor new features were
introduced here.
https://bugzilla.gnome.org/show_bug.cgi?id=766922
Because the old layout was never meant to scale well on low
resolution displays, we had to introduce code that adapts the
window to be usable on low res screens.
The problem with this code is that it still doesn't scale down
very well for really low resolution screens. Partially because
of the layout itself (which, again, was never meant to), partially
because the panels request a size bigger than e.g. 720x480. Now,
this is an important feature and we need to support that low
resolution by default.
To push this constraint forward, remove the code that managed a
custom mode for low resolution screens. From now on, the Control
Center shall be adapted to scale well on any screen sizes.
https://bugzilla.gnome.org/show_bug.cgi?id=766922
Having a fixed width is bad for various reasons. First, it's
harder to deal with low resolution screens, which was fixed
by adding an entire new mode just to deal with it. Second,
because it may not scale well for big resolutions.
Fix that by removing the code that handles the fixed width.
The next commit will completely remove the code that manages
small screens, in the hope that the new layout will handle
both cases well by design.
https://bugzilla.gnome.org/show_bug.cgi?id=766922
To progressively achieve the sidelist, let's start by moving
the current iconview selector to the side and then turning
it into a GtkListBox.
This commit, then, moves the iconviews' list to the start of
the horizontal box added in the previous commit.
https://bugzilla.gnome.org/show_bug.cgi?id=766922
The copied files are exact copies of shell/cc-window.c and
shell/cc-window.h, and they'll be used to implement the restyled
shell as an alternative binary.
https://bugzilla.gnome.org/show_bug.cgi?id=766922
This commit updates the code to use the recently
introduced API. The new functions improve the
legibility and maintainability of the code, and
makes it easier to work on new features.
https://bugzilla.gnome.org/show_bug.cgi?id=766922
When using the small mode, and the scroll window's content
height is smaller than the screen, we'd end up with whitespace at the
bottom of the panel, as the panel's height is smaller than the window.
==11430== 48 (24 direct, 24 indirect) bytes in 1 blocks are definitely lost in loss record 10,663 of 18,7
==11430== at 0x4A06C50: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==11430== by 0x7F260AC: g_malloc (gmem.c:97)
==11430== by 0x7F3F0F7: g_slice_alloc (gslice.c:1007)
==11430== by 0x7F19BE5: g_list_prepend (glist.c:311)
==11430== by 0x684843B: accum_cells (gtkcellarea.c:1563)
==11430== by 0x6850989: gtk_cell_area_box_foreach (gtkcellareabox.c:1145)
==11430== by 0x6848AAA: gtk_cell_area_foreach (gtkcellarea.c:1730)
==11430== by 0x6848490: gtk_cell_area_get_cells (gtkcellarea.c:1573)
==11430== by 0x6857339: gtk_cell_layout_get_cells (gtkcelllayout.c:592)
==11430== by 0x685668F: gtk_cell_layout_default_get_cells (gtkcelllayout.c:342)
==11430== by 0x6857339: gtk_cell_layout_get_cells (gtkcelllayout.c:592)
==11430== by 0x45242B: cc_shell_item_view_update_cells (cc-shell-item-view.c:116)
==11430== by 0x451DDD: cc_shell_category_view_constructed (cc-shell-category-view.c:141)
==11430== by 0x7C8DC10: g_object_new_internal (gobject.c:1814)
==11430== by 0x7C8E71A: g_object_new_valist (gobject.c:2033)
==11430== by 0x7C8D6C5: g_object_new (gobject.c:1617)
==11430== by 0x4520AB: cc_shell_category_view_new (cc-shell-category-view.c:213)
==11430== by 0x44F5D2: add_category_view (cc-window.c:852)
==11430== by 0x44F78B: setup_model (cc-window.c:880)
==11430== by 0x450EBC: create_main_page (cc-window.c:1460)
==11430== by 0x4514F1: create_window (cc-window.c:1553)
==11430== by 0x45170A: cc_window_init (cc-window.c:1587)
==11430== by 0x7CA6E7D: g_type_create_instance (gtype.c:1870)
==11430== by 0x7C8DAC5: g_object_new_internal (gobject.c:1774)
==11430== by 0x7C8E71A: g_object_new_valist (gobject.c:2033)
==11430== by 0x7C8D6C5: g_object_new (gobject.c:1617)
==11430== by 0x451847: cc_window_new (cc-window.c:1602)
==11430== by 0x44D409: cc_application_startup (cc-application.c:262)
==11430== by 0x7C8827D: g_cclosure_marshal_VOID__VOIDv (gmarshal.c:905)
==11430== by 0x7C8590F: g_type_class_meta_marshalv (gclosure.c:1021)
==11430== by 0x7C854D1: _g_closure_invoke_va (gclosure.c:864)
==11430== by 0x7CA0771: g_signal_emit_valist (gsignal.c:3246)
==11430== by 0x7CA18E9: g_signal_emit (gsignal.c:3393)
==11430== by 0x7982671: g_application_register (gapplication.c:2015)
==11430== by 0x79808D2: g_application_real_local_command_line (gapplication.c:983)
==11430== by 0x68143D6: gtk_application_local_command_line (gtkapplication.c:638)
==11430== by 0x7982D4D: g_application_run (gapplication.c:2280)
==11430== by 0x44C96B: main (main.c:57)
https://bugzilla.gnome.org/show_bug.cgi?id=756762
Now that we handle local command line arguments, the 'command_line'
vfunc can no longer get the initial argc/argv passed to the process.
Now, cheese_gtk_init() is called unconditionally from main()
where argc/argv are available.
https://bugzilla.gnome.org/show_bug.cgi?id=751597
It was handled through a callback calling exit(). Now that we have a
handle-local-options callback, we can handle it as a regular argument
from there.
https://bugzilla.gnome.org/show_bug.cgi?id=751597
This is an help-like parameter, so we want its output to show up in the
terminal from which gnome-control-center was just started, not from the
terminal from which the main gnome-control-center instance was started.
https://bugzilla.gnome.org/show_bug.cgi?id=751597
Since we are using g_application_add_main_option, we can remove the
global variable used to parse the arguments into, and get the parsed
arguments from the GVariantDict returned by
g_application_command_line_get_options_dict().
This is in preparation for handling some command line options in the
local gnome-control-center instance, and others in the remote instance.
https://bugzilla.gnome.org/show_bug.cgi?id=751597
Since GApplication provides this API, we can as well use it, this will
be useful in order to correctly split option handling between the local
instance and the main instance.
https://bugzilla.gnome.org/show_bug.cgi?id=751597
GOption can handle --help for us, so we don't need to reimplement this
ourselves. This causes a small regression as starting a main
gnome-control-center instance and then running gnome-control-center
--help will cause the main instance-control-center to exit. This will be
fixed in the following patches, and this fixes the opposite bug:
if gnome-control-center is not running, gnome-control-center --help
would not exit after displaying the help before this commit.
https://bugzilla.gnome.org/show_bug.cgi?id=751597
When a GVariantBuilder is created with g_variant_builder_new(), it must
be unref'ed with g_variant_builder_unref() when no longer needed. In
this case, we can just use a local stack-allocated GVariantBuilder to
avoid the leak.
https://bugzilla.gnome.org/show_bug.cgi?id=751597
This reverts commit 31a8a99440.
This was meant for bgo#695885 which has stalled for a while, so this
feature has no in-tree user. This commit removes it for now, this can be
readded when users for it materialize.
https://bugzilla.gnome.org/show_bug.cgi?id=751597
This is needed for three reasons:
* To be able to arrange the icon into a folder in GNOME Software
* So that we do not allow the application to be removed
* To show the update description not in the 'OS Updates' package section
The usual implementation of the header func adds headers to all rows but
the first one. If the first row then gets removed, the second row
becomes the first and keeps its header, since nothing ever removes it.
Fix this by also removing the header if we are looking at the first row.
https://bugzilla.gnome.org/show_bug.cgi?id=743441
Padding is updated for some widgets once, when creating the widgets.
But it seems style may not be loaded yet. Therefore the padding has
to be updated on "style-updated" signal to reflect style changes.
https://bugzilla.gnome.org/show_bug.cgi?id=743180
GsdWacomDevice has been updated, dragging GsdDeviceManager as a dependency
from g-s-d, which has been added to panels/common, and compiled as a
separate static libary, which is used by the wacom and mouse modules.
gsd-input-helper.[ch] is now in such library and has been removed from
the panel directories.
https://bugzilla.gnome.org/show_bug.cgi?id=743196
Since GOA is still using WebKit1, we need to set the environment
variable ourself. We can stop setting it once we port to WebKit2
because the network process will handle it for us.
https://bugzilla.gnome.org/show_bug.cgi?id=739960