The maximum MTU value of 10000 is too low for USB Ethernet, which has a
maximum (for Linux USB gadgets) of 15412 bytes (although the upper limit
is the USB wMaxPacketSize which goes up to 4294967295 bytes):
linux/drivers/usb/gadget/function/u_ether.c:#define GETHER_MAX_MTU_SIZE 15412
Multiple Intel NICs can use an MTU of 16110 bytes:
linux/drivers/net/ethernet/intel/e1000/e1000_hw.h:#define MAX_JUMBO_FRAME_SIZE 0x3F00
linux/drivers/net/ethernet/intel/e1000e/defines.h:#define MAX_JUMBO_FRAME_SIZE 0x3F00
linux/drivers/net/ethernet/intel/igbvf/defines.h:#define MAX_JUMBO_FRAME_SIZE 0x3F00
The NetworkManager limit is 4294967295 bytes but this is unreasonable
in a typical enivornment because of the memory required for packets of
that size.
The maximum IPv4 and IPv6 (without using Jumbograms) packet size is 65535
bytes so increase the maximum MTU value to 65536 allow full size IP
packets to be used.
There is a corresponding change in network-manager-applet.
Network names have many allowed characters, among which `&`, `<`, and
`>`. These are problematic for Pango markup. By default, AdwActionRow
has markup enabled for its title. We could escape strings at every
`adw_preferences_row_set_title` call, but this might be easy to forget
in the future. Instead, let's disable markup altogether for these rows.
When there are no wifi networks, the wifi listbox is still visible as a thin line which doesn't look good.
Fix this by setting the visibility based on the number of networks.
We pass to the setter a const char* but we don't control the ownership
of that and it may be returned later from the property getter.
While this is not causing any crash right now, going in the inspector
and try to check the property leads to some scrambled chars which seems
an indication of a memory error.
In general the string passed to these APIs could come from anywhere and
it's not guaranteed that it's always a constant string (and in fact is
not in some cases).
Added validation for maximum length of hotspot SSID, which cannot exceed
32 bytes. As this error might be unintuitive, an error message was also
added below the entry row similar to the password entry row. The error
messages are generic as some characters can require multiple bytes and
mentioning the byte limitation might be too technical.
Fixes#1065
This issue was originally addressed in !257 ("display snap after changes").
However it only dealt with a two-monitor setup, so the user is still
unable to rotate the middle display with three or more monitors.
This commit tries to snap the displays until all are adjacent to
another.
Instead of creating multiple and more complex GSetting bindings for the
sensitive state, just bind the sensitivity of the touchpad widgets to the
active state of the touchpad toggle switch
If doing so, these options may be marked as sensitive by GSettingsBind,
ignoring the send-events global setting binding; and causing the widgets
to be always sensitive regardless the touchpad state.
For unknown reasons, GVC mixer control can sometimes signal a new
device with the same id as one that was added before. This means that
in `device_added_cb`, a duplicate entry with that id is created, in my
case with a different name. However, the last one added is valid, but
that one cannot be selected because all other logic in the sound panel
assumes the first hit in `get_iter` is valid. This breaks sound input
selection then.
The fix is easy; only add a new list entry if none with that id exists.
During destruction toolbar_devices is nullified, but
gtk_widget_in_destruction() does not perform a NULL-check, and we could
crash:
==22708== Invalid read of size 1
==22708== at 0x505CC0B: gtk_widget_in_destruction (gtkwidget.c:10643)
==22708== by 0x189553: gcm_prefs_list_box_row_selected_cb (cc-color-panel.c:1708)
==22708== by 0x4A61714: g_cclosure_marshal_VOID__OBJECTv (gmarshal.c:1910)
==22708== by 0x4A5E148: _g_closure_invoke_va (gclosure.c:895)
==22708== by 0x4A784F3: g_signal_emit_valist (gsignal.c:3462)
==22708== by 0x4A78722: g_signal_emit (gsignal.c:3612)
==22708== by 0x4F5B121: gtk_list_box_remove (gtklistbox.c:2420)
==22708== by 0x4F5B222: gtk_list_box_dispose (gtklistbox.c:439)
==22708== by 0x4A63338: g_object_unref (gobject.c:3891)
==22708== by 0x4EAA994: gtk_box_dispose (gtkbox.c:230)
==22708== by 0x4A63338: g_object_unref (gobject.c:3891)
==22708== by 0x4EAA994: gtk_box_dispose (gtkbox.c:230)
==22708== Address 0xfffffffffffffeb2 is not stack'd, malloc'd or (recently) free'd
See: https://bugs.launchpad.net/ubuntu/+source/gnome-control-center/+bug/2009913
When multiple monitors are available, it's not possible anymore to
configure them all and eventually apply all the changed parameters.
To make this possible again, add a back button in the apply titlebar
that is shown only when we are in the display-settings child.
See: https://bugs.launchpad.net/ubuntu/+source/gnome-control-center/+bug/2012043
We may get an infinite loop on mouse panel startup, in fact the scroll
method changed event emits a gsettings change that also leads to a
notify::use-default emission that again tries to writes to settings,
leading to another change: infinitely.
Closes: #2405
The start title buttons of the main window should be displayed if and
only if the end title buttons are. Only the left-most header bar should have
the start title button set and only right-most header bar the end title buttons.
Therefore, the title buttons property should be bound to the leaflet state:
When unfolded the start title buttons of the sidebar's header bar are
the only ones visible then, and not a second pair in the panel's header bar.
Likewise, in a folded state of the leaflet, the panel's header bar displays
all availble title buttons – start and end – as the panel is the only widget
displaying a header bar.
Signed-off-by: Markus Göllnitz <camelcasenick@bewares.it>