summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Soriano <csoriano@gnome.org>2015-05-06 23:07:17 +0200
committerCarlos Soriano <csoriano@gnome.org>2015-06-16 16:19:37 +0200
commitfbbad5deecb635af34a890a540e8e272b95c4d9b (patch)
tree90289307eaecc1d91065d3088a5c12c05619bcc1
parentd881b1534914398046f7e5237321f978ff073441 (diff)
downloadgtk+-fbbad5deecb635af34a890a540e8e272b95c4d9b.tar.gz
gtkplacesidebar: use GtkListBox
We were using GTkTreeView in a simple list. Also, as we know, GtkCellRenderers are not the best way to theme and manipulate widgets. So instead use a GtkListBox to modernize the GtkPlacesSidebar, and in the way clean up some parts of the code (like headings) which were not used anymore. Also we don't use a model anymore, since the data is simple enough to manage it in a subclass of the row itself.
-rw-r--r--gtk/Makefile.am6
-rw-r--r--gtk/gtkplacessidebar.c2692
-rw-r--r--gtk/gtkplacessidebarprivate.h54
-rw-r--r--gtk/gtksidebarrow.c629
-rw-r--r--gtk/gtksidebarrowprivate.h53
-rw-r--r--gtk/theme/Adwaita/_colors.scss4
-rw-r--r--gtk/theme/Adwaita/_common.scss84
-rw-r--r--gtk/theme/Adwaita/gtk-contained-dark.css378
-rw-r--r--gtk/theme/Adwaita/gtk-contained.css378
-rw-r--r--gtk/ui/gtksidebarrow.ui86
10 files changed, 2283 insertions, 2081 deletions
diff --git a/gtk/Makefile.am b/gtk/Makefile.am
index 72ee47fdff..50e8efb21f 100644
--- a/gtk/Makefile.am
+++ b/gtk/Makefile.am
@@ -474,6 +474,7 @@ gtk_private_h_sources = \
gtkorientableprivate.h \
gtkpango.h \
gtkpathbar.h \
+ gtkplacessidebarprivate.h \
gtkpopoverprivate.h \
gtkprintoperation-private.h \
gtkprintutils.h \
@@ -496,6 +497,7 @@ gtk_private_h_sources = \
gtksearchenginesimple.h \
gtksearchentryprivate.h \
gtkselectionprivate.h \
+ gtksidebarrowprivate.h \
gtksettingsprivate.h \
gtksizegroup-private.h \
gtksizerequestcacheprivate.h \
@@ -793,6 +795,7 @@ gtk_base_c_sources = \
gtkseparatormenuitem.c \
gtkseparatortoolitem.c \
gtksettings.c \
+ gtksidebarrow.c \
gtksizegroup.c \
gtksizerequest.c \
gtksizerequestcache.c \
@@ -1086,7 +1089,8 @@ templates = \
ui/gtksearchbar.ui \
ui/gtkscalebutton.ui \
ui/gtkstatusbar.ui \
- ui/gtkvolumebutton.ui
+ ui/gtkvolumebutton.ui \
+ ui/gtksidebarrow.ui
#
# rules to generate built sources
diff --git a/gtk/gtkplacessidebar.c b/gtk/gtkplacessidebar.c
index a2ba83d6f5..63a74dde3b 100644
--- a/gtk/gtkplacessidebar.c
+++ b/gtk/gtkplacessidebar.c
@@ -20,6 +20,7 @@
* Authors : Mr Jamie McCracken (jamiemcc at blueyonder dot co dot uk)
* Cosimo Cecchi <cosimoc@gnome.org>
* Federico Mena Quintero <federico@gnome.org>
+ * Carlos Soriano <csoriano@gnome.org>
*
*/
@@ -45,6 +46,8 @@
#include <gio/gio.h>
+#include "gtkplacessidebarprivate.h"
+#include "gtksidebarrowprivate.h"
#include "gdk/gdkkeysyms.h"
#include "gtkbookmarksmanager.h"
#include "gtkcelllayout.h"
@@ -62,14 +65,17 @@
#include "gtkseparatormenuitem.h"
#include "gtksettings.h"
#include "gtktrashmonitor.h"
-#include "gtktreeselection.h"
-#include "gtktreednd.h"
#include "gtktypebuiltins.h"
#include "gtkwindow.h"
#include "gtkpopover.h"
#include "gtkgrid.h"
#include "gtklabel.h"
#include "gtkbutton.h"
+#include "gtklistbox.h"
+#include "gtkselection.h"
+#include "gtkdnd.h"
+#include "gtkseparator.h"
+#include "gtkentry.h"
/**
* SECTION:gtkplacessidebar
@@ -101,10 +107,6 @@
* location.
*/
-#define EJECT_BUTTON_XPAD 8
-#define ICON_CELL_XPAD 8
-#define TIMEOUT_EXPAND 500
-
/* These are used when a destination-side DND operation is taking place.
* Normally, when a common drag action is taking place, the state will be
* DROP_STATE_NEW_BOOKMARK_ARMED, however, if the client of GtkPlacesSidebar
@@ -121,10 +123,9 @@ typedef enum {
struct _GtkPlacesSidebar {
GtkScrolledWindow parent;
- GtkTreeView *tree_view;
- GtkCellRenderer *eject_icon_cell_renderer;
- GtkCellRenderer *text_cell_renderer;
- GtkListStore *store;
+ GtkWidget *list_box;
+ GtkWidget *new_bookmark_row;
+
GtkBookmarksManager *bookmarks_manager;
GVolumeMonitor *volume_monitor;
GtkTrashMonitor *trash_monitor;
@@ -139,13 +140,19 @@ struct _GtkPlacesSidebar {
gulong trash_monitor_changed_id;
- gboolean devices_header_added;
- gboolean bookmarks_header_added;
-
/* DND */
GList *drag_list; /* list of GFile */
gint drag_data_info;
gboolean dragging_over;
+ GtkTargetList *source_targets;
+ GtkWidget *drag_row;
+ gint drag_row_height;
+ gint drag_row_x;
+ gint drag_row_y;
+ gint drag_root_x;
+ gint drag_root_y;
+ GtkWidget *row_placeholder;
+ DropState drop_state;
/* volume mounting - delayed open process */
GtkPlacesOpenFlags go_to_after_mount_open_flags;
@@ -160,11 +167,6 @@ struct _GtkPlacesSidebar {
GtkPlacesOpenFlags open_flags;
- DropState drop_state;
- guint drag_leave_timeout_id;
- gchar *drop_target_uri;
- guint switch_location_timer;
-
guint mounting : 1;
guint drag_data_received : 1;
guint drop_occured : 1;
@@ -205,43 +207,6 @@ struct _GtkPlacesSidebarClass {
};
enum {
- PLACES_SIDEBAR_COLUMN_ROW_TYPE,
- PLACES_SIDEBAR_COLUMN_URI,
- PLACES_SIDEBAR_COLUMN_DRIVE,
- PLACES_SIDEBAR_COLUMN_VOLUME,
- PLACES_SIDEBAR_COLUMN_MOUNT,
- PLACES_SIDEBAR_COLUMN_NAME,
- PLACES_SIDEBAR_COLUMN_GICON,
- PLACES_SIDEBAR_COLUMN_INDEX,
- PLACES_SIDEBAR_COLUMN_EJECT,
- PLACES_SIDEBAR_COLUMN_NO_EJECT,
- PLACES_SIDEBAR_COLUMN_BOOKMARK,
- PLACES_SIDEBAR_COLUMN_TOOLTIP,
- PLACES_SIDEBAR_COLUMN_SECTION_TYPE,
- PLACES_SIDEBAR_COLUMN_HEADING_TEXT,
- PLACES_SIDEBAR_COLUMN_SENSITIVE,
- PLACES_SIDEBAR_COLUMN_COUNT
-};
-
-typedef enum {
- PLACES_BUILT_IN,
- PLACES_XDG_DIR,
- PLACES_MOUNTED_VOLUME,
- PLACES_BOOKMARK,
- PLACES_HEADING,
- PLACES_CONNECT_TO_SERVER,
- PLACES_ENTER_LOCATION,
- PLACES_DROP_FEEDBACK
-} PlaceType;
-
-typedef enum {
- SECTION_DEVICES,
- SECTION_BOOKMARKS,
- SECTION_COMPUTER,
- SECTION_NETWORK
-} SectionType;
-
-enum {
OPEN_LOCATION,
POPULATE_POPUP,
SHOW_ERROR_MESSAGE,
@@ -287,59 +252,39 @@ enum {
static guint places_sidebar_signals [LAST_SIGNAL] = { 0 };
static GParamSpec *properties[NUM_PROPERTIES] = { NULL, };
-static void open_selected_bookmark (GtkPlacesSidebar *sidebar,
- GtkTreeModel *model,
- GtkTreeIter *iter,
- GtkPlacesOpenFlags open_flags);
-static gboolean eject_or_unmount_bookmark (GtkPlacesSidebar *sidebar,
- GtkTreePath *path);
-static gboolean eject_or_unmount_selection (GtkPlacesSidebar *sidebar);
-static void check_unmount_and_eject (GMount *mount,
- GVolume *volume,
- GDrive *drive,
- gboolean *show_unmount,
- gboolean *show_eject);
-static int bookmarks_get_first_index (GtkPlacesSidebar *sidebar);
+static gboolean eject_or_unmount_bookmark (GtkSidebarRow *row);
+static gboolean eject_or_unmount_selection (GtkPlacesSidebar *sidebar);
+static void check_unmount_and_eject (GMount *mount,
+ GVolume *volume,
+ GDrive *drive,
+ gboolean *show_unmount,
+ gboolean *show_eject);
+static gboolean on_button_press_event (GtkWidget *widget,
+ GdkEventButton *event,
+ GtkSidebarRow *sidebar);
+static gboolean on_button_release_event (GtkWidget *widget,
+ GdkEventButton *event,
+ GtkSidebarRow *sidebar);
+static void stop_drop_feedback (GtkPlacesSidebar *sidebar);
+
/* Identifiers for target types */
enum {
- GTK_TREE_MODEL_ROW,
- TEXT_URI_LIST
+ DND_UNKNOWN,
+ DND_GTK_SIDEBAR_ROW,
+ DND_TEXT_URI_LIST
};
/* Target types for dragging from the shortcuts list */
static const GtkTargetEntry dnd_source_targets[] = {
- { "GTK_TREE_MODEL_ROW", GTK_TARGET_SAME_WIDGET, GTK_TREE_MODEL_ROW }
+ { "DND_GTK_SIDEBAR_ROW", GTK_TARGET_SAME_WIDGET, DND_GTK_SIDEBAR_ROW }
};
/* Target types for dropping into the shortcuts list */
static const GtkTargetEntry dnd_drop_targets [] = {
- { "GTK_TREE_MODEL_ROW", GTK_TARGET_SAME_WIDGET, GTK_TREE_MODEL_ROW }
+ { "DND_GTK_SIDEBAR_ROW", GTK_TARGET_SAME_WIDGET, DND_GTK_SIDEBAR_ROW }
};
-/* Drag and drop interface declarations */
-typedef struct {
- GtkListStore parent;
-
- GtkPlacesSidebar *sidebar;
-} ShortcutsModel;
-
-typedef struct {
- GtkListStoreClass parent_class;
-} ShortcutsModelClass;
-
-#define SHORTCUTS_MODEL_TYPE (shortcuts_model_get_type ())
-#define SHORTCUTS_MODEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SHORTCUTS_MODEL_TYPE, ShortcutsModel))
-
-static GType shortcuts_model_get_type (void);
-static void shortcuts_model_drag_source_iface_init (GtkTreeDragSourceIface *iface);
-
-G_DEFINE_TYPE_WITH_CODE (ShortcutsModel, shortcuts_model, GTK_TYPE_LIST_STORE,
- G_IMPLEMENT_INTERFACE (GTK_TYPE_TREE_DRAG_SOURCE,
- shortcuts_model_drag_source_iface_init));
-
-static GtkListStore *shortcuts_model_new (GtkPlacesSidebar *sidebar);
-
G_DEFINE_TYPE (GtkPlacesSidebar, gtk_places_sidebar, GTK_TYPE_SCROLLED_WINDOW);
static void
@@ -355,7 +300,7 @@ emit_open_location (GtkPlacesSidebar *sidebar,
}
static void
-emit_populate_popup (GtkPlacesSidebar *sidebar,
+emit_populate_popup (GtkPlacesSidebar *sidebar,
GtkMenu *menu,
GFile *selected_item,
GVolume *selected_volume)
@@ -420,83 +365,56 @@ emit_drag_perform_drop (GtkPlacesSidebar *sidebar,
g_signal_emit (sidebar, places_sidebar_signals[DRAG_PERFORM_DROP], 0,
dest_file, source_file_list, action);
}
-
-static gint
-get_icon_size (GtkPlacesSidebar *sidebar)
-{
- gint width, height;
-
- if (gtk_icon_size_lookup (GTK_ICON_SIZE_MENU, &width, &height))
- return MAX (width, height);
- else
- return 16;
-}
-
-static GtkTreeIter
-add_heading (GtkPlacesSidebar *sidebar,
- SectionType section_type,
- const gchar *title)
+static void
+list_box_header_func (GtkListBoxRow *row,
+ GtkListBoxRow *before,
+ gpointer user_data)
{
- GtkTreeIter iter;
-
- gtk_list_store_append (sidebar->store, &iter);
- gtk_list_store_set (sidebar->store, &iter,
- PLACES_SIDEBAR_COLUMN_ROW_TYPE, PLACES_HEADING,
- PLACES_SIDEBAR_COLUMN_SECTION_TYPE, section_type,
- PLACES_SIDEBAR_COLUMN_HEADING_TEXT, title,
- PLACES_SIDEBAR_COLUMN_EJECT, FALSE,
- PLACES_SIDEBAR_COLUMN_NO_EJECT, TRUE,
- -1);
+ GtkPlacesSidebarSectionType row_section_type;
+ GtkPlacesSidebarSectionType before_section_type;
+ GtkWidget *separator;
- return iter;
-}
+ gtk_list_box_row_set_header (row, NULL);
-static void
-check_heading_for_section (GtkPlacesSidebar *sidebar,
- SectionType section_type)
-{
- switch (section_type)
+ g_object_get (row, "section-type", &row_section_type, NULL);
+ if (before)
{
- case SECTION_DEVICES:
- if (!sidebar->devices_header_added)
- {
- add_heading (sidebar, SECTION_DEVICES, _("Devices"));
- sidebar->devices_header_added = TRUE;
- }
- break;
-
- case SECTION_BOOKMARKS:
- if (!sidebar->bookmarks_header_added)
- {
- add_heading (sidebar, SECTION_BOOKMARKS, _("Bookmarks"));
- sidebar->bookmarks_header_added = TRUE;
- }
- break;
+ g_object_get (before, "section-type", &before_section_type, NULL);
+ }
+ else
+ {
+ before_section_type = SECTION_INVALID;
+ gtk_widget_set_margin_top (GTK_WIDGET (row), 4);
+ }
- default:
- break;
- }
+ if (before && before_section_type != row_section_type)
+ {
+ separator = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
+ gtk_widget_set_margin_top (separator, 4);
+ gtk_widget_set_margin_bottom (separator, 4);
+ gtk_list_box_row_set_header (row, separator);
+ }
}
-static void
-add_place (GtkPlacesSidebar *sidebar,
- PlaceType place_type,
- SectionType section_type,
- const gchar *name,
- GIcon *icon,
- const gchar *uri,
- GDrive *drive,
- GVolume *volume,
- GMount *mount,
- const gint index,
- const gchar *tooltip)
-{
- GtkTreeIter iter;
+static GtkWidget*
+add_place (GtkPlacesSidebar *sidebar,
+ GtkPlacesSidebarPlaceType place_type,
+ GtkPlacesSidebarSectionType section_type,
+ const gchar *name,
+ GIcon *icon,
+ const gchar *uri,
+ GDrive *drive,
+ GVolume *volume,
+ GMount *mount,
+ const gint index,
+ const gchar *tooltip)
+{
gboolean show_eject, show_unmount;
gboolean show_eject_button;
gchar *tooltip_escaped;
-
- check_heading_for_section (sidebar, section_type);
+ GtkWidget *row;
+ GtkWidget *eject_button;
+ GtkWidget *event_box;
check_unmount_and_eject (mount, volume, drive,
&show_unmount, &show_eject);
@@ -510,26 +428,36 @@ add_place (GtkPlacesSidebar *sidebar,
show_eject_button = (show_unmount || show_eject);
tooltip_escaped = g_markup_escape_text (tooltip, -1);
-
- gtk_list_store_append (sidebar->store, &iter);
- gtk_list_store_set (sidebar->store, &iter,
- PLACES_SIDEBAR_COLUMN_GICON, icon,
- PLACES_SIDEBAR_COLUMN_NAME, name,
- PLACES_SIDEBAR_COLUMN_URI, uri,
- PLACES_SIDEBAR_COLUMN_DRIVE, drive,
- PLACES_SIDEBAR_COLUMN_VOLUME, volume,
- PLACES_SIDEBAR_COLUMN_MOUNT, mount,
- PLACES_SIDEBAR_COLUMN_ROW_TYPE, place_type,
- PLACES_SIDEBAR_COLUMN_INDEX, index,
- PLACES_SIDEBAR_COLUMN_EJECT, show_eject_button,
- PLACES_SIDEBAR_COLUMN_NO_EJECT, !show_eject_button,
- PLACES_SIDEBAR_COLUMN_BOOKMARK, place_type != PLACES_BOOKMARK,
- PLACES_SIDEBAR_COLUMN_TOOLTIP, tooltip_escaped,
- PLACES_SIDEBAR_COLUMN_SECTION_TYPE, section_type,
- PLACES_SIDEBAR_COLUMN_SENSITIVE, TRUE,
- -1);
+ row = g_object_new (GTK_TYPE_SIDEBAR_ROW,
+ "sidebar", sidebar,
+ "icon", icon,
+ "label", name,
+ "tooltip", tooltip_escaped,
+ "ejectable", show_eject_button,
+ "order-index", index,
+ "section-type", section_type,
+ "place-type", place_type,
+ "uri", uri,
+ "drive", drive,
+ "volume", volume,
+ "mount", mount,
+ NULL);
g_free (tooltip_escaped);
+ g_object_get (row,
+ "eject-button", &eject_button,
+ "event-box", &event_box,
+ NULL);
+ g_signal_connect_swapped (eject_button, "clicked", G_CALLBACK (eject_or_unmount_bookmark), row);
+ /* Needs event box since GtkListBoxRow doesn't have a GdkWindow associated that can
+ * listen events */
+ g_signal_connect (event_box, "button-press-event", G_CALLBACK (on_button_press_event), row);
+ g_signal_connect (event_box, "button-release-event", G_CALLBACK (on_button_release_event), row);
+
+ gtk_container_add (GTK_CONTAINER (sidebar->list_box), GTK_WIDGET (row));
+ gtk_widget_show_all (row);
+
+ return row;
}
static GIcon *
@@ -657,7 +585,6 @@ add_special_dirs (GtkPlacesSidebar *sidebar)
path_is_home_dir (path) ||
g_list_find_custom (dirs, path, (GCompareFunc) g_strcmp0) != NULL)
continue;
-
root = g_file_new_for_path (path);
@@ -737,32 +664,30 @@ static gboolean
file_is_shown (GtkPlacesSidebar *sidebar,
GFile *file)
{
- GtkTreeIter iter;
gchar *uri;
+ GList *rows;
+ GList *l;
+ gboolean found = FALSE;
- if (!gtk_tree_model_get_iter_first (GTK_TREE_MODEL (sidebar->store), &iter))
- return FALSE;
-
- do
+ rows = gtk_container_get_children (GTK_CONTAINER (sidebar->list_box));
+ l = rows;
+ while (l != NULL && !found)
{
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
- PLACES_SIDEBAR_COLUMN_URI, &uri,
- -1);
+ g_object_get (GTK_SIDEBAR_ROW (l->data), "uri", &uri, NULL);
if (uri)
{
GFile *other;
- gboolean found;
other = g_file_new_for_uri (uri);
- g_free (uri);
found = g_file_equal (file, other);
g_object_unref (other);
- if (found)
- return TRUE;
}
+
+ l = l->next;
}
- while (gtk_tree_model_iter_next (GTK_TREE_MODEL (sidebar->store), &iter));
- return FALSE;
+ g_list_free (rows);
+
+ return found;
}
static void
@@ -835,17 +760,6 @@ add_application_shortcuts (GtkPlacesSidebar *sidebar)
}
}
-static gboolean
-get_selected_iter (GtkPlacesSidebar *sidebar,
- GtkTreeIter *iter)
-{
- GtkTreeSelection *selection;
-
- selection = gtk_tree_view_get_selection (sidebar->tree_view);
-
- return gtk_tree_selection_get_selected (selection, NULL, iter);
-}
-
typedef struct {
GtkPlacesSidebar *sidebar;
int index;
@@ -913,8 +827,6 @@ out:
static void
update_places (GtkPlacesSidebar *sidebar)
{
- GtkTreeIter iter;
- GVolumeMonitor *volume_monitor;
GList *mounts, *l, *ll;
GMount *mount;
GList *drives;
@@ -924,17 +836,19 @@ update_places (GtkPlacesSidebar *sidebar)
GSList *bookmarks, *sl;
gint index;
gchar *original_uri, *mount_uri, *name, *identifier;
+ GtkListBoxRow *selected;
gchar *home_uri;
GIcon *icon;
GFile *root;
gchar *tooltip;
GList *network_mounts, *network_volumes;
+ GIcon *new_bookmark_icon;
+ GtkStyleContext *context;
/* save original selection */
- if (get_selected_iter (sidebar, &iter))
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store),
- &iter,
- PLACES_SIDEBAR_COLUMN_URI, &original_uri, -1);
+ selected = gtk_list_box_get_selected_row (GTK_LIST_BOX (sidebar->list_box));
+ if (selected)
+ g_object_get (GTK_SIDEBAR_ROW (selected), "uri", &original_uri, NULL);
else
original_uri = NULL;
@@ -943,16 +857,16 @@ update_places (GtkPlacesSidebar *sidebar)
g_object_unref (sidebar->cancellable);
sidebar->cancellable = g_cancellable_new ();
- gtk_list_store_clear (sidebar->store);
-
- sidebar->devices_header_added = FALSE;
- sidebar->bookmarks_header_added = FALSE;
+ /* Reset drag state, just in case we update the places while dragging or
+ * ending a drag */
+ stop_drop_feedback (sidebar);
+ gtk_container_foreach (GTK_CONTAINER (sidebar->list_box),
+ (GtkCallback) gtk_widget_destroy,
+ NULL);
network_mounts = network_volumes = NULL;
- volume_monitor = sidebar->volume_monitor;
-
- /* add built-in bookmarks */
+ /* add built-in places */
if (should_show_recent (sidebar))
{
mount_uri = "recent:///";
@@ -1024,7 +938,7 @@ update_places (GtkPlacesSidebar *sidebar)
add_application_shortcuts (sidebar);
/* go through all connected drives */
- drives = g_volume_monitor_get_connected_drives (volume_monitor);
+ drives = g_volume_monitor_get_connected_drives (sidebar->volume_monitor);
for (l = drives; l != NULL; l = l->next)
{
@@ -1123,7 +1037,7 @@ update_places (GtkPlacesSidebar *sidebar)
g_list_free (drives);
/* add all volumes that is not associated with a drive */
- volumes = g_volume_monitor_get_volumes (volume_monitor);
+ volumes = g_volume_monitor_get_volumes (sidebar->volume_monitor);
for (l = volumes; l != NULL; l = l->next)
{
volume = l->data;
@@ -1175,13 +1089,12 @@ update_places (GtkPlacesSidebar *sidebar)
NULL, volume, NULL, 0, name);
g_object_unref (icon);
g_free (name);
- }
+ }
g_object_unref (volume);
}
g_list_free (volumes);
/* file system root */
-
mount_uri = "file:///"; /* No need to strdup */
icon = g_themed_icon_new_with_default_fallbacks (ICON_NAME_FILESYSTEM);
add_place (sidebar, PLACES_BUILT_IN,
@@ -1192,7 +1105,7 @@ update_places (GtkPlacesSidebar *sidebar)
g_object_unref (icon);
/* add mounts that has no volume (/etc/mtab mounts, ftp, sftp,...) */
- mounts = g_volume_monitor_get_mounts (volume_monitor);
+ mounts = g_volume_monitor_get_mounts (sidebar->volume_monitor);
for (l = mounts; l != NULL; l = l->next)
{
@@ -1236,7 +1149,6 @@ update_places (GtkPlacesSidebar *sidebar)
g_list_free (mounts);
/* add bookmarks */
-
bookmarks = _gtk_bookmarks_manager_list_bookmarks (sidebar->bookmarks_manager);
for (sl = bookmarks, index = 0; sl; sl = sl->next, index++)
@@ -1275,11 +1187,20 @@ update_places (GtkPlacesSidebar *sidebar)
g_slist_foreach (bookmarks, (GFunc) g_object_unref, NULL);
g_slist_free (bookmarks);
+ /* Add new bookmark row */
+ new_bookmark_icon = g_themed_icon_new ("bookmark-new-symbolic");
+ sidebar->new_bookmark_row = add_place (sidebar, PLACES_DROP_FEEDBACK,
+ SECTION_BOOKMARKS,
+ _("New bookmark"), new_bookmark_icon, NULL,
+ NULL, NULL, NULL, 0,
+ _("Add a new bookmark"));
+ context = gtk_widget_get_style_context (sidebar->new_bookmark_row);
+ gtk_style_context_add_class (context, "sidebar-new-bookmark-row");
+ g_object_unref (new_bookmark_icon);
+
/* network */
if (!sidebar->local_only)
{
- add_heading (sidebar, SECTION_NETWORK, _("Network"));
-
mount_uri = "network:///";
icon = g_themed_icon_new_with_default_fallbacks (ICON_NAME_NETWORK);
add_place (sidebar, PLACES_BUILT_IN,
@@ -1351,6 +1272,10 @@ update_places (GtkPlacesSidebar *sidebar)
g_list_free_full (network_volumes, g_object_unref);
g_list_free_full (network_mounts, g_object_unref);
+ gtk_widget_show_all (GTK_WIDGET (sidebar));
+ /* We want this hidden by default, but need to do it after the show_all call */
+ gtk_sidebar_row_hide (GTK_SIDEBAR_ROW (sidebar->new_bookmark_row), TRUE);
+
/* restore original selection */
if (original_uri)
{
@@ -1359,283 +1284,124 @@ update_places (GtkPlacesSidebar *sidebar)
restore = g_file_new_for_uri (original_uri);
gtk_places_sidebar_set_location (sidebar, restore);
g_object_unref (restore);
-
- g_free (original_uri);
- }
-}
-
-static gboolean
-over_eject_button (GtkPlacesSidebar *sidebar,
- gint x,
- gint y,
- GtkTreePath **path)
-{
- GtkTreeViewColumn *column;
- gint width, x_offset, hseparator;
- gint eject_button_size;
- gboolean show_eject;
- GtkTreeIter iter;
- GtkTreeModel *model;
-
- *path = NULL;
- model = gtk_tree_view_get_model (sidebar->tree_view);
-
- if (gtk_tree_view_get_path_at_pos (sidebar->tree_view,
- x, y, path, &column, NULL, NULL))
- {
- gtk_tree_model_get_iter (model, &iter, *path);
- gtk_tree_model_get (model, &iter,
- PLACES_SIDEBAR_COLUMN_EJECT, &show_eject,
- -1);
-
- if (!show_eject)
- goto out;
-
- gtk_widget_style_get (GTK_WIDGET (sidebar->tree_view),
- "horizontal-separator", &hseparator,
- NULL);
-
- /* Reload cell attributes for this particular row */
- gtk_tree_view_column_cell_set_cell_data (column,
- model, &iter, FALSE, FALSE);
-
- gtk_tree_view_column_cell_get_position (column,
- sidebar->eject_icon_cell_renderer,
- &x_offset, &width);
-
- eject_button_size = get_icon_size (sidebar);
-
- /* This is kinda weird, but we have to do it to workaround expanding
- * the eject cell renderer (even thought we told it not to) and we
- * then had to set it right-aligned
- */
- x_offset += width - hseparator - EJECT_BUTTON_XPAD - eject_button_size;
-
- if (x - x_offset >= 0 && x - x_offset <= eject_button_size)
- return TRUE;
}
-
- out:
- g_clear_pointer (path, gtk_tree_path_free);
-
- return FALSE;
-}
-
-static gboolean
-clicked_eject_button (GtkPlacesSidebar *sidebar,
- GtkTreePath **path)
-{
- GdkEvent *event;
-
- event = gtk_get_current_event ();
-
- if (event &&
- (event->type == GDK_BUTTON_PRESS || event->type == GDK_BUTTON_RELEASE) &&
- over_eject_button (sidebar, ((GdkEventButton *)event)->x, ((GdkEventButton *)event)->y, path))
- return TRUE;
-
- return FALSE;
}
static gboolean
-pos_is_into_or_before (GtkTreeViewDropPosition pos)
-{
- return (pos == GTK_TREE_VIEW_DROP_BEFORE || pos == GTK_TREE_VIEW_DROP_INTO_OR_BEFORE);
-}
-
-static void
-update_possible_drop_targets (GtkPlacesSidebar *sidebar,
- gboolean dragging)
+check_valid_drop_target (GtkPlacesSidebar *sidebar,
+ GtkSidebarRow *row,
+ GdkDragContext *context)
{
- GtkTreeIter iter;
- PlaceType place_type;
+ GtkPlacesSidebarPlaceType place_type;
+ GtkPlacesSidebarSectionType section_type;
+ gboolean valid = FALSE;
gchar *uri;
- gboolean sensitive;
-
- if (!gtk_tree_model_get_iter_first (GTK_TREE_MODEL (sidebar->store), &iter))
- return;
+ GFile *dest_file;
+ gint drag_action;
- do
- {
- sensitive = TRUE;
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
- PLACES_SIDEBAR_COLUMN_ROW_TYPE, &place_type,
- PLACES_SIDEBAR_COLUMN_URI, &uri,
- -1);
- if (dragging)
- {
- switch (place_type)
- {
- case PLACES_CONNECT_TO_SERVER:
- sensitive = FALSE;
- break;
- case PLACES_BUILT_IN:
- if (g_strcmp0 (uri, "recent:///") == 0)
- sensitive = FALSE;
-
- break;
- default:
- break;
- }
- }
+ if (row == NULL)
+ return FALSE;
- gtk_list_store_set (sidebar->store, &iter,
- PLACES_SIDEBAR_COLUMN_SENSITIVE, sensitive,
- -1);
- g_free (uri);
- }
- while (gtk_tree_model_iter_next (GTK_TREE_MODEL (sidebar->store), &iter));
-}
+ g_object_get (row,
+ "place-type", &place_type,
+ "section_type", &section_type,
+ "uri", &uri,
+ NULL);
-/* Computes the appropriate row and position for dropping */
-static gboolean
-compute_drop_position (GtkTreeView *tree_view,
- gint x,
- gint y,
- GtkTreePath **path,
- GtkTreeViewDropPosition *pos,
- GtkPlacesSidebar *sidebar)
-{
- GtkTreeModel *model;
- GtkTreeIter iter;
- PlaceType place_type;
- SectionType section_type;
- gboolean drop_possible;
-
- if (!gtk_tree_view_get_dest_row_at_pos (tree_view, x, y, path, pos))
+ if (place_type == PLACES_CONNECT_TO_SERVER)
return FALSE;
- model = gtk_tree_view_get_model (tree_view);
+ if (place_type == PLACES_DROP_FEEDBACK)
+ return TRUE;
- gtk_tree_model_get_iter (model, &iter, *path);
- gtk_tree_model_get (model, &iter,
- PLACES_SIDEBAR_COLUMN_ROW_TYPE, &place_type,
- PLACES_SIDEBAR_COLUMN_SECTION_TYPE, &section_type,
- -1);
+ /* Disallow drops on recent:/// */
+ if (place_type == PLACES_BUILT_IN)
+ {
+ gchar *uri;
- drop_possible = TRUE;
+ g_object_get (row, "uri", &uri, NULL);
- /* Normalize drops on the feedback row */
- if (place_type == PLACES_DROP_FEEDBACK)
- {
- *pos = GTK_TREE_VIEW_DROP_INTO_OR_BEFORE;
- goto out;
+ if (g_strcmp0 (uri, "recent:///") == 0)
+ return FALSE;
}
- /* Never drop on headings, but special case the bookmarks heading,
- * so we can drop bookmarks in between it and the first bookmark.
- */
- if (place_type == PLACES_HEADING && section_type != SECTION_BOOKMARKS)
- drop_possible = FALSE;
-
/* Dragging a bookmark? */
if (sidebar->drag_data_received &&
- sidebar->drag_data_info == GTK_TREE_MODEL_ROW)
+ sidebar->drag_data_info == DND_GTK_SIDEBAR_ROW)
{
/* Don't allow reordering bookmarks into non-bookmark areas */
- if (section_type != SECTION_BOOKMARKS)
- drop_possible = FALSE;
-
- /* Bookmarks can only be reordered. Disallow dropping directly
- * into them; only allow dropping between them.
- */
- if (place_type == PLACES_HEADING)
- {
- if (pos_is_into_or_before (*pos))
- drop_possible = FALSE;
- else
- *pos = GTK_TREE_VIEW_DROP_AFTER;
- }
- else
- {
- if (pos_is_into_or_before (*pos))
- *pos = GTK_TREE_VIEW_DROP_BEFORE;
- else
- *pos = GTK_TREE_VIEW_DROP_AFTER;
- }
+ valid = section_type == SECTION_BOOKMARKS;
}
else
- {
+ {
/* Dragging a file */
-
- /* Outside the bookmarks section, URIs can only be dropped
- * directly into places items. Inside the bookmarks section,
- * they can be dropped between items (to create new bookmarks)
- * or in items themselves (to request a move/copy file
- * operation).
- */
- if (section_type != SECTION_BOOKMARKS)
- *pos = GTK_TREE_VIEW_DROP_INTO_OR_BEFORE;
- else
+ if (context)
{
- if (place_type == PLACES_HEADING)
+ if (uri != NULL)
{
- if (pos_is_into_or_before (*pos))
- drop_possible = FALSE;
- else
- *pos = GTK_TREE_VIEW_DROP_AFTER;
+ dest_file = g_file_new_for_uri (uri);
+ drag_action = emit_drag_action_requested (sidebar, context, dest_file, sidebar->drag_list);
+ valid = drag_action > 0;
+
+ g_object_unref (dest_file);
}
+ else
+ {
+ valid = FALSE;
+ }
+ }
+ else
+ {
+ /* We cannot discern if it is valid or not because there is not drag
+ * context available to ask the client.
+ * Simply make insensitive the drop targets we know are not valid for
+ * files, that are the ones remaining.
+ */
+ valid = TRUE;
}
}
- /* Disallow drops on recent:/// */
- if (place_type == PLACES_BUILT_IN)
- {
- gchar *uri;
-
- gtk_tree_model_get (model, &iter,
- PLACES_SIDEBAR_COLUMN_URI, &uri,
- -1);
-
- if (g_strcmp0 (uri, "recent:///") == 0)
- drop_possible = FALSE;
+ return valid;
+}
- g_free (uri);
- }
+static void
+update_possible_drop_targets (GtkPlacesSidebar *sidebar,
+ gboolean dragging,
+ GdkDragContext *context)
+{
+ GList *rows;
+ GList *l;
+ gboolean sensitive;
-out:
+ rows = gtk_container_get_children (GTK_CONTAINER (sidebar->list_box));
- if (!drop_possible)
+ for (l = rows; l != NULL; l = l->next)
{
- gtk_tree_path_free (*path);
- *path = NULL;
- return FALSE;
+ sensitive = !dragging || check_valid_drop_target (sidebar, GTK_SIDEBAR_ROW (l->data), context);
+ g_object_set (GTK_SIDEBAR_ROW (l->data), "sensitive", sensitive, NULL);
}
- return TRUE;
+ g_list_free (rows);
}
static gboolean
-get_drag_data (GtkTreeView *tree_view,
+get_drag_data (GtkWidget *list_box,
GdkDragContext *context,
guint time)
{
GdkAtom target;
- target = gtk_drag_dest_find_target (GTK_WIDGET (tree_view),
- context,
- NULL);
+ target = gtk_drag_dest_find_target (list_box, context, NULL);
if (target == GDK_NONE)
return FALSE;
- gtk_drag_get_data (GTK_WIDGET (tree_view),
- context, target, time);
+ gtk_drag_get_data (list_box, context, target, time);
return TRUE;
}
static void
-remove_switch_location_timer (GtkPlacesSidebar *sidebar)
-{
- if (sidebar->switch_location_timer != 0)
- {
- g_source_remove (sidebar->switch_location_timer);
- sidebar->switch_location_timer = 0;
- }
-}
-
-static void
free_drag_data (GtkPlacesSidebar *sidebar)
{
sidebar->drag_data_received = FALSE;
@@ -1646,203 +1412,234 @@ free_drag_data (GtkPlacesSidebar *sidebar)
sidebar->drag_list = NULL;
}
- remove_switch_location_timer (sidebar);
-
- g_free (sidebar->drop_target_uri);
- sidebar->drop_target_uri = NULL;
}
-static gboolean
-switch_location_timer (gpointer user_data)
+static void
+start_drop_feedback (GtkPlacesSidebar *sidebar,
+ GtkSidebarRow *row,
+ GdkDragContext *context)
{
- GtkPlacesSidebar *sidebar = GTK_PLACES_SIDEBAR (user_data);
- GFile *location;
-
- sidebar->switch_location_timer = 0;
-
- location = g_file_new_for_uri (sidebar->drop_target_uri);
- emit_open_location (sidebar, location, 0);
- g_object_unref (location);
+ if (sidebar->drag_data_info != DND_GTK_SIDEBAR_ROW)
+ {
+ gtk_sidebar_row_reveal (GTK_SIDEBAR_ROW (sidebar->new_bookmark_row));
+ /* If the state is permanent, don't change it. Is the application that
+ * controls this */
+ if (sidebar->drop_state != DROP_STATE_NEW_BOOKMARK_ARMED_PERMANENT)
+ sidebar->drop_state = DROP_STATE_NEW_BOOKMARK_ARMED;
+ }
- return FALSE;
+ update_possible_drop_targets (sidebar, TRUE, context);
}
static void
-check_switch_location_timer (GtkPlacesSidebar *sidebar,
- const gchar *uri)
+stop_drop_feedback (GtkPlacesSidebar *sidebar)
{
- if (g_strcmp0 (uri, sidebar->drop_target_uri) == 0)
- return;
+ update_possible_drop_targets (sidebar, FALSE, NULL);
- remove_switch_location_timer (sidebar);
-
- g_free (sidebar->drop_target_uri);
- sidebar->drop_target_uri = NULL;
+ free_drag_data (sidebar);
- if (uri != NULL)
+ if (sidebar->drop_state != DROP_STATE_NEW_BOOKMARK_ARMED_PERMANENT &&
+ sidebar->new_bookmark_row != NULL)
{
- sidebar->drop_target_uri = g_strdup (uri);
- sidebar->switch_location_timer = gdk_threads_add_timeout (TIMEOUT_EXPAND, switch_location_timer, sidebar);
- g_source_set_name_by_id (sidebar->switch_location_timer, "[gtk+] switch_location_timer");
+ gtk_sidebar_row_hide (GTK_SIDEBAR_ROW (sidebar->new_bookmark_row), FALSE);
+ sidebar->drop_state = DROP_STATE_NORMAL;
}
-}
-static void
-remove_drop_bookmark_feedback_row (GtkPlacesSidebar *sidebar)
-{
- if (sidebar->drop_state != DROP_STATE_NORMAL)
+ if (sidebar->drag_row != NULL)
{
- gboolean success;
- GtkTreeIter iter;
- int bookmarks_index;
-
- bookmarks_index = bookmarks_get_first_index (sidebar);
-
- success = gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (sidebar->store), &iter, NULL, bookmarks_index);
- g_assert (success);
- gtk_list_store_remove (sidebar->store, &iter);
+ gtk_widget_show (sidebar->drag_row);
+ sidebar->drag_row = NULL;
+ }
- sidebar->drop_state = DROP_STATE_NORMAL;
+ if (sidebar->row_placeholder != NULL)
+ {
+ gtk_widget_destroy (sidebar->row_placeholder);
+ sidebar->row_placeholder = NULL;
}
+
+ sidebar->dragging_over = FALSE;
+ sidebar->drag_data_info = DND_UNKNOWN;
}
-static void
-show_new_bookmark_row (GtkPlacesSidebar *sidebar,
- GtkTreePath *path)
+static gboolean
+on_motion_notify_event (GtkWidget *widget,
+ GdkEventMotion *event,
+ gpointer user_data)
{
- GtkTreeIter iter;
- int bookmarks_index;
- gint drop_target_index;
- GtkTreePath *new_bookmark_path;
- GIcon *new_bookmark_icon;
+ GtkPlacesSidebar *sidebar = GTK_PLACES_SIDEBAR (user_data);
- bookmarks_index = bookmarks_get_first_index (sidebar);
+ if (sidebar->drag_row == NULL || sidebar->dragging_over)
+ {
+ return FALSE;
+ }
- /* Add the row if it doesn't exists yet */
- if (sidebar->drop_state == DROP_STATE_NORMAL)
+ if (!(event->state & GDK_BUTTON1_MASK))
{
- new_bookmark_icon = g_themed_icon_new ("bookmark-new-symbolic");
- gtk_list_store_insert_with_values (sidebar->store, &iter, bookmarks_index,
- PLACES_SIDEBAR_COLUMN_ROW_TYPE, PLACES_DROP_FEEDBACK,
- PLACES_SIDEBAR_COLUMN_SECTION_TYPE, SECTION_BOOKMARKS,
- PLACES_SIDEBAR_COLUMN_GICON, new_bookmark_icon,
- PLACES_SIDEBAR_COLUMN_NAME, _("New bookmark"),
- PLACES_SIDEBAR_COLUMN_INDEX, bookmarks_index,
- PLACES_SIDEBAR_COLUMN_NO_EJECT, TRUE,
- -1);
- g_object_unref (new_bookmark_icon);
+ sidebar->drag_row = NULL;
+
+ return FALSE;
}
- /* If the state is permanent, don't change it. Is the application that
- * controls this */
- if (sidebar->drop_state != DROP_STATE_NEW_BOOKMARK_ARMED_PERMANENT)
- sidebar->drop_state = DROP_STATE_NEW_BOOKMARK_ARMED;
+ if (gtk_drag_check_threshold (widget,
+ sidebar->drag_root_x, sidebar->drag_root_y,
+ event->x_root, event->y_root))
+ {
+ sidebar->dragging_over = TRUE;
- /* Highlight the new bookmark row */
- if (path != NULL)
- {
- drop_target_index = gtk_tree_path_get_indices (path)[0];
- if (drop_target_index == bookmarks_index)
- {
- new_bookmark_path = gtk_tree_path_new_from_indices (bookmarks_index, -1);
- gtk_tree_view_set_drag_dest_row (sidebar->tree_view, new_bookmark_path, GTK_TREE_VIEW_DROP_INTO_OR_AFTER);
- gtk_tree_path_free (new_bookmark_path);
- }
+ gtk_drag_begin_with_coordinates (widget, sidebar->source_targets, GDK_ACTION_MOVE,
+ GDK_BUTTON_PRIMARY, (GdkEvent*)event,
+ -1, -1);
}
+
+ return FALSE;
}
static void
-start_drop_feedback (GtkPlacesSidebar *sidebar,
- GtkTreePath *path,
- GtkTreeViewDropPosition pos,
- gboolean drop_as_bookmarks)
+drag_begin_callback (GtkWidget *widget,
+ GdkDragContext *context,
+ gpointer user_data)
{
- if (drop_as_bookmarks)
- show_new_bookmark_row (sidebar, path);
- else
- gtk_tree_view_set_drag_dest_row (sidebar->tree_view, path, pos);
+ GtkPlacesSidebar *sidebar = GTK_PLACES_SIDEBAR (user_data);
+ GtkAllocation allocation;
+ GtkWidget *drag_widget;
+ GtkWidget *window;
+
+ gtk_widget_get_allocation (sidebar->drag_row, &allocation);
+ gtk_widget_hide (sidebar->drag_row);
+
+ drag_widget = GTK_WIDGET (gtk_sidebar_row_clone (GTK_SIDEBAR_ROW (sidebar->drag_row)));
+ window = gtk_window_new (GTK_WINDOW_POPUP);
+ sidebar->drag_row_height = allocation.height;
+ gtk_widget_set_size_request (window, allocation.width, allocation.height);
+
+ gtk_container_add (GTK_CONTAINER (window), drag_widget);
+ gtk_widget_show_all (window);
+ gtk_widget_set_opacity (window, 0.8);
- update_possible_drop_targets (sidebar, TRUE);
+ gtk_drag_set_icon_widget (context,
+ window,
+ sidebar->drag_row_x,
+ sidebar->drag_row_y);
}
-static void
-stop_drop_feedback (GtkPlacesSidebar *sidebar)
+static GtkWidget *
+create_placeholder_row (GtkPlacesSidebar *sidebar)
{
- gtk_tree_view_set_drag_dest_row (sidebar->tree_view, NULL, 0);
- update_possible_drop_targets (sidebar, FALSE);
+ return g_object_new (GTK_TYPE_SIDEBAR_ROW,
+ "placeholder", TRUE,
+ NULL);
}
static gboolean
-drag_motion_callback (GtkTreeView *tree_view,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time,
- GtkPlacesSidebar *sidebar)
+drag_motion_callback (GtkWidget *widget,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint time,
+ gpointer user_data)
{
- GtkTreePath *path;
- GtkTreeViewDropPosition pos;
gint action;
- GtkTreeIter iter;
- gboolean res;
- gboolean drop_as_bookmarks;
+ GtkListBoxRow *row;
+ GtkPlacesSidebar *sidebar = GTK_PLACES_SIDEBAR (user_data);
+ GtkPlacesSidebarPlaceType place_type;
gchar *drop_target_uri = NULL;
+ gint row_index;
+ gint row_placeholder_index;
sidebar->dragging_over = TRUE;
-
action = 0;
- drop_as_bookmarks = FALSE;
- path = NULL;
+ row = gtk_list_box_get_row_at_y (GTK_LIST_BOX (sidebar->list_box), y);
- if (!sidebar->drag_data_received)
- {
- if (!get_drag_data (tree_view, context, time))
- goto out;
- }
+ gtk_list_box_drag_unhighlight_row (GTK_LIST_BOX (sidebar->list_box));
+
+ /* Nothing to do if no drag data */
+ if (!sidebar->drag_data_received &&
+ !get_drag_data (sidebar->list_box, context, time))
+ goto out;
- res = compute_drop_position (tree_view, x, y, &path, &pos, sidebar);
- if (!res)
+ /* Nothing to do if the target is not valid drop destination */
+ if (!check_valid_drop_target (sidebar, GTK_SIDEBAR_ROW (row), context))
goto out;
if (sidebar->drag_data_received &&
- sidebar->drag_data_info == GTK_TREE_MODEL_ROW)
+ sidebar->drag_data_info == DND_GTK_SIDEBAR_ROW)
{
/* Dragging bookmarks always moves them to another position in the bookmarks list */
action = GDK_ACTION_MOVE;
+ if (sidebar->row_placeholder == NULL)
+ {
+ sidebar->row_placeholder = create_placeholder_row (sidebar);
+ gtk_widget_show (sidebar->row_placeholder);
+ g_object_ref_sink (sidebar->row_placeholder);
+ }
+ else if (GTK_WIDGET (row) == sidebar->row_placeholder)
+ {
+ goto out;
+ }
+
+ if (gtk_widget_get_parent (sidebar->row_placeholder) != NULL)
+ {
+ gtk_container_remove (GTK_CONTAINER (sidebar->list_box),
+ sidebar->row_placeholder);
+ }
+
+ if (row != NULL)
+ {
+ gint dest_y, dest_x;
+
+ g_object_get (row, "order-index", &row_index, NULL);
+ g_object_get (sidebar->row_placeholder, "order-index", &row_placeholder_index, NULL);
+ /* We order the bookmarks sections based on the bookmark index that we
+ * set on the row as order-index property, but we have to deal with
+ * the placeholder row wanting to be between two consecutive bookmarks,
+ * with two consecutive order-index values which is the usual case.
+ * For that, in the list box sort func we give priority to the placeholder row,
+ * that means that if the index-order is the same as another bookmark
+ * the placeholder row goes before. However if we want to show it after
+ * the current row, for instance when the cursor is in the lower half
+ * of the row, we need to increase the order-index.
+ */
+ row_placeholder_index = row_index;
+ gtk_widget_translate_coordinates (widget, GTK_WIDGET (row),
+ x, y,
+ &dest_x, &dest_y);
+
+ if (dest_y > sidebar->drag_row_height / 2 && row_index > 0)
+ row_placeholder_index++;
+ }
+ else
+ {
+ /* If the user is dragging over an area that has no row, place the row
+ * placeholder in the last position */
+ row_placeholder_index = G_MAXINT32;
+ }
+
+ g_object_set (sidebar->row_placeholder, "order-index", row_placeholder_index, NULL);
+
+ gtk_list_box_prepend (GTK_LIST_BOX (sidebar->list_box),
+ sidebar->row_placeholder);
}
else
{
+ gtk_list_box_drag_highlight_row (GTK_LIST_BOX (sidebar->list_box), row);
+
+ g_object_get (GTK_SIDEBAR_ROW (row),
+ "place-type", &place_type,
+ "uri", &drop_target_uri,
+ NULL);
/* URIs are being dragged. See if the caller wants to handle a
* file move/copy operation itself, or if we should only try to
* create bookmarks out of the dragged URIs.
*/
if (sidebar->drag_list != NULL)
{
- SectionType section_type;
- PlaceType place_type;
-
- gtk_tree_model_get_iter (GTK_TREE_MODEL (sidebar->store), &iter, path);
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store),
- &iter,
- PLACES_SIDEBAR_COLUMN_SECTION_TYPE, &section_type,
- PLACES_SIDEBAR_COLUMN_ROW_TYPE, &place_type,
- -1);
-
- if (place_type == PLACES_DROP_FEEDBACK ||
- (section_type == SECTION_BOOKMARKS &&
- (pos == GTK_TREE_VIEW_DROP_BEFORE || pos == GTK_TREE_VIEW_DROP_AFTER)))
+ if (place_type == PLACES_DROP_FEEDBACK)
{
action = GDK_ACTION_COPY;
- drop_as_bookmarks = TRUE;
}
-
- if (!drop_as_bookmarks)
+ else
{
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store),
- &iter,
- PLACES_SIDEBAR_COLUMN_URI, &drop_target_uri,
- -1);
-
+ /* uri may be NULL for unmounted volumes, for example, so we don't allow drops there */
if (drop_target_uri != NULL)
{
GFile *dest_file = g_file_new_for_uri (drop_target_uri);
@@ -1850,90 +1647,21 @@ drag_motion_callback (GtkTreeView *tree_view,
action = emit_drag_action_requested (sidebar, context, dest_file, sidebar->drag_list);
g_object_unref (dest_file);
- } /* uri may be NULL for unmounted volumes, for example, so we don't allow drops there */
+ }
}
}
}
out:
- if (action != 0)
- {
- check_switch_location_timer (sidebar, drop_target_uri);
- start_drop_feedback (sidebar, path, pos, drop_as_bookmarks);
- }
- else
- {
- remove_switch_location_timer (sidebar);
- stop_drop_feedback (sidebar);
- }
+ start_drop_feedback (sidebar, GTK_SIDEBAR_ROW (row), context);
- g_free (drop_target_uri);
-
- if (path != NULL)
- gtk_tree_path_free (path);
-
- g_signal_stop_emission_by_name (tree_view, "drag-motion");
+ g_signal_stop_emission_by_name (sidebar->list_box, "drag-motion");
gdk_drag_status (context, action, time);
return TRUE;
}
-static void
-on_drag_end (GtkPlacesSidebar *sidebar)
-{
- g_return_if_fail (GTK_IS_PLACES_SIDEBAR (sidebar));
-
- free_drag_data (sidebar);
- /* we could call finalize when disposing the widget */
- if (sidebar->tree_view != NULL)
- stop_drop_feedback (sidebar);
- remove_drop_bookmark_feedback_row (sidebar);
-
- if (sidebar->drag_leave_timeout_id)
- g_source_remove (sidebar->drag_leave_timeout_id);
-
- sidebar->drag_leave_timeout_id = 0;
- sidebar->drop_state = DROP_STATE_NORMAL;
- sidebar->dragging_over = FALSE;
-}
-
-static gboolean
-drag_leave_timeout_cb (gpointer data)
-{
- GtkPlacesSidebar *sidebar = GTK_PLACES_SIDEBAR (data);
-
- if (sidebar->drop_state != DROP_STATE_NEW_BOOKMARK_ARMED_PERMANENT)
- {
- on_drag_end (sidebar);
- return FALSE;
- }
- else
- {
- sidebar->dragging_over = FALSE;
- return TRUE;
- }
-}
-
-static void
-drag_leave_callback (GtkTreeView *tree_view,
- GdkDragContext *context,
- guint time,
- GtkPlacesSidebar *sidebar)
-{
- sidebar->dragging_over = FALSE;
-
- if (sidebar->drag_leave_timeout_id)
- g_source_remove (sidebar->drag_leave_timeout_id);
-
- sidebar->drag_leave_timeout_id = gdk_threads_add_timeout (500, drag_leave_timeout_cb, sidebar);
- g_source_set_name_by_id (sidebar->drag_leave_timeout_id, "[gtk+] drag_leave_timeout_cb");
-
- remove_switch_location_timer (sidebar);
-
- g_signal_stop_emission_by_name (tree_view, "drag-leave");
-}
-
/* Takes an array of URIs and turns it into a list of GFile */
static GList *
build_file_list_from_uris (const gchar **uris)
@@ -1953,27 +1681,20 @@ build_file_list_from_uris (const gchar **uris)
return g_list_reverse (result);
}
-/* Reorders the selected bookmark to the specified position */
+/* Reorders the bookmark to the specified position */
static void
reorder_bookmarks (GtkPlacesSidebar *sidebar,
+ GtkSidebarRow *row,
gint new_position)
{
- GtkTreeIter iter;
gchar *uri;
GFile *file;
- if (!get_selected_iter (sidebar, &iter))
- return;
-
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
- PLACES_SIDEBAR_COLUMN_URI, &uri,
- -1);
-
+ g_object_get (row, "uri", &uri, NULL);
file = g_file_new_for_uri (uri);
_gtk_bookmarks_manager_reorder_bookmark (sidebar->bookmarks_manager, file, new_position, NULL); /* NULL-GError */
g_object_unref (file);
- g_free (uri);
}
/* Creates bookmarks for the specified files at the given position in the bookmarks list */
@@ -2004,35 +1725,55 @@ drop_files_as_bookmarks (GtkPlacesSidebar *sidebar,
}
static void
-drag_data_received_callback (GtkWidget *widget,
+drag_data_get_callback (GtkWidget *widget,
+ GdkDragContext *context,
+ GtkSelectionData *data,
+ guint info,
+ guint time,
+ gpointer user_data)
+{
+ GtkPlacesSidebar *sidebar = GTK_PLACES_SIDEBAR (user_data);
+ GdkAtom target = gtk_selection_data_get_target (data);
+
+ if (target == gdk_atom_intern_static_string ("DND_GTK_SIDEBAR_ROW"))
+ {
+ gtk_selection_data_set (data,
+ target,
+ 8,
+ (void*)&sidebar->drag_row,
+ sizeof (gpointer));
+ }
+}
+
+static void
+drag_data_received_callback (GtkWidget *list_box,
GdkDragContext *context,
int x,
int y,
GtkSelectionData *selection_data,
guint info,
guint time,
- GtkPlacesSidebar *sidebar)
-{
- GtkTreeView *tree_view;
- GtkTreePath *tree_path;
- GtkTreeViewDropPosition tree_pos;
- GtkTreeIter iter;
- gint position;
- GtkTreeModel *model;
- PlaceType place_type;
- SectionType section_type;
+ gpointer user_data)
+{
+ gint target_order_index;
+ GtkPlacesSidebarPlaceType target_place_type;
+ GtkPlacesSidebarSectionType target_section_type;
+ gchar *target_uri;
gboolean success;
-
- tree_view = GTK_TREE_VIEW (widget);
+ GtkPlacesSidebar *sidebar = GTK_PLACES_SIDEBAR (user_data);
+ GtkListBoxRow *target_row;
if (!sidebar->drag_data_received)
{
if (gtk_selection_data_get_target (selection_data) != GDK_NONE &&
- info == TEXT_URI_LIST)
+ info == DND_TEXT_URI_LIST)
{
gchar **uris;
uris = gtk_selection_data_get_uris (selection_data);
+ /* Free spurious drag data from previous drags if present */
+ if (sidebar->drag_list != NULL)
+ g_list_free_full (sidebar->drag_list, g_object_unref);
sidebar->drag_list = build_file_list_from_uris ((const char **) uris);
g_strfreev (uris);
}
@@ -2044,48 +1785,42 @@ drag_data_received_callback (GtkWidget *widget,
sidebar->drag_data_info = info;
}
- g_signal_stop_emission_by_name (widget, "drag-data-received");
+ g_signal_stop_emission_by_name (list_box, "drag-data-received");
if (!sidebar->drop_occured)
return;
- /* Compute position */
- success = compute_drop_position (tree_view, x, y, &tree_path, &tree_pos, sidebar);
- if (!success)
- goto out;
+ target_row = gtk_list_box_get_row_at_y (GTK_LIST_BOX (sidebar->list_box), y);
- success = FALSE;
-
- if (sidebar->drag_data_info == GTK_TREE_MODEL_ROW)
- {
- /* A bookmark got reordered */
+ if (target_row == NULL)
+ return;
- model = gtk_tree_view_get_model (tree_view);
+ g_object_get (GTK_SIDEBAR_ROW (target_row),
+ "place-type", &target_place_type,
+ "section-type", &target_section_type,
+ "order-index", &target_order_index,
+ "uri", &target_uri,
+ NULL);
- if (!gtk_tree_model_get_iter (model, &iter, tree_path))
- goto out;
+ success = FALSE;
- gtk_tree_model_get (model, &iter,
- PLACES_SIDEBAR_COLUMN_SECTION_TYPE, &section_type,
- PLACES_SIDEBAR_COLUMN_ROW_TYPE, &place_type,
- PLACES_SIDEBAR_COLUMN_INDEX, &position,
- -1);
+ if (!check_valid_drop_target (sidebar, GTK_SIDEBAR_ROW (target_row), context))
+ goto out;
- if (section_type != SECTION_BOOKMARKS)
+ if (sidebar->drag_data_info == DND_GTK_SIDEBAR_ROW)
+ {
+ /* A bookmark got reordered */
+ if (target_section_type != SECTION_BOOKMARKS)
goto out;
- if (place_type == PLACES_HEADING)
- position = 0;
- else if (tree_pos == GTK_TREE_VIEW_DROP_AFTER)
- position++;
+ GtkWidget **source_row = (void*) gtk_selection_data_get_data (selection_data);
- reorder_bookmarks (sidebar, position);
+ reorder_bookmarks (sidebar, GTK_SIDEBAR_ROW (*source_row), target_order_index);
success = TRUE;
}
else
{
/* Dropping URIs! */
-
GdkDragAction real_action;
gchar **uris;
GList *source_file_list;
@@ -2098,62 +1833,25 @@ drag_data_received_callback (GtkWidget *widget,
if (real_action > 0)
{
- gchar *uri;
GFile *dest_file;
- gboolean drop_as_bookmarks;
-
- model = gtk_tree_view_get_model (tree_view);
-
- gtk_tree_model_get_iter (model, &iter, tree_path);
- gtk_tree_model_get (model, &iter,
- PLACES_SIDEBAR_COLUMN_SECTION_TYPE, &section_type,
- PLACES_SIDEBAR_COLUMN_ROW_TYPE, &place_type,
- PLACES_SIDEBAR_COLUMN_INDEX, &position,
- -1);
-
- drop_as_bookmarks = FALSE;
uris = gtk_selection_data_get_uris (selection_data);
source_file_list = build_file_list_from_uris ((const gchar **) uris);
- if (section_type == SECTION_BOOKMARKS)
+ if (target_place_type == PLACES_DROP_FEEDBACK)
{
- if (place_type == PLACES_HEADING)
- {
- position = 0;
- tree_pos = GTK_TREE_VIEW_DROP_BEFORE;
- }
-
- if (tree_pos == GTK_TREE_VIEW_DROP_AFTER)
- position++;
-
- if (tree_pos == GTK_TREE_VIEW_DROP_BEFORE ||
- tree_pos == GTK_TREE_VIEW_DROP_AFTER ||
- place_type == PLACES_DROP_FEEDBACK)
- {
- remove_drop_bookmark_feedback_row (sidebar);
- drop_files_as_bookmarks (sidebar, source_file_list, position);
- success = TRUE;
- drop_as_bookmarks = TRUE;
- }
+ drop_files_as_bookmarks (sidebar, source_file_list, target_order_index);
}
-
- if (!drop_as_bookmarks)
+ else
{
- gtk_tree_model_get_iter (model, &iter, tree_path);
- gtk_tree_model_get (model, &iter,
- PLACES_SIDEBAR_COLUMN_URI, &uri,
- -1);
-
- dest_file = g_file_new_for_uri (uri);
+ dest_file = g_file_new_for_uri (target_uri);
emit_drag_perform_drop (sidebar, dest_file, source_file_list, real_action);
- success = TRUE;
g_object_unref (dest_file);
- g_free (uri);
}
+ success = TRUE;
g_list_free_full (source_file_list, g_object_unref);
g_strfreev (uris);
}
@@ -2162,24 +1860,70 @@ drag_data_received_callback (GtkWidget *widget,
out:
sidebar->drop_occured = FALSE;
gtk_drag_finish (context, success, FALSE, time);
- on_drag_end (sidebar);
+ stop_drop_feedback (sidebar);
+}
- gtk_tree_path_free (tree_path);
+static void
+drag_end_callback (GtkWidget *widget,
+ GdkDragContext *context,
+ gpointer user_data)
+{
+ stop_drop_feedback (GTK_PLACES_SIDEBAR (user_data));
+}
+
+/* This functions is called every time the drag source leaves
+ * the sidebar widget.
+ * The problem is that, we start showing hints for drop when the source
+ * start being above the sidebar or when the application request so show
+ * drop hints, but at some moment we need to restore to normal
+ * state.
+ * One could think that here we could simply call stop_drop_feedback,
+ * but that's not true, because this function is called also before drag_drop,
+ * which needs the data from the drag so we cannot free the drag data here.
+ * So now one could think we could just do nothing here, and wait for
+ * drag-end or drag-failed signals and just stop_drop_feedback there. But that
+ * is also not true, since when the drag comes from a diferent widget than the
+ * sidebar, when the drag stops the last drag signal we receive is drag-leave.
+ * So here what we will do is restore the state of the sidebar as if no drag
+ * is being done (and if the application didnt request for permanent hints with
+ * gtk_places_sidebar_show_drop_hints) and we will free the drag data next time
+ * we build new drag data in drag_data_received.
+ */
+static void
+drag_leave_callback (GtkWidget *widget,
+ GdkDragContext *context,
+ guint time,
+ gpointer user_data)
+{
+ GtkPlacesSidebar *sidebar = GTK_PLACES_SIDEBAR (user_data);
+
+ if (sidebar->drop_state != DROP_STATE_NEW_BOOKMARK_ARMED_PERMANENT)
+ {
+ update_possible_drop_targets (sidebar, FALSE, context);
+ gtk_sidebar_row_hide (GTK_SIDEBAR_ROW (sidebar->new_bookmark_row), FALSE);
+ sidebar->drop_state = DROP_STATE_NORMAL;
+ }
+
+ sidebar->drag_data_received = FALSE;
+ sidebar->dragging_over = FALSE;
+ sidebar->drag_data_info = DND_UNKNOWN;
}
static gboolean
-drag_drop_callback (GtkTreeView *tree_view,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time,
- GtkPlacesSidebar *sidebar)
+drag_drop_callback (GtkWidget *list_box,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint time,
+ gpointer user_data)
{
gboolean retval = FALSE;
+ GtkPlacesSidebar *sidebar = GTK_PLACES_SIDEBAR (user_data);
sidebar->drop_occured = TRUE;
- retval = get_drag_data (tree_view, context, time);
- g_signal_stop_emission_by_name (tree_view, "drag-drop");
+ retval = get_drag_data (sidebar->list_box, context, time);
+ g_signal_stop_emission_by_name (sidebar->list_box, "drag-drop");
+
return retval;
}
@@ -2254,45 +1998,6 @@ check_visibility (GMount *mount,
}
typedef struct {
- PlaceType type;
- GDrive *drive;
- GVolume *volume;
- GMount *mount;
- gchar *uri;
-} SelectionInfo;
-
-static void
-get_selection_info (GtkPlacesSidebar *sidebar,
- SelectionInfo *info)
-{
- GtkTreeIter iter;
-
- info->type = PLACES_BUILT_IN;
- info->drive = NULL;
- info->volume = NULL;
- info->mount = NULL;
- info->uri = NULL;
-
- if (get_selected_iter (sidebar, &iter))
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
- PLACES_SIDEBAR_COLUMN_ROW_TYPE, &info->type,
- PLACES_SIDEBAR_COLUMN_DRIVE, &info->drive,
- PLACES_SIDEBAR_COLUMN_VOLUME, &info->volume,
- PLACES_SIDEBAR_COLUMN_MOUNT, &info->mount,
- PLACES_SIDEBAR_COLUMN_URI, &info->uri,
- -1);
-}
-
-static void
-free_selection_info (SelectionInfo *info)
-{
- g_clear_object (&info->drive);
- g_clear_object (&info->volume);
- g_clear_object (&info->mount);
- g_clear_pointer (&info->uri, g_free);
-}
-
-typedef struct {
GtkWidget *add_shortcut_item;
GtkWidget *remove_item;
GtkWidget *rename_item;
@@ -2306,9 +2011,8 @@ typedef struct {
} PopupMenuData;
static void
-check_popup_sensitivity (GtkPlacesSidebar *sidebar,
- PopupMenuData *data,
- SelectionInfo *info)
+check_popup_sensitivity (GtkSidebarRow *row,
+ PopupMenuData *data)
{
gboolean show_mount;
gboolean show_unmount;
@@ -2316,13 +2020,25 @@ check_popup_sensitivity (GtkPlacesSidebar *sidebar,
gboolean show_rescan;
gboolean show_start;
gboolean show_stop;
+ GtkPlacesSidebarPlaceType type;
+ GDrive *drive;
+ GVolume *volume;
+ GMount *mount;
+
+ g_object_get (row,
+ "place-type", &type,
+ "drive", &drive,
+ "volume", &volume,
+ "mount", &mount,
+ NULL);
- gtk_widget_set_visible (data->add_shortcut_item, (info->type == PLACES_MOUNTED_VOLUME));
+ gtk_widget_set_visible (data->add_shortcut_item, (type == PLACES_MOUNTED_VOLUME));
- gtk_widget_set_sensitive (data->remove_item, (info->type == PLACES_BOOKMARK));
- gtk_widget_set_sensitive (data->rename_item, (info->type == PLACES_BOOKMARK || info->type == PLACES_XDG_DIR));
+ gtk_widget_set_sensitive (data->remove_item, (type == PLACES_BOOKMARK));
+ gtk_widget_set_sensitive (data->rename_item, (type == PLACES_BOOKMARK ||
+ type == PLACES_XDG_DIR));
- check_visibility (info->mount, info->volume, info->drive,
+ check_visibility (mount, volume, drive,
&show_mount, &show_unmount, &show_eject, &show_rescan, &show_start, &show_stop);
gtk_widget_set_visible (data->separator_item, show_mount || show_unmount || show_eject);
@@ -2336,9 +2052,9 @@ check_popup_sensitivity (GtkPlacesSidebar *sidebar,
/* Adjust start/stop items to reflect the type of the drive */
gtk_menu_item_set_label (GTK_MENU_ITEM (data->start_item), _("_Start"));
gtk_menu_item_set_label (GTK_MENU_ITEM (data->stop_item), _("_Stop"));
- if ((show_start || show_stop) && info->drive != NULL)
+ if ((show_start || show_stop) && drive != NULL)
{
- switch (g_drive_get_start_stop_type (info->drive))
+ switch (g_drive_get_start_stop_type (drive))
{
case G_DRIVE_START_STOP_TYPE_SHUTDOWN:
/* start() for type G_DRIVE_START_STOP_TYPE_SHUTDOWN is normally not used */
@@ -2457,27 +2173,12 @@ mount_volume (GtkPlacesSidebar *sidebar,
}
static void
-open_selected_volume (GtkPlacesSidebar *sidebar,
- GtkTreeModel *model,
- GtkTreeIter *iter,
- GtkPlacesOpenFlags open_flags)
+open_drive (GtkPlacesSidebar *sidebar,
+ GDrive *drive,
+ GtkPlacesOpenFlags open_flags)
{
- GDrive *drive;
- GVolume *volume;
-
- gtk_tree_model_get (model, iter,
- PLACES_SIDEBAR_COLUMN_DRIVE, &drive,
- PLACES_SIDEBAR_COLUMN_VOLUME, &volume,
- -1);
-
- if (volume != NULL && !sidebar->mounting)
- {
- sidebar->mounting = TRUE;
- sidebar->go_to_after_mount_open_flags = open_flags;
- mount_volume (sidebar, volume);
- }
- else if (volume == NULL && drive != NULL &&
- (g_drive_can_start (drive) || g_drive_can_start_degraded (drive)))
+ if (drive != NULL &&
+ (g_drive_can_start (drive) || g_drive_can_start_degraded (drive)))
{
GMountOperation *mount_op;
@@ -2485,18 +2186,25 @@ open_selected_volume (GtkPlacesSidebar *sidebar,
g_drive_start (drive, G_DRIVE_START_NONE, mount_op, NULL, drive_start_from_bookmark_cb, NULL);
g_object_unref (mount_op);
}
+}
- if (drive != NULL)
- g_object_unref (drive);
-
- if (volume != NULL)
- g_object_unref (volume);
+static void
+open_volume (GtkPlacesSidebar *sidebar,
+ GVolume *volume,
+ GtkPlacesOpenFlags open_flags)
+{
+ if (volume != NULL && !sidebar->mounting)
+ {
+ sidebar->mounting = TRUE;
+ sidebar->go_to_after_mount_open_flags = open_flags;
+ mount_volume (sidebar, volume);
+ }
}
static void
-open_selected_uri (GtkPlacesSidebar *sidebar,
- const gchar *uri,
- GtkPlacesOpenFlags open_flags)
+open_uri (GtkPlacesSidebar *sidebar,
+ const gchar *uri,
+ GtkPlacesOpenFlags open_flags)
{
GFile *location;
@@ -2506,125 +2214,92 @@ open_selected_uri (GtkPlacesSidebar *sidebar,
}
static void
-open_selected_bookmark (GtkPlacesSidebar *sidebar,
- GtkTreeModel *model,
- GtkTreeIter *iter,
- GtkPlacesOpenFlags open_flags)
+open_row (GtkSidebarRow *row,
+ GtkPlacesOpenFlags open_flags)
{
gchar *uri;
- PlaceType place_type;
-
- if (!iter)
- return;
+ GDrive *drive;
+ GVolume *volume;
+ GtkPlacesSidebarPlaceType place_type;
+ GtkPlacesSidebar *sidebar;
- gtk_tree_model_get (model, iter,
- PLACES_SIDEBAR_COLUMN_URI, &uri,
- PLACES_SIDEBAR_COLUMN_ROW_TYPE, &place_type,
- -1);
+ g_object_get (row,
+ "sidebar", &sidebar,
+ "uri", &uri,
+ "place-type", &place_type,
+ "drive", &drive,
+ "volume", &volume,
+ NULL);
if (uri != NULL)
- {
- open_selected_uri (sidebar, uri, open_flags);
- g_free (uri);
- }
+ open_uri (sidebar, uri, open_flags);
else if (place_type == PLACES_CONNECT_TO_SERVER)
- {
- emit_show_connect_to_server (sidebar);
- }
+ emit_show_connect_to_server (sidebar);
else if (place_type == PLACES_ENTER_LOCATION)
- {
- emit_show_enter_location (sidebar);
- }
- else
- {
- open_selected_volume (sidebar, model, iter, open_flags);
- }
-}
-
-static void
-open_shortcut_from_menu (GtkPlacesSidebar *sidebar,
- GtkPlacesOpenFlags open_flags)
-{
- GtkTreeModel *model;
- GtkTreeIter iter;
- GtkTreePath *path = NULL;
-
- model = gtk_tree_view_get_model (sidebar->tree_view);
- gtk_tree_view_get_cursor (sidebar->tree_view, &path, NULL);
-
- if (path != NULL && gtk_tree_model_get_iter (model, &iter, path))
- open_selected_bookmark (sidebar, model, &iter, open_flags);
-
- gtk_tree_path_free (path);
+ emit_show_enter_location (sidebar);
+ else if (volume != NULL)
+ open_volume (sidebar, volume, open_flags);
+ else if (drive != NULL)
+ open_drive (sidebar, drive, open_flags);
}
/* Callback used for the "Open" menu item in the context menu */
static void
-open_shortcut_cb (GtkMenuItem *item,
- GtkPlacesSidebar *sidebar)
+open_shortcut_cb (GtkMenuItem *item,
+ GtkSidebarRow *row)
{
- open_shortcut_from_menu (sidebar, GTK_PLACES_OPEN_NORMAL);
+ open_row (row, GTK_PLACES_OPEN_NORMAL);
}
/* Callback used for the "Open in new tab" menu item in the context menu */
static void
-open_shortcut_in_new_tab_cb (GtkMenuItem *item,
- GtkPlacesSidebar *sidebar)
+open_shortcut_in_new_tab_cb (GtkMenuItem *item,
+ GtkSidebarRow *row)
{
- open_shortcut_from_menu (sidebar, GTK_PLACES_OPEN_NEW_TAB);
+ open_row (row, GTK_PLACES_OPEN_NEW_TAB);
}
/* Callback used for the "Open in new window" menu item in the context menu */
static void
-open_shortcut_in_new_window_cb (GtkMenuItem *item,
- GtkPlacesSidebar *sidebar)
+open_shortcut_in_new_window_cb (GtkMenuItem *item,
+ GtkSidebarRow *row)
{
- open_shortcut_from_menu (sidebar, GTK_PLACES_OPEN_NEW_WINDOW);
+ open_row (row, GTK_PLACES_OPEN_NEW_WINDOW);
}
/* Add bookmark for the selected item - just used from mount points */
static void
-add_shortcut_cb (GtkMenuItem *item,
- GtkPlacesSidebar *sidebar)
+add_shortcut_cb (GtkMenuItem *item,
+ GtkSidebarRow *row)
{
- GtkTreeModel *model;
- GtkTreeIter iter;
gchar *uri;
gchar *name;
GFile *location;
+ GtkPlacesSidebar *sidebar;
- model = gtk_tree_view_get_model (sidebar->tree_view);
+ g_object_get (row, "sidebar", &sidebar, "uri", &uri, "label", &name, NULL);
- if (get_selected_iter (sidebar, &iter))
- {
- gtk_tree_model_get (model, &iter,
- PLACES_SIDEBAR_COLUMN_URI, &uri,
- PLACES_SIDEBAR_COLUMN_NAME, &name,
- -1);
-
- if (uri == NULL)
- return;
+ if (uri == NULL)
+ return;
- location = g_file_new_for_uri (uri);
- if (_gtk_bookmarks_manager_insert_bookmark (sidebar->bookmarks_manager, location, -1, NULL))
- _gtk_bookmarks_manager_set_bookmark_label (sidebar->bookmarks_manager, location, name, NULL);
+ location = g_file_new_for_uri (uri);
+ if (_gtk_bookmarks_manager_insert_bookmark (sidebar->bookmarks_manager, location, -1, NULL))
+ _gtk_bookmarks_manager_set_bookmark_label (sidebar->bookmarks_manager, location, name, NULL);
- g_object_unref (location);
- g_free (uri);
- g_free (name);
- }
+ g_object_unref (location);
}
static void
rename_entry_changed (GtkEntry *entry,
GtkPlacesSidebar *sidebar)
{
- GtkTreeIter iter;
- PlaceType type;
+ GtkPlacesSidebarPlaceType type;
gchar *name;
gchar *uri;
const gchar *new_name;
gboolean found = FALSE;
+ GList *rows;
+ GList *l;
new_name = gtk_entry_get_text (GTK_ENTRY (sidebar->rename_entry));
@@ -2634,27 +2309,27 @@ rename_entry_changed (GtkEntry *entry,
gtk_label_set_label (GTK_LABEL (sidebar->rename_error), "");
return;
}
-
- gtk_tree_model_get_iter_first (GTK_TREE_MODEL (sidebar->store), &iter);
- do {
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
- PLACES_SIDEBAR_COLUMN_ROW_TYPE, &type,
- PLACES_SIDEBAR_COLUMN_URI, &uri,
- PLACES_SIDEBAR_COLUMN_NAME, &name,
- -1);
-
- if ((type == PLACES_XDG_DIR || type == PLACES_BOOKMARK) &&
- strcmp (uri, sidebar->rename_uri) != 0 &&
- strcmp (new_name, name) == 0)
- found = TRUE;
-
- g_free (name);
- g_free (uri);
- } while (gtk_tree_model_iter_next (GTK_TREE_MODEL (sidebar->store), &iter) && !found);
+ rows = gtk_container_get_children (GTK_CONTAINER (sidebar->list_box));
+ l = rows;
+ while (l != NULL && !found)
+ {
+ g_object_get (GTK_SIDEBAR_ROW (l->data),
+ "place-type", &type,
+ "uri", &uri,
+ "label", &name, NULL);
+ if ((type == PLACES_XDG_DIR || type == PLACES_BOOKMARK) &&
+ strcmp (uri, sidebar->rename_uri) != 0 &&
+ strcmp (new_name, name) == 0)
+ found = TRUE;
+
+ l = l->next;
+ }
gtk_widget_set_sensitive (sidebar->rename_button, !found);
gtk_label_set_label (GTK_LABEL (sidebar->rename_error),
found ? _("This name is already taken") : "");
+
+ g_list_free (rows);
}
static void
@@ -2731,88 +2406,61 @@ create_rename_popover (GtkPlacesSidebar *sidebar)
}
static void
-show_rename_popover (GtkPlacesSidebar *sidebar,
- GtkTreeIter *iter)
+show_rename_popover (GtkSidebarRow *row)
{
- GtkTreeViewColumn *column;
- GdkRectangle rect;
gchar *name;
gchar *uri;
- GtkTreePath *path;
+ GtkPlacesSidebar *sidebar;
- create_rename_popover (sidebar);
+ g_object_get (row, "sidebar", &sidebar, "label", &name, "uri", &uri, NULL);
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), iter,
- PLACES_SIDEBAR_COLUMN_NAME, &name,
- PLACES_SIDEBAR_COLUMN_URI, &uri,
- -1);
+ create_rename_popover (sidebar);
if (sidebar->rename_uri)
g_free (sidebar->rename_uri);
sidebar->rename_uri = uri;
- path = gtk_tree_model_get_path (GTK_TREE_MODEL (sidebar->store), iter);
- column = gtk_tree_view_get_column (GTK_TREE_VIEW (sidebar->tree_view), 0);
- gtk_tree_view_get_background_area (GTK_TREE_VIEW (sidebar->tree_view), path, column, &rect);
- gtk_tree_path_free (path);
-
gtk_entry_set_text (GTK_ENTRY (sidebar->rename_entry), name);
- gtk_popover_set_pointing_to (GTK_POPOVER (sidebar->rename_popover), &rect);
+ gtk_popover_set_relative_to (GTK_POPOVER (sidebar->rename_popover), GTK_WIDGET (row));
gtk_widget_show (sidebar->rename_popover);
gtk_widget_grab_focus (sidebar->rename_entry);
}
-/* Rename the selected bookmark */
static void
-rename_selected_bookmark (GtkPlacesSidebar *sidebar)
+rename_bookmark (GtkSidebarRow *row)
{
- GtkTreeIter iter;
- PlaceType type;
+ GtkPlacesSidebarPlaceType type;
+ GtkPlacesSidebar *sidebar;
- if (get_selected_iter (sidebar, &iter))
- {
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
- PLACES_SIDEBAR_COLUMN_ROW_TYPE, &type,
- -1);
+ g_object_get (row, "sidebar", &sidebar, "place-type", &type, NULL);
- if (type != PLACES_BOOKMARK && type != PLACES_XDG_DIR)
- return;
+ if (type != PLACES_BOOKMARK && type != PLACES_XDG_DIR)
+ return;
- show_rename_popover (sidebar, &iter);
- }
+ show_rename_popover (row);
}
static void
-rename_shortcut_cb (GtkMenuItem *item,
- GtkPlacesSidebar *sidebar)
+rename_shortcut_cb (GtkMenuItem *item,
+ GtkSidebarRow *row)
{
- rename_selected_bookmark (sidebar);
+ rename_bookmark (row);
}
-/* Removes the selected bookmarks */
static void
-remove_selected_bookmarks (GtkPlacesSidebar *sidebar)
+remove_bookmark (GtkSidebarRow *row)
{
- GtkTreeIter iter;
- PlaceType type;
+ GtkPlacesSidebarPlaceType type;
gchar *uri;
GFile *file;
+ GtkPlacesSidebar *sidebar;
- if (!get_selected_iter (sidebar, &iter))
- return;
-
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
- PLACES_SIDEBAR_COLUMN_ROW_TYPE, &type,
- -1);
+ g_object_get (row, "sidebar", &sidebar, "place-type", &type, "uri", &uri, NULL);
if (type != PLACES_BOOKMARK)
return;
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
- PLACES_SIDEBAR_COLUMN_URI, &uri,
- -1);
-
file = g_file_new_for_uri (uri);
_gtk_bookmarks_manager_remove_bookmark (sidebar->bookmarks_manager, file, NULL);
@@ -2821,31 +2469,22 @@ remove_selected_bookmarks (GtkPlacesSidebar *sidebar)
}
static void
-remove_shortcut_cb (GtkMenuItem *item,
- GtkPlacesSidebar *sidebar)
+remove_shortcut_cb (GtkMenuItem *item,
+ GtkSidebarRow *row)
{
- remove_selected_bookmarks (sidebar);
+ remove_bookmark (row);
}
static void
-mount_shortcut_cb (GtkMenuItem *item,
- GtkPlacesSidebar *sidebar)
+mount_shortcut_cb (GtkMenuItem *item,
+ GtkSidebarRow *row)
{
- GtkTreeIter iter;
GVolume *volume;
+ GtkPlacesSidebar *sidebar;
- if (!get_selected_iter (sidebar, &iter))
- return;
-
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
- PLACES_SIDEBAR_COLUMN_VOLUME, &volume,
- -1);
-
+ g_object_get (row, "sidebar", &sidebar, "volume", &volume, NULL);
if (volume != NULL)
- {
- mount_volume (sidebar, volume);
- g_object_unref (volume);
- }
+ mount_volume (sidebar, volume);
}
/* Callback used from g_mount_unmount_with_operation() */
@@ -3086,30 +2725,14 @@ do_unmount (GMount *mount,
}
static void
-do_unmount_selection (GtkPlacesSidebar *sidebar)
+unmount_shortcut_cb (GtkMenuItem *item,
+ GtkSidebarRow *row)
{
- GtkTreeIter iter;
+ GtkPlacesSidebar *sidebar;
GMount *mount;
- if (!get_selected_iter (sidebar, &iter))
- return;
-
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
- PLACES_SIDEBAR_COLUMN_MOUNT, &mount,
- -1);
-
- if (mount != NULL)
- {
- do_unmount (mount, sidebar);
- g_object_unref (mount);
- }
-}
-
-static void
-unmount_shortcut_cb (GtkMenuItem *item,
- GtkPlacesSidebar *sidebar)
-{
- do_unmount_selection (sidebar);
+ g_object_get (row, "sidebar", &sidebar, "mount", &mount, NULL);
+ do_unmount (mount, sidebar);
}
static void
@@ -3268,52 +2891,40 @@ do_eject (GMount *mount,
}
static void
-eject_shortcut_cb (GtkMenuItem *item,
- GtkPlacesSidebar *sidebar)
+eject_shortcut_cb (GtkMenuItem *item,
+ GtkSidebarRow *row)
{
- GtkTreeIter iter;
GMount *mount;
GVolume *volume;
GDrive *drive;
+ GtkPlacesSidebar *sidebar;
- if (!get_selected_iter (sidebar, &iter))
- return;
-
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
- PLACES_SIDEBAR_COLUMN_MOUNT, &mount,
- PLACES_SIDEBAR_COLUMN_VOLUME, &volume,
- PLACES_SIDEBAR_COLUMN_DRIVE, &drive,
- -1);
+ g_object_get (row,
+ "sidebar", &sidebar,
+ "mount", &mount,
+ "volume", &volume,
+ "drive", &drive,
+ NULL);
do_eject (mount, volume, drive, sidebar);
}
static gboolean
-eject_or_unmount_bookmark (GtkPlacesSidebar *sidebar,
- GtkTreePath *path)
+eject_or_unmount_bookmark (GtkSidebarRow *row)
{
- GtkTreeModel *model;
- GtkTreeIter iter;
gboolean can_unmount, can_eject;
GMount *mount;
GVolume *volume;
GDrive *drive;
gboolean ret;
+ GtkPlacesSidebar *sidebar;
- model = GTK_TREE_MODEL (sidebar->store);
-
- if (!path)
- return FALSE;
-
- if (!gtk_tree_model_get_iter (model, &iter, path))
- return FALSE;
-
- gtk_tree_model_get (model, &iter,
- PLACES_SIDEBAR_COLUMN_MOUNT, &mount,
- PLACES_SIDEBAR_COLUMN_VOLUME, &volume,
- PLACES_SIDEBAR_COLUMN_DRIVE, &drive,
- -1);
-
+ g_object_get (row,
+ "sidebar", &sidebar,
+ "mount", &mount,
+ "volume", &volume,
+ "drive", &drive,
+ NULL);
ret = FALSE;
check_unmount_and_eject (mount, volume, drive, &can_unmount, &can_eject);
@@ -3329,30 +2940,17 @@ eject_or_unmount_bookmark (GtkPlacesSidebar *sidebar,
ret = TRUE;
}
- g_clear_object (&mount);
- g_clear_object (&volume);
- g_clear_object (&drive);
-
return ret;
}
static gboolean
eject_or_unmount_selection (GtkPlacesSidebar *sidebar)
{
- GtkTreeIter iter;
- GtkTreePath *path;
gboolean ret;
+ GtkListBoxRow *row;
- if (!get_selected_iter (sidebar, &iter))
- return FALSE;
-
- path = gtk_tree_model_get_path (GTK_TREE_MODEL (sidebar->store), &iter);
- if (path == NULL)
- return FALSE;
-
- ret = eject_or_unmount_bookmark (sidebar, path);
-
- gtk_tree_path_free (path);
+ row = gtk_list_box_get_selected_row (GTK_LIST_BOX (sidebar->list_box));
+ ret = eject_or_unmount_bookmark (GTK_SIDEBAR_ROW (row));
return ret;
}
@@ -3387,24 +2985,16 @@ drive_poll_for_media_cb (GObject *source_object,
}
static void
-rescan_shortcut_cb (GtkMenuItem *item,
- GtkPlacesSidebar *sidebar)
+rescan_shortcut_cb (GtkMenuItem *item,
+ GtkSidebarRow *row)
{
- GtkTreeIter iter;
+ GtkPlacesSidebar *sidebar;
GDrive *drive;
- if (!get_selected_iter (sidebar, &iter))
- return;
-
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
- PLACES_SIDEBAR_COLUMN_DRIVE, &drive,
- -1);
+ g_object_get (row, "sidebar", &sidebar, "drive", &drive, NULL);
if (drive != NULL)
- {
- g_drive_poll_for_media (drive, NULL, drive_poll_for_media_cb, g_object_ref (sidebar));
- g_object_unref (drive);
- }
+ g_drive_poll_for_media (drive, NULL, drive_poll_for_media_cb, g_object_ref (sidebar));
}
static void
@@ -3437,18 +3027,13 @@ drive_start_cb (GObject *source_object,
}
static void
-start_shortcut_cb (GtkMenuItem *item,
- GtkPlacesSidebar *sidebar)
+start_shortcut_cb (GtkMenuItem *item,
+ GtkSidebarRow *row)
{
- GtkTreeIter iter;
+ GtkPlacesSidebar *sidebar;
GDrive *drive;
- if (!get_selected_iter (sidebar, &iter))
- return;
-
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
- PLACES_SIDEBAR_COLUMN_DRIVE, &drive,
- -1);
+ g_object_get (row, "sidebar", &sidebar, "drive", &drive, NULL);
if (drive != NULL)
{
@@ -3459,23 +3044,17 @@ start_shortcut_cb (GtkMenuItem *item,
g_drive_start (drive, G_DRIVE_START_NONE, mount_op, NULL, drive_start_cb, g_object_ref (sidebar));
g_object_unref (mount_op);
- g_object_unref (drive);
}
}
static void
-stop_shortcut_cb (GtkMenuItem *item,
- GtkPlacesSidebar *sidebar)
+stop_shortcut_cb (GtkMenuItem *item,
+ GtkSidebarRow *row)
{
- GtkTreeIter iter;
+ GtkPlacesSidebar *sidebar;
GDrive *drive;
- if (!get_selected_iter (sidebar, &iter))
- return;
-
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
- PLACES_SIDEBAR_COLUMN_DRIVE, &drive,
- -1);
+ g_object_get (row, "sidebar", &sidebar, "drive", &drive, NULL);
if (drive != NULL)
{
@@ -3486,151 +3065,90 @@ stop_shortcut_cb (GtkMenuItem *item,
g_object_ref (sidebar));
g_object_unref (mount_op);
- g_object_unref (drive);
}
}
static gboolean
-find_prev_or_next_row (GtkPlacesSidebar *sidebar,
- GtkTreeIter *iter,
- gboolean go_up)
+on_key_press_event (GtkWidget *widget,
+ GdkEventKey *event,
+ GtkPlacesSidebar *sidebar)
{
- GtkTreeModel *model = GTK_TREE_MODEL (sidebar->store);
- gboolean res;
- gint place_type;
-
- if (go_up)
- res = gtk_tree_model_iter_previous (model, iter);
- else
- res = gtk_tree_model_iter_next (model, iter);
+ guint modifiers;
+ GtkListBoxRow *row;
+ gchar *label;
- if (res)
+ if (event)
{
- gtk_tree_model_get (model, iter,
- PLACES_SIDEBAR_COLUMN_ROW_TYPE, &place_type,
- -1);
- if (place_type == PLACES_HEADING)
+ row = gtk_list_box_get_selected_row (GTK_LIST_BOX (sidebar->list_box));
+ if (row)
{
- if (go_up)
- res = gtk_tree_model_iter_previous (model, iter);
- else
- res = gtk_tree_model_iter_next (model, iter);
- }
- }
+ g_object_get (row, "label", &label, NULL);
+ modifiers = gtk_accelerator_get_default_mod_mask ();
- return res;
-}
-
-static gboolean
-find_prev_row (GtkPlacesSidebar *sidebar,
- GtkTreeIter *iter)
-{
- return find_prev_or_next_row (sidebar, iter, TRUE);
-}
-
-static gboolean
-find_next_row (GtkPlacesSidebar *sidebar,
- GtkTreeIter *iter)
-{
- return find_prev_or_next_row (sidebar, iter, FALSE);
-}
-
-static gboolean
-gtk_places_sidebar_focus (GtkWidget *widget,
- GtkDirectionType direction)
-{
- GtkPlacesSidebar *sidebar = GTK_PLACES_SIDEBAR (widget);
- GtkTreePath *path;
- GtkTreeIter iter;
- gboolean res;
+ if (event->keyval == GDK_KEY_Return ||
+ event->keyval == GDK_KEY_KP_Enter ||
+ event->keyval == GDK_KEY_ISO_Enter ||
+ event->keyval == GDK_KEY_space)
+ {
+ GtkPlacesOpenFlags open_flags = GTK_PLACES_OPEN_NORMAL;
- if (!get_selected_iter (sidebar, &iter))
- {
- gtk_tree_model_get_iter_first (GTK_TREE_MODEL (sidebar->store), &iter);
- res = find_next_row (sidebar, &iter);
- if (res)
- {
- path = gtk_tree_model_get_path (GTK_TREE_MODEL (sidebar->store), &iter);
- gtk_tree_view_set_cursor (sidebar->tree_view, path, NULL, FALSE);
- gtk_tree_path_free (path);
- }
- }
+ if ((event->state & modifiers) == GDK_SHIFT_MASK)
+ open_flags = GTK_PLACES_OPEN_NEW_TAB;
+ else if ((event->state & modifiers) == GDK_CONTROL_MASK)
+ open_flags = GTK_PLACES_OPEN_NEW_WINDOW;
- return GTK_WIDGET_CLASS (gtk_places_sidebar_parent_class)->focus (widget, direction);
-}
+ open_row (GTK_SIDEBAR_ROW (row), open_flags);
-/* Handler for GtkWidget::key-press-event on the shortcuts list */
-static gboolean
-bookmarks_key_press_event_cb (GtkWidget *widget,
- GdkEventKey *event,
- GtkPlacesSidebar *sidebar)
-{
- guint modifiers;
- GtkTreeIter selected_iter;
- GtkTreePath *path;
+ return TRUE;
+ }
- if (!get_selected_iter (sidebar, &selected_iter))
- return FALSE;
+ if (event->keyval == GDK_KEY_Down &&
+ (event->state & modifiers) == GDK_MOD1_MASK)
+ return eject_or_unmount_selection (sidebar);
- modifiers = gtk_accelerator_get_default_mod_mask ();
+ if (event->keyval == GDK_KEY_Up)
+ {
+ gint index;
+ GtkListBoxRow *previous_row;
- if (event->keyval == GDK_KEY_Return ||
- event->keyval == GDK_KEY_KP_Enter ||
- event->keyval == GDK_KEY_ISO_Enter ||
- event->keyval == GDK_KEY_space)
- {
- GtkPlacesOpenFlags open_flags = GTK_PLACES_OPEN_NORMAL;
+ index = gtk_list_box_row_get_index (row);
+ previous_row = gtk_list_box_get_row_at_index (GTK_LIST_BOX (sidebar->list_box),
+ index - 1);
+ if (previous_row != NULL)
+ gtk_list_box_select_row (GTK_LIST_BOX (sidebar->list_box), previous_row);
- if ((event->state & modifiers) == GDK_SHIFT_MASK)
- open_flags = GTK_PLACES_OPEN_NEW_TAB;
- else if ((event->state & modifiers) == GDK_CONTROL_MASK)
- open_flags = GTK_PLACES_OPEN_NEW_WINDOW;
+ return TRUE;
+ }
- open_selected_bookmark (sidebar, GTK_TREE_MODEL (sidebar->store),
- &selected_iter, open_flags);
+ if (event->keyval == GDK_KEY_Down)
+ {
+ gint index;
+ GtkListBoxRow *previous_row;
- return TRUE;
- }
+ index = gtk_list_box_row_get_index (row);
+ previous_row = gtk_list_box_get_row_at_index (GTK_LIST_BOX (sidebar->list_box),
+ index + 1);
+ if (previous_row != NULL)
+ gtk_list_box_select_row (GTK_LIST_BOX (sidebar->list_box), previous_row);
- if (event->keyval == GDK_KEY_Down &&
- (event->state & modifiers) == GDK_MOD1_MASK)
- return eject_or_unmount_selection (sidebar);
+ return TRUE;
+ }
- if (event->keyval == GDK_KEY_Up)
- {
- if (find_prev_row (sidebar, &selected_iter))
- {
- path = gtk_tree_model_get_path (GTK_TREE_MODEL (sidebar->store), &selected_iter);
- gtk_tree_view_set_cursor (sidebar->tree_view, path, NULL, FALSE);
- gtk_tree_path_free (path);
- }
- return TRUE;
- }
+ if ((event->keyval == GDK_KEY_Delete ||
+ event->keyval == GDK_KEY_KP_Delete) &&
+ (event->state & modifiers) == 0)
+ {
+ remove_bookmark (GTK_SIDEBAR_ROW (row));
+ return TRUE;
+ }
- if (event->keyval == GDK_KEY_Down)
- {
- if (find_next_row (sidebar, &selected_iter))
- {
- path = gtk_tree_model_get_path (GTK_TREE_MODEL (sidebar->store), &selected_iter);
- gtk_tree_view_set_cursor (sidebar->tree_view, path, NULL, FALSE);
- gtk_tree_path_free (path);
+ if ((event->keyval == GDK_KEY_F2) &&
+ (event->state & modifiers) == 0)
+ {
+ rename_bookmark (GTK_SIDEBAR_ROW (row));
+ return TRUE;
+ }
}
- return TRUE;
- }
-
- if ((event->keyval == GDK_KEY_Delete ||
- event->keyval == GDK_KEY_KP_Delete) &&
- (event->state & modifiers) == 0)
- {
- remove_selected_bookmarks (sidebar);
- return TRUE;
- }
-
- if ((event->keyval == GDK_KEY_F2) &&
- (event->state & modifiers) == 0)
- {
- rename_selected_bookmark (sidebar);
- return TRUE;
}
return FALSE;
@@ -3650,12 +3168,16 @@ append_menu_separator (GtkMenu *menu)
/* Constructs the popup menu for the file list if needed */
static void
-bookmarks_build_popup_menu (GtkPlacesSidebar *sidebar)
+bookmarks_build_popup_menu (GtkSidebarRow *row)
{
PopupMenuData menu_data;
GtkWidget *item;
- SelectionInfo sel_info;
GFile *file;
+ const gchar *uri;
+ GVolume *volume;
+ GtkPlacesSidebar *sidebar;
+
+ g_object_get (row, "sidebar", &sidebar, "uri", &uri, "volume", &volume, NULL);
sidebar->popup_menu = gtk_menu_new ();
gtk_style_context_add_class (gtk_widget_get_style_context (sidebar->popup_menu),
@@ -3667,7 +3189,7 @@ bookmarks_build_popup_menu (GtkPlacesSidebar *sidebar)
item = gtk_menu_item_new_with_mnemonic (_("_Open"));
g_signal_connect (item, "activate",
- G_CALLBACK (open_shortcut_cb), sidebar);
+ G_CALLBACK (open_shortcut_cb), row);
gtk_widget_show (item);
gtk_menu_shell_append (GTK_MENU_SHELL (sidebar->popup_menu), item);
@@ -3675,7 +3197,7 @@ bookmarks_build_popup_menu (GtkPlacesSidebar *sidebar)
{
item = gtk_menu_item_new_with_mnemonic (_("Open in New _Tab"));
g_signal_connect (item, "activate",
- G_CALLBACK (open_shortcut_in_new_tab_cb), sidebar);
+ G_CALLBACK (open_shortcut_in_new_tab_cb), row);
gtk_widget_show (item);
gtk_menu_shell_append (GTK_MENU_SHELL (sidebar->popup_menu), item);
}
@@ -3684,7 +3206,7 @@ bookmarks_build_popup_menu (GtkPlacesSidebar *sidebar)
{
item = gtk_menu_item_new_with_mnemonic (_("Open in New _Window"));
g_signal_connect (item, "activate",
- G_CALLBACK (open_shortcut_in_new_window_cb), sidebar);
+ G_CALLBACK (open_shortcut_in_new_window_cb), row);
gtk_widget_show (item);
gtk_menu_shell_append (GTK_MENU_SHELL (sidebar->popup_menu), item);
}
@@ -3694,20 +3216,20 @@ bookmarks_build_popup_menu (GtkPlacesSidebar *sidebar)
item = gtk_menu_item_new_with_mnemonic (_("_Add Bookmark"));
menu_data.add_shortcut_item = item;
g_signal_connect (item, "activate",
- G_CALLBACK (add_shortcut_cb), sidebar);
+ G_CALLBACK (add_shortcut_cb), row);
gtk_menu_shell_append (GTK_MENU_SHELL (sidebar->popup_menu), item);
item = gtk_menu_item_new_with_label (_("Remove"));
menu_data.remove_item = item;
g_signal_connect (item, "activate",
- G_CALLBACK (remove_shortcut_cb), sidebar);
+ G_CALLBACK (remove_shortcut_cb), row);
gtk_widget_show (item);
gtk_menu_shell_append (GTK_MENU_SHELL (sidebar->popup_menu), item);
item = gtk_menu_item_new_with_label (_("Rename…"));
menu_data.rename_item = item;
g_signal_connect (item, "activate",
- G_CALLBACK (rename_shortcut_cb), sidebar);
+ G_CALLBACK (rename_shortcut_cb), row);
gtk_widget_show (item);
gtk_menu_shell_append (GTK_MENU_SHELL (sidebar->popup_menu), item);
@@ -3718,76 +3240,75 @@ bookmarks_build_popup_menu (GtkPlacesSidebar *sidebar)
item = gtk_menu_item_new_with_mnemonic (_("_Mount"));
menu_data.mount_item = item;
g_signal_connect (item, "activate",
- G_CALLBACK (mount_shortcut_cb), sidebar);
+ G_CALLBACK (mount_shortcut_cb), row);
gtk_widget_show (item);
gtk_menu_shell_append (GTK_MENU_SHELL (sidebar->popup_menu), item);
item = gtk_menu_item_new_with_mnemonic (_("_Unmount"));
menu_data.unmount_item = item;
g_signal_connect (item, "activate",
- G_CALLBACK (unmount_shortcut_cb), sidebar);
+ G_CALLBACK (unmount_shortcut_cb), row);
gtk_widget_show (item);
gtk_menu_shell_append (GTK_MENU_SHELL (sidebar->popup_menu), item);
item = gtk_menu_item_new_with_mnemonic (_("_Eject"));
menu_data.eject_item = item;
g_signal_connect (item, "activate",
- G_CALLBACK (eject_shortcut_cb), sidebar);
+ G_CALLBACK (eject_shortcut_cb), row);
gtk_widget_show (item);
gtk_menu_shell_append (GTK_MENU_SHELL (sidebar->popup_menu), item);
item = gtk_menu_item_new_with_mnemonic (_("_Detect Media"));
menu_data.rescan_item = item;
g_signal_connect (item, "activate",
- G_CALLBACK (rescan_shortcut_cb), sidebar);
+ G_CALLBACK (rescan_shortcut_cb), row);
gtk_widget_show (item);
gtk_menu_shell_append (GTK_MENU_SHELL (sidebar->popup_menu), item);
item = gtk_menu_item_new_with_mnemonic (_("_Start"));
menu_data.start_item = item;
g_signal_connect (item, "activate",
- G_CALLBACK (start_shortcut_cb), sidebar);
+ G_CALLBACK (start_shortcut_cb), row);
gtk_widget_show (item);
gtk_menu_shell_append (GTK_MENU_SHELL (sidebar->popup_menu), item);
item = gtk_menu_item_new_with_mnemonic (_("_Stop"));
menu_data.stop_item = item;
g_signal_connect (item, "activate",
- G_CALLBACK (stop_shortcut_cb), sidebar);
+ G_CALLBACK (stop_shortcut_cb), row);
gtk_widget_show (item);
gtk_menu_shell_append (GTK_MENU_SHELL (sidebar->popup_menu), item);
/* Update everything! */
- get_selection_info (sidebar, &sel_info);
-
- check_popup_sensitivity (sidebar, &menu_data, &sel_info);
+ check_popup_sensitivity (row, &menu_data);
/* And let the caller spice things up */
- if (sel_info.uri)
- file = g_file_new_for_uri (sel_info.uri);
+ if (uri)
+ file = g_file_new_for_uri (uri);
else
file = NULL;
- emit_populate_popup (sidebar, GTK_MENU (sidebar->popup_menu), file, sel_info.volume);
+ emit_populate_popup (sidebar, GTK_MENU (sidebar->popup_menu), file, volume);
if (file)
g_object_unref (file);
-
- free_selection_info (&sel_info);
}
static void
-bookmarks_popup_menu (GtkPlacesSidebar *sidebar,
- GdkEventButton *event)
+bookmarks_popup_menu (GtkSidebarRow *row,
+ GdkEventButton *event)
{
gint button;
+ GtkPlacesSidebar *sidebar;
+
+ g_object_get (row, "sidebar", &sidebar, NULL);
if (sidebar->popup_menu)
gtk_widget_destroy (sidebar->popup_menu);
- bookmarks_build_popup_menu (sidebar);
+ bookmarks_build_popup_menu (row);
/* The event button needs to be 0 if we're popping up this menu from
* a button release, else a 2nd click outside the menu with any button
@@ -3815,243 +3336,166 @@ bookmarks_popup_menu (GtkPlacesSidebar *sidebar,
event ? event->time : gtk_get_current_event_time ());
}
-/* Callback used for the GtkWidget::popup-menu signal of the shortcuts list */
-static gboolean
-bookmarks_popup_menu_cb (GtkWidget *widget,
- GtkPlacesSidebar *sidebar)
-{
- bookmarks_popup_menu (sidebar, NULL);
- return TRUE;
-}
-
static void
-bookmarks_row_activated_cb (GtkWidget *widget,
- GtkTreePath *path,
- GtkTreeViewColumn *column,
- GtkPlacesSidebar *sidebar)
+on_row_activated (GtkListBox *list_box,
+ GtkListBoxRow *row,
+ gpointer user_data)
{
- GtkTreeIter iter;
- GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (widget));
- GtkTreePath *dummy;
+ GtkSidebarRow *selected_row;
- if (!gtk_tree_model_get_iter (model, &iter, path))
+ /* Avoid to open a location if the user is dragging. Changing the location
+ * while dragging usually makes clients changing the view of the files, which
+ * is confusing while the user has the attention on the drag */
+ if (GTK_PLACES_SIDEBAR (user_data)->dragging_over)
return;
- dummy = NULL;
- if (!clicked_eject_button (sidebar, &dummy))
- {
- open_selected_bookmark (sidebar, model, &iter, 0);
- gtk_tree_path_free (dummy);
- }
+ selected_row = GTK_SIDEBAR_ROW (gtk_list_box_get_selected_row (list_box));
+ open_row (selected_row, 0);
}
static gboolean
-bookmarks_button_release_event_cb (GtkWidget *widget,
- GdkEventButton *event,
- GtkPlacesSidebar *sidebar)
-{
- GtkTreePath *path;
- GtkTreeIter iter;
- GtkTreeModel *model;
- GtkTreeView *tree_view;
- gboolean ret = FALSE;
- gboolean res;
-
- path = NULL;
-
- if (event->type != GDK_BUTTON_RELEASE)
- return TRUE;
-
- if (clicked_eject_button (sidebar, &path))
- {
- eject_or_unmount_bookmark (sidebar, path);
- gtk_tree_path_free (path);
- return TRUE;
- }
-
- if (event->button == 1)
- return FALSE;
+on_button_press_event (GtkWidget *widget,
+ GdkEventButton *event,
+ GtkSidebarRow *row)
+{
+ GtkPlacesSidebar *sidebar;
+ GtkPlacesSidebarSectionType section_type;
- tree_view = GTK_TREE_VIEW (widget);
- model = gtk_tree_view_get_model (tree_view);
+ g_object_get (GTK_SIDEBAR_ROW (row), "sidebar", &sidebar, "section_type", &section_type, NULL);
- if (event->window != gtk_tree_view_get_bin_window (tree_view))
+ if (section_type != SECTION_BOOKMARKS)
return FALSE;
- res = gtk_tree_view_get_path_at_pos (tree_view, (int) event->x, (int) event->y,
- &path, NULL, NULL, NULL);
+ sidebar->drag_row = GTK_WIDGET (row);
+ sidebar->drag_row_x = (gint)event->x;
+ sidebar->drag_row_y = (gint)event->y;
- if (!res || path == NULL)
- return FALSE;
+ sidebar->drag_root_x = event->x_root;
+ sidebar->drag_root_y = event->y_root;
- res = gtk_tree_model_get_iter (model, &iter, path);
- if (!res)
- {
- gtk_tree_path_free (path);
- return FALSE;
- }
-
- if (event->button == 2)
- {
- GtkPlacesOpenFlags open_flags = GTK_PLACES_OPEN_NORMAL;
-
- open_flags = (event->state & GDK_CONTROL_MASK) ?
- GTK_PLACES_OPEN_NEW_WINDOW :
- GTK_PLACES_OPEN_NEW_TAB;
-
- open_selected_bookmark (sidebar, model, &iter, open_flags);
- ret = TRUE;
- }
- else if (event->button == 3)
- {
- PlaceType row_type;
-
- gtk_tree_model_get (model, &iter,
- PLACES_SIDEBAR_COLUMN_ROW_TYPE, &row_type,
- -1);
-
- if (row_type != PLACES_HEADING && row_type != PLACES_CONNECT_TO_SERVER)
- bookmarks_popup_menu (sidebar, event);
- }
-
- gtk_tree_path_free (path);
-
- return ret;
+ return FALSE;
}
static gboolean
-tree_selection_func (GtkTreeSelection *selection,
- GtkTreeModel *model,
- GtkTreePath *path,
- gboolean path_currently_selected,
- gpointer user_data)
-{
- GtkTreeIter iter;
- PlaceType row_type;
-
- gtk_tree_model_get_iter (model, &iter, path);
- gtk_tree_model_get (model, &iter,
- PLACES_SIDEBAR_COLUMN_ROW_TYPE, &row_type,
- -1);
-
- if (row_type == PLACES_HEADING)
- return FALSE;
-
- return TRUE;
-}
-
-static int
-bookmarks_get_first_index (GtkPlacesSidebar *sidebar)
+on_button_release_event (GtkWidget *widget,
+ GdkEventButton *event,
+ GtkSidebarRow *row)
{
- GtkTreeIter iter;
-
- g_return_val_if_fail (GTK_IS_PLACES_SIDEBAR (sidebar), -1);
+ gboolean ret = FALSE;
+ gchar *label;
- if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (sidebar->store), &iter))
+ if (event && row)
{
- int bookmarks_heading_index = 0;
+ g_object_get (GTK_SIDEBAR_ROW (row), "label", &label, NULL);
+ if (event->button == 1)
+ return FALSE;
- do
+ if (event->button == 2)
{
- PlaceType place_type;
- SectionType section_type;
+ GtkPlacesOpenFlags open_flags = GTK_PLACES_OPEN_NORMAL;
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
- PLACES_SIDEBAR_COLUMN_ROW_TYPE, &place_type,
- PLACES_SIDEBAR_COLUMN_SECTION_TYPE, &section_type,
- -1);
- if (place_type == PLACES_HEADING && section_type == SECTION_BOOKMARKS)
- return ++bookmarks_heading_index;
+ open_flags = (event->state & GDK_CONTROL_MASK) ?
+ GTK_PLACES_OPEN_NEW_WINDOW :
+ GTK_PLACES_OPEN_NEW_TAB;
- bookmarks_heading_index++;
+ open_row (GTK_SIDEBAR_ROW (row), open_flags);
+ ret = TRUE;
}
- while (gtk_tree_model_iter_next (GTK_TREE_MODEL (sidebar->store), &iter));
- }
-
- g_warning ("Index of bookmarks not calculable. No bookmarks heading");
-
- return -1;
-}
+ else if (event->button == 3)
+ {
+ GtkPlacesSidebarPlaceType row_type;
-static void
-icon_cell_renderer_func (GtkTreeViewColumn *column,
- GtkCellRenderer *cell,
- GtkTreeModel *model,
- GtkTreeIter *iter,
- gpointer user_data)
-{
- PlaceType type;
+ g_object_get (row, "place-type", &row_type, NULL);
- gtk_tree_model_get (model, iter,
- PLACES_SIDEBAR_COLUMN_ROW_TYPE, &type,
- -1);
+ if (row_type != PLACES_CONNECT_TO_SERVER)
+ bookmarks_popup_menu (GTK_SIDEBAR_ROW (row), event);
+ }
+ }
- g_object_set (cell, "visible", type != PLACES_HEADING, NULL);
+ return ret;
}
static gint
-places_sidebar_sort_func (GtkTreeModel *model,
- GtkTreeIter *iter_a,
- GtkTreeIter *iter_b,
- gpointer user_data)
-{
- SectionType section_type_a, section_type_b;
- PlaceType place_type_a, place_type_b;
+list_box_sort_func (GtkListBoxRow *row1,
+ GtkListBoxRow *row2,
+ gpointer user_data)
+{
+ GtkPlacesSidebarSectionType section_type_1, section_type_2;
+ GtkPlacesSidebarPlaceType place_type_1, place_type_2;
+ const gchar *label_1, *label_2;
+ gint index_1, index_2;
gint retval = 0;
- gtk_tree_model_get (model, iter_a,
- PLACES_SIDEBAR_COLUMN_SECTION_TYPE, &section_type_a,
- PLACES_SIDEBAR_COLUMN_ROW_TYPE, &place_type_a,
- -1);
- gtk_tree_model_get (model, iter_b,
- PLACES_SIDEBAR_COLUMN_SECTION_TYPE, &section_type_b,
- PLACES_SIDEBAR_COLUMN_ROW_TYPE, &place_type_b,
- -1);
-
- /* fall back to the default order if we're not in the
- * XDG part of the computer section.
- */
- if ((section_type_a == section_type_b) &&
- (section_type_a == SECTION_COMPUTER) &&
- (place_type_a == place_type_b) &&
- (place_type_a == PLACES_XDG_DIR))
- {
- gchar *name_a, *name_b;
-
- gtk_tree_model_get (model, iter_a,
- PLACES_SIDEBAR_COLUMN_NAME, &name_a,
- -1);
- gtk_tree_model_get (model, iter_b,
- PLACES_SIDEBAR_COLUMN_NAME, &name_b,
- -1);
-
- retval = g_utf8_collate (name_a, name_b);
+ g_object_get (GTK_SIDEBAR_ROW (row1),
+ "label", &label_1,
+ "place-type", &place_type_1,
+ "section-type", &section_type_1,
+ "order-index", &index_1,
+ NULL);
+ g_object_get (GTK_SIDEBAR_ROW (row2),
+ "label", &label_2,
+ "place-type", &place_type_2,
+ "section-type", &section_type_2,
+ "order-index", &index_2,
+ NULL);
- g_free (name_a);
- g_free (name_b);
- }
- else if ((place_type_a == place_type_b) &&
- (place_type_a == PLACES_BOOKMARK))
- {
- gint pos_a, pos_b;
-
- gtk_tree_model_get (model, iter_a,
- PLACES_SIDEBAR_COLUMN_INDEX, &pos_a,
- -1);
- gtk_tree_model_get (model, iter_b,
- PLACES_SIDEBAR_COLUMN_INDEX, &pos_b,
- -1);
-
- retval = pos_a - pos_b;
- }
- else if (place_type_a == PLACES_CONNECT_TO_SERVER)
+ /* Always last position for "connect to server" */
+ if (place_type_1 == PLACES_CONNECT_TO_SERVER)
{
retval = 1;
}
- else if (place_type_b == PLACES_CONNECT_TO_SERVER)
+ else if (place_type_2 == PLACES_CONNECT_TO_SERVER)
{
retval = -1;
}
+ else
+ {
+ if (section_type_1 == section_type_2)
+ {
+ if ((section_type_1 == section_type_2) &&
+ (section_type_1 == SECTION_COMPUTER) &&
+ (place_type_1 == place_type_2) &&
+ (place_type_1 == PLACES_XDG_DIR))
+ {
+ retval = g_utf8_collate (label_1, label_2);
+ }
+ else if ((place_type_1 == PLACES_BOOKMARK || place_type_2 == PLACES_DROP_FEEDBACK) &&
+ (place_type_1 == PLACES_DROP_FEEDBACK || place_type_2 == PLACES_BOOKMARK))
+ {
+ retval = index_1 - index_2;
+ }
+ /* We order the bookmarks sections based on the bookmark index that we
+ * set on the row as a order-index property, but we have to deal with
+ * the placeholder row wanted to be between two consecutive bookmarks,
+ * with two consecutive order-index values which is the usual case.
+ * For that, in the list box sort func we give priority to the placeholder row,
+ * that means that if the index-order is the same as another bookmark
+ * the placeholder row goes before. However if we want to show it after
+ * the current row, for instance when the cursor is in the lower half
+ * of the row, we need to increase the order-index.
+ */
+ else if (place_type_1 == PLACES_BOOKMARK_PLACEHOLDER && place_type_2 == PLACES_BOOKMARK)
+ {
+ if (index_1 == index_2)
+ retval = index_1 - index_2 - 1;
+ else
+ retval = index_1 - index_2;
+ }
+ else if (place_type_1 == PLACES_BOOKMARK && place_type_2 == PLACES_BOOKMARK_PLACEHOLDER)
+ {
+ if (index_1 == index_2)
+ retval = index_1 - index_2 + 1;
+ else
+ retval = index_1 - index_2;
+ }
+ }
+ else
+ {
+ /* Order by section. That means the order in the enum of section types
+ * define the actual order of them in the list */
+ retval = section_type_1 - section_type_2;
+ }
+ }
return retval;
}
@@ -4167,30 +3611,12 @@ shell_shows_desktop_changed (GtkSettings *settings,
}
}
-static gboolean
-row_separator_func (GtkTreeModel *model,
- GtkTreeIter *iter,
- gpointer data)
-{
- PlaceType type;
-
- gtk_tree_model_get (model, iter,
- PLACES_SIDEBAR_COLUMN_ROW_TYPE, &type,
- -1);
-
- return type == PLACES_HEADING;
-}
-
static void
gtk_places_sidebar_init (GtkPlacesSidebar *sidebar)
{
- GtkTreeView *tree_view;
- GtkTreeViewColumn *col;
- GtkCellRenderer *cell;
- GtkTreeSelection *selection;
- GIcon *eject;
GtkTargetList *target_list;
gboolean b;
+ GtkStyleContext *context;
gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET (sidebar)), GTK_STYLE_CLASS_SIDEBAR);
@@ -4206,8 +3632,6 @@ gtk_places_sidebar_init (GtkPlacesSidebar *sidebar)
sidebar->trash_monitor_changed_id = g_signal_connect_swapped (sidebar->trash_monitor, "trash-state-changed",
G_CALLBACK (update_places), sidebar);
- sidebar->shortcuts = NULL;
-
gtk_widget_set_size_request (GTK_WIDGET (sidebar), 140, 280);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sidebar),
@@ -4220,144 +3644,64 @@ gtk_places_sidebar_init (GtkPlacesSidebar *sidebar)
gtk_style_context_set_junction_sides (gtk_widget_get_style_context (GTK_WIDGET (sidebar)),
GTK_JUNCTION_RIGHT | GTK_JUNCTION_LEFT);
- /* tree view */
- tree_view = GTK_TREE_VIEW (gtk_tree_view_new ());
- gtk_tree_view_set_headers_visible (tree_view, FALSE);
-
- gtk_tree_view_set_row_separator_func (tree_view,
- row_separator_func,
- sidebar,
- NULL);
-
- col = gtk_tree_view_column_new ();
-
- /* icon renderer */
- cell = gtk_cell_renderer_pixbuf_new ();
- g_object_set (cell,
- "xpad", 10,
- "ypad", 8,
- NULL);
- gtk_tree_view_column_pack_start (col, cell, FALSE);
- gtk_tree_view_column_set_attributes (col, cell,
- "gicon", PLACES_SIDEBAR_COLUMN_GICON,
- "sensitive", PLACES_SIDEBAR_COLUMN_SENSITIVE,
- NULL);
- gtk_tree_view_column_set_cell_data_func (col, cell,
- icon_cell_renderer_func,
- sidebar, NULL);
-
- /* eject text renderer */
- cell = gtk_cell_renderer_text_new ();
- gtk_tree_view_column_pack_start (col, cell, TRUE);
- gtk_tree_view_column_set_attributes (col, cell,
- "text", PLACES_SIDEBAR_COLUMN_NAME,
- "visible", PLACES_SIDEBAR_COLUMN_EJECT,
- NULL);
- g_object_set (cell,
- "ellipsize", PANGO_ELLIPSIZE_END,
- "ellipsize-set", TRUE,
- NULL);
-
- /* eject icon renderer */
- cell = gtk_cell_renderer_pixbuf_new ();
- sidebar->eject_icon_cell_renderer = cell;
- eject = g_themed_icon_new_with_default_fallbacks ("media-eject-symbolic");
- g_object_set (cell,
- "mode", GTK_CELL_RENDERER_MODE_ACTIVATABLE,
- "stock-size", GTK_ICON_SIZE_MENU,
- "xpad", EJECT_BUTTON_XPAD,
- /* align right, because for some reason gtk+ expands
- this even though we tell it not to. */
- "xalign", 1.0,
- "gicon", eject,
- NULL);
- gtk_tree_view_column_pack_start (col, cell, FALSE);
- gtk_tree_view_column_set_attributes (col, cell,
- "visible", PLACES_SIDEBAR_COLUMN_EJECT,
- NULL);
- g_object_unref (eject);
-
- /* normal text renderer */
- cell = gtk_cell_renderer_text_new ();
- sidebar->text_cell_renderer = cell;
- gtk_tree_view_column_pack_start (col, cell, TRUE);
- g_object_set (G_OBJECT (cell), "editable", FALSE, NULL);
- gtk_tree_view_column_set_attributes (col, cell,
- "text", PLACES_SIDEBAR_COLUMN_NAME,
- "visible", PLACES_SIDEBAR_COLUMN_NO_EJECT,
- "editable-set", PLACES_SIDEBAR_COLUMN_BOOKMARK,
- "sensitive", PLACES_SIDEBAR_COLUMN_SENSITIVE,
- NULL);
- g_object_set (cell,
- "ellipsize", PANGO_ELLIPSIZE_END,
- "ellipsize-set", TRUE,
- NULL);
-
- /* this is required to align the eject buttons to the right */
- gtk_tree_view_column_set_max_width (GTK_TREE_VIEW_COLUMN (col), 24);
- gtk_tree_view_append_column (tree_view, col);
-
- sidebar->store = shortcuts_model_new (sidebar);
- gtk_tree_view_set_tooltip_column (tree_view, PLACES_SIDEBAR_COLUMN_TOOLTIP);
-
- gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (sidebar->store),
- PLACES_SIDEBAR_COLUMN_NAME,
- GTK_SORT_ASCENDING);
- gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (sidebar->store),
- PLACES_SIDEBAR_COLUMN_NAME,
- places_sidebar_sort_func,
- sidebar, NULL);
-
- gtk_tree_view_set_model (tree_view, GTK_TREE_MODEL (sidebar->store));
- gtk_container_add (GTK_CONTAINER (sidebar), GTK_WIDGET (tree_view));
- gtk_widget_show (GTK_WIDGET (tree_view));
- gtk_tree_view_set_enable_search (tree_view, FALSE);
-
- gtk_widget_show (GTK_WIDGET (sidebar));
- sidebar->tree_view = tree_view;
-
- gtk_tree_view_set_search_column (tree_view, PLACES_SIDEBAR_COLUMN_NAME);
- selection = gtk_tree_view_get_selection (tree_view);
- gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE);
-
- gtk_tree_selection_set_select_function (selection,
- tree_selection_func,
- sidebar,
- NULL);
-
- gtk_tree_view_enable_model_drag_source (GTK_TREE_VIEW (tree_view),
- GDK_BUTTON1_MASK,
- dnd_source_targets, G_N_ELEMENTS (dnd_source_targets),
- GDK_ACTION_MOVE);
- gtk_drag_dest_set (GTK_WIDGET (tree_view),
+ /* list box */
+ sidebar->list_box = gtk_list_box_new ();
+ context = gtk_widget_get_style_context (sidebar->list_box);
+ gtk_style_context_add_class (context, "sidebar");
+
+ gtk_list_box_set_header_func (GTK_LIST_BOX (sidebar->list_box),
+ list_box_header_func, sidebar, NULL);
+ gtk_list_box_set_sort_func (GTK_LIST_BOX (sidebar->list_box),
+ list_box_sort_func, NULL, NULL);
+ gtk_list_box_set_selection_mode (GTK_LIST_BOX (sidebar->list_box),
+ GTK_SELECTION_SINGLE);
+ gtk_list_box_set_activate_on_single_click (GTK_LIST_BOX (sidebar->list_box),
+ TRUE);
+ g_signal_connect (sidebar->list_box,
+ "row-activated",
+ G_CALLBACK (on_row_activated),
+ sidebar);
+ g_signal_connect (sidebar->list_box,
+ "key-press-event",
+ G_CALLBACK (on_key_press_event),
+ sidebar);
+
+ /* DND support */
+ gtk_drag_dest_set (sidebar->list_box,
0,
NULL, 0,
GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK);
target_list = gtk_target_list_new (dnd_drop_targets, G_N_ELEMENTS (dnd_drop_targets));
- gtk_target_list_add_uri_targets (target_list, TEXT_URI_LIST);
- gtk_drag_dest_set_target_list (GTK_WIDGET (tree_view), target_list);
+ gtk_target_list_add_uri_targets (target_list, DND_TEXT_URI_LIST);
+ gtk_drag_dest_set_target_list (sidebar->list_box, target_list);
gtk_target_list_unref (target_list);
+ sidebar->source_targets = gtk_target_list_new (dnd_source_targets, G_N_ELEMENTS (dnd_source_targets));
+ gtk_target_list_add_text_targets (sidebar->source_targets, 0);
- g_signal_connect (tree_view, "key-press-event",
- G_CALLBACK (bookmarks_key_press_event_cb), sidebar);
+ gtk_drag_dest_set_track_motion (GTK_WIDGET (sidebar->list_box), TRUE);
- g_signal_connect (tree_view, "drag-motion",
+ g_signal_connect (sidebar->list_box, "motion-notify-event",
+ G_CALLBACK (on_motion_notify_event), sidebar);
+ g_signal_connect (sidebar->list_box, "drag-begin",
+ G_CALLBACK (drag_begin_callback), sidebar);
+ g_signal_connect (sidebar->list_box, "drag-motion",
G_CALLBACK (drag_motion_callback), sidebar);
- g_signal_connect (tree_view, "drag-leave",
- G_CALLBACK (drag_leave_callback), sidebar);
- g_signal_connect (tree_view, "drag-data-received",
+ g_signal_connect (sidebar->list_box, "drag-data-get",
+ G_CALLBACK (drag_data_get_callback), sidebar);
+ g_signal_connect (sidebar->list_box, "drag-data-received",
G_CALLBACK (drag_data_received_callback), sidebar);
- g_signal_connect (tree_view, "drag-drop",
+ g_signal_connect (sidebar->list_box, "drag-drop",
G_CALLBACK (drag_drop_callback), sidebar);
+ g_signal_connect (sidebar->list_box, "drag-end",
+ G_CALLBACK (drag_end_callback), sidebar);
+ g_signal_connect (sidebar->list_box, "drag-leave",
+ G_CALLBACK (drag_leave_callback), sidebar);
+ sidebar->drag_row = NULL;
+ sidebar->row_placeholder = NULL;
+ sidebar->dragging_over = FALSE;
+ sidebar->drag_data_info = DND_UNKNOWN;
- g_signal_connect (tree_view, "popup-menu",
- G_CALLBACK (bookmarks_popup_menu_cb), sidebar);
- g_signal_connect (tree_view, "button-release-event",
- G_CALLBACK (bookmarks_button_release_event_cb), sidebar);
- g_signal_connect (tree_view, "row-activated",
- G_CALLBACK (bookmarks_row_activated_cb), sidebar);
-
- gtk_tree_view_set_activate_on_single_click (sidebar->tree_view, TRUE);
+ gtk_container_add (GTK_CONTAINER (sidebar), sidebar->list_box);
sidebar->hostname = g_strdup (_("Computer"));
sidebar->hostnamed_cancellable = g_cancellable_new ();
@@ -4486,9 +3830,7 @@ gtk_places_sidebar_dispose (GObject *object)
sidebar->cancellable = NULL;
}
- on_drag_end (sidebar);
-
- sidebar->tree_view = NULL;
+ free_drag_data (sidebar);
if (sidebar->bookmarks_manager != NULL)
{
@@ -4509,11 +3851,6 @@ gtk_places_sidebar_dispose (GObject *object)
g_clear_object (&sidebar->trash_monitor);
}
- g_clear_object (&sidebar->store);
-
- g_slist_free_full (sidebar->shortcuts, g_object_unref);
- sidebar->shortcuts = NULL;
-
if (sidebar->volume_monitor != NULL)
{
g_signal_handlers_disconnect_by_func (sidebar->volume_monitor,
@@ -4554,8 +3891,6 @@ gtk_places_sidebar_class_init (GtkPlacesSidebarClass *class)
gobject_class->set_property = gtk_places_sidebar_set_property;
gobject_class->get_property = gtk_places_sidebar_get_property;
- GTK_WIDGET_CLASS (class)->focus = gtk_places_sidebar_focus;
-
/**
* GtkPlacesSidebar::open-location:
* @sidebar: the object which received the signal.
@@ -4838,86 +4173,6 @@ gtk_places_sidebar_new (void)
return GTK_WIDGET (g_object_new (gtk_places_sidebar_get_type (), NULL));
}
-
-
-/* Drag and drop interfaces */
-
-/* GtkTreeDragSource::row_draggable implementation for the shortcuts model */
-static gboolean
-shortcuts_model_row_draggable (GtkTreeDragSource *drag_source,
- GtkTreePath *path)
-{
- GtkTreeModel *model;
- GtkTreeIter iter;
- PlaceType place_type;
- SectionType section_type;
-
- model = GTK_TREE_MODEL (drag_source);
-
- gtk_tree_model_get_iter (model, &iter, path);
- gtk_tree_model_get (model, &iter,
- PLACES_SIDEBAR_COLUMN_ROW_TYPE, &place_type,
- PLACES_SIDEBAR_COLUMN_SECTION_TYPE, &section_type,
- -1);
-
- if (place_type != PLACES_HEADING && section_type == SECTION_BOOKMARKS)
- return TRUE;
-
- return FALSE;
-}
-
-/* Fill the GtkTreeDragSourceIface vtable */
-static void
-shortcuts_model_class_init (ShortcutsModelClass *klass)
-{
-}
-
-static void
-shortcuts_model_init (ShortcutsModel *model)
-{
- model->sidebar = NULL;
-}
-
-static void
-shortcuts_model_drag_source_iface_init (GtkTreeDragSourceIface *iface)
-{
- iface->row_draggable = shortcuts_model_row_draggable;
-}
-
-static GtkListStore *
-shortcuts_model_new (GtkPlacesSidebar *sidebar)
-{
- ShortcutsModel *model;
- GType model_types[PLACES_SIDEBAR_COLUMN_COUNT] = {
- G_TYPE_INT,
- G_TYPE_STRING,
- G_TYPE_DRIVE,
- G_TYPE_VOLUME,
- G_TYPE_MOUNT,
- G_TYPE_STRING,
- G_TYPE_ICON,
- G_TYPE_INT,
- G_TYPE_BOOLEAN,
- G_TYPE_BOOLEAN,
- G_TYPE_BOOLEAN,
- G_TYPE_STRING,
- G_TYPE_INT,
- G_TYPE_STRING,
- G_TYPE_BOOLEAN
- };
-
- model = g_object_new (shortcuts_model_get_type (), NULL);
- model->sidebar = sidebar;
-
- gtk_list_store_set_column_types (GTK_LIST_STORE (model),
- PLACES_SIDEBAR_COLUMN_COUNT,
- model_types);
-
- return GTK_LIST_STORE (model);
-}
-
-
-
/* Public methods for GtkPlacesSidebar */
/**
@@ -4991,16 +4246,14 @@ void
gtk_places_sidebar_set_location (GtkPlacesSidebar *sidebar,
GFile *location)
{
- GtkTreeSelection *selection;
- GtkTreeIter iter;
- gboolean valid;
- gchar *iter_uri;
- gchar *uri;
+ GList *children;
+ GList *child;
+ gchar *row_uri;
+ gchar *uri;
g_return_if_fail (GTK_IS_PLACES_SIDEBAR (sidebar));
- selection = gtk_tree_view_get_selection (sidebar->tree_view);
- gtk_tree_selection_unselect_all (selection);
+ gtk_list_box_unselect_all (GTK_LIST_BOX (sidebar->list_box));
if (sidebar->current_location != NULL)
g_object_unref (sidebar->current_location);
@@ -5009,30 +4262,24 @@ gtk_places_sidebar_set_location (GtkPlacesSidebar *sidebar,
g_object_ref (sidebar->current_location);
if (location == NULL)
- goto out;
+ goto out;
uri = g_file_get_uri (location);
- valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (sidebar->store), &iter);
- while (valid)
+ children = gtk_container_get_children (GTK_CONTAINER (sidebar->list_box));
+ for (child = children; child != NULL; child = child->next)
{
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
- PLACES_SIDEBAR_COLUMN_URI, &iter_uri,
- -1);
- if (iter_uri != NULL)
+ g_object_get (GTK_SIDEBAR_ROW (child->data), "uri", &row_uri, NULL);
+ if (row_uri != NULL && g_strcmp0 (row_uri, uri) == 0)
{
- if (strcmp (iter_uri, uri) == 0)
- {
- g_free (iter_uri);
- gtk_tree_selection_select_iter (selection, &iter);
- break;
- }
- g_free (iter_uri);
+ gtk_list_box_select_row (GTK_LIST_BOX (sidebar->list_box),
+ GTK_LIST_BOX_ROW (child->data));
+ break;
}
- valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (sidebar->store), &iter);
}
g_free (uri);
+ g_list_free (children);
out:
g_object_notify_by_pspec (G_OBJECT (sidebar), properties[PROP_LOCATION]);
@@ -5060,23 +4307,20 @@ gtk_places_sidebar_set_location (GtkPlacesSidebar *sidebar,
GFile *
gtk_places_sidebar_get_location (GtkPlacesSidebar *sidebar)
{
- GtkTreeIter iter;
+ GtkListBoxRow *selected;
GFile *file;
g_return_val_if_fail (sidebar != NULL, NULL);
file = NULL;
+ selected = gtk_list_box_get_selected_row (GTK_LIST_BOX (sidebar->list_box));
- if (get_selected_iter (sidebar, &iter))
+ if (selected)
{
gchar *uri;
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
- PLACES_SIDEBAR_COLUMN_URI, &uri,
- -1);
-
+ g_object_get (GTK_SIDEBAR_ROW (selected), "uri", &uri, NULL);
file = g_file_new_for_uri (uri);
- g_free (uri);
}
return file;
@@ -5434,43 +4678,41 @@ GFile *
gtk_places_sidebar_get_nth_bookmark (GtkPlacesSidebar *sidebar,
gint n)
{
- GtkTreeIter iter;
+ GList *rows;
+ GList *l;
int k;
GFile *file;
g_return_val_if_fail (GTK_IS_PLACES_SIDEBAR (sidebar), NULL);
file = NULL;
+ rows = gtk_container_get_children (GTK_CONTAINER (sidebar->list_box));
+ l = rows;
- if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (sidebar->store), &iter))
+ k = 0;
+ while (l != NULL)
{
- k = 0;
+ GtkPlacesSidebarPlaceType place_type;
+ gchar *uri;
- do
+ g_object_get (GTK_SIDEBAR_ROW (l->data),
+ "place-type", &place_type,
+ "uri", &uri,
+ NULL);
+ if (place_type == PLACES_BOOKMARK)
{
- PlaceType place_type;
- gchar *uri;
-
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
- PLACES_SIDEBAR_COLUMN_ROW_TYPE, &place_type,
- PLACES_SIDEBAR_COLUMN_URI, &uri,
- -1);
-
- if (place_type == PLACES_BOOKMARK)
+ if (k == n)
{
- if (k == n)
- {
- file = g_file_new_for_uri (uri);
- g_free (uri);
- break;
- }
- g_free (uri);
- k++;
+ file = g_file_new_for_uri (uri);
+ break;
}
+ k++;
}
- while (gtk_tree_model_iter_next (GTK_TREE_MODEL (sidebar->store), &iter));
+ l = l->next;
}
+ g_list_free (rows);
+
return file;
}
@@ -5500,9 +4742,8 @@ gtk_places_sidebar_set_drop_targets_visible (GtkPlacesSidebar *sidebar,
{
if (visible)
{
- show_new_bookmark_row (sidebar, NULL);
- update_possible_drop_targets (sidebar, TRUE);
sidebar->drop_state = DROP_STATE_NEW_BOOKMARK_ARMED_PERMANENT;
+ start_drop_feedback (sidebar, NULL, context);
}
else
{
@@ -5511,7 +4752,8 @@ gtk_places_sidebar_set_drop_targets_visible (GtkPlacesSidebar *sidebar,
{
if (!sidebar->dragging_over)
{
- on_drag_end (sidebar);
+ sidebar->drop_state = DROP_STATE_NORMAL;
+ stop_drop_feedback (sidebar);
}
else
{
diff --git a/gtk/gtkplacessidebarprivate.h b/gtk/gtkplacessidebarprivate.h
new file mode 100644
index 0000000000..dd5f34b571
--- /dev/null
+++ b/gtk/gtkplacessidebarprivate.h
@@ -0,0 +1,54 @@
+/* gtkplacessidebarprivate.h
+ *
+ * Copyright (C) 2015 Red Hat
+ *
+ * This file is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Authors: Carlos Soriano <csoriano@gnome.org>
+ */
+
+#ifndef __GTK_PLACES_SIDEBAR_PRIVATE_H__
+#define __GTK_PLACES_SIDEBAR_PRIVATE_H__
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+/* Keep order, since it's used for the sort functions */
+typedef enum {
+ SECTION_INVALID,
+ SECTION_COMPUTER,
+ SECTION_DEVICES,
+ SECTION_NETWORK,
+ SECTION_BOOKMARKS,
+ N_SECTIONS
+} GtkPlacesSidebarSectionType;
+
+typedef enum {
+ PLACES_INVALID,
+ PLACES_BUILT_IN,
+ PLACES_XDG_DIR,
+ PLACES_MOUNTED_VOLUME,
+ PLACES_BOOKMARK,
+ PLACES_HEADING,
+ PLACES_CONNECT_TO_SERVER,
+ PLACES_ENTER_LOCATION,
+ PLACES_DROP_FEEDBACK,
+ PLACES_BOOKMARK_PLACEHOLDER,
+ N_PLACES
+} GtkPlacesSidebarPlaceType;
+
+G_END_DECLS
+
+#endif /* __GTK_PLACES_SIDEBAR_PRIVATE_H__ */
diff --git a/gtk/gtksidebarrow.c b/gtk/gtksidebarrow.c
new file mode 100644
index 0000000000..e56180c538
--- /dev/null
+++ b/gtk/gtksidebarrow.c
@@ -0,0 +1,629 @@
+/* gtksidebarrow.c
+ *
+ * Copyright (C) 2015 Carlos Soriano <csoriano@gnome.org>
+ *
+ * This file is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "gtksidebarrowprivate.h"
+/* For section and place type enums */
+#include "gtkplacessidebarprivate.h"
+#include "gtkplacessidebar.h"
+#include "gtkwidget.h"
+#include "gtkimage.h"
+#include "gtklabel.h"
+#include "gtkstylecontext.h"
+#include "gtkrevealer.h"
+#include "gtkselection.h"
+
+struct _GtkSidebarRow
+{
+ GtkListBoxRow parent_instance;
+ GIcon *icon;
+ GtkWidget *icon_widget;
+ gchar *label;
+ gchar *tooltip;
+ GtkWidget *label_widget;
+ gboolean ejectable;
+ GtkWidget *eject_button;
+ gint order_index;
+ GtkPlacesSidebarSectionType section_type;
+ GtkPlacesSidebarPlaceType place_type;
+ gchar *uri;
+ GDrive *drive;
+ GVolume *volume;
+ GMount *mount;
+ gboolean sensitive;
+ gboolean placeholder;
+ GtkPlacesSidebar *sidebar;
+ GtkWidget *event_box;
+ GtkWidget *revealer;
+};
+
+G_DEFINE_TYPE (GtkSidebarRow, gtk_sidebar_row, GTK_TYPE_LIST_BOX_ROW)
+
+enum
+{
+ PROP_0,
+ PROP_ICON,
+ PROP_LABEL,
+ PROP_TOOLTIP,
+ PROP_EJECTABLE,
+ PROP_SIDEBAR,
+ PROP_ORDER_INDEX,
+ PROP_SECTION_TYPE,
+ PROP_PLACE_TYPE,
+ PROP_URI,
+ PROP_DRIVE,
+ PROP_VOLUME,
+ PROP_MOUNT,
+ PROP_SENSITIVE,
+ PROP_PLACEHOLDER,
+ PROP_EJECT_BUTTON,
+ PROP_EVENT_BOX,
+ LAST_PROP
+};
+
+static GParamSpec *gParamSpecs [LAST_PROP];
+
+static void
+gtk_sidebar_row_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ GtkSidebarRow *self = GTK_SIDEBAR_ROW (object);
+
+ switch (prop_id)
+ {
+ case PROP_SIDEBAR:
+ {
+ g_value_set_object (value, self->sidebar);
+ break;
+ }
+
+ case PROP_ICON:
+ {
+ g_value_set_object (value, self->icon);
+ break;
+ }
+
+ case PROP_LABEL:
+ {
+ g_value_set_string (value, self->label);
+ break;
+ }
+
+ case PROP_TOOLTIP:
+ {
+ g_value_set_string (value, self->tooltip);
+ break;
+ }
+
+ case PROP_EJECTABLE:
+ {
+ g_value_set_boolean (value, self->ejectable);
+ break;
+ }
+
+ case PROP_ORDER_INDEX:
+ {
+ g_value_set_int (value, self->order_index);
+ break;
+ }
+
+ case PROP_SECTION_TYPE:
+ {
+ g_value_set_int (value, self->section_type);
+ break;
+ }
+
+ case PROP_PLACE_TYPE:
+ {
+ g_value_set_int (value, self->place_type);
+ break;
+ }
+
+ case PROP_URI:
+ {
+ g_value_set_string (value, self->uri);
+ break;
+ }
+
+ case PROP_DRIVE:
+ {
+ g_value_set_object (value, self->drive);
+ break;
+ }
+
+ case PROP_VOLUME:
+ {
+ g_value_set_object (value, self->volume);
+ break;
+ }
+
+ case PROP_MOUNT:
+ {
+ g_value_set_object (value, self->mount);
+ break;
+ }
+
+ case PROP_SENSITIVE:
+ {
+ g_value_set_boolean (value, self->sensitive);
+ break;
+ }
+
+ case PROP_PLACEHOLDER:
+ {
+ g_value_set_boolean (value, self->placeholder);
+ break;
+ }
+
+ case PROP_EJECT_BUTTON:
+ {
+ g_value_set_object (value, self->eject_button);
+ break;
+ }
+
+ case PROP_EVENT_BOX:
+ {
+ g_value_set_object (value, self->event_box);
+ break;
+ }
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ }
+}
+
+static void
+gtk_sidebar_row_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ GtkSidebarRow *self = GTK_SIDEBAR_ROW (object);
+
+ switch (prop_id)
+ {
+ case PROP_SIDEBAR:
+ {
+ self->sidebar = g_value_get_object (value);
+ break;
+ }
+
+ case PROP_ICON:
+ {
+ g_clear_object (&self->icon);
+ if (value != NULL)
+ {
+ self->icon = g_object_ref (g_value_get_object (value));
+ gtk_image_set_from_gicon (GTK_IMAGE (self->icon_widget), self->icon, GTK_ICON_SIZE_MENU);
+ }
+ else
+ {
+ self->icon = NULL;
+ gtk_image_clear (GTK_IMAGE (self->icon_widget));
+ }
+ break;
+ }
+
+ case PROP_LABEL:
+ {
+ g_free (self->label);
+ self->label = g_strdup (g_value_get_string (value));
+ gtk_label_set_text (GTK_LABEL (self->label_widget), self->label);
+ break;
+ }
+
+ case PROP_TOOLTIP:
+ {
+ g_free (self->tooltip);
+ self->tooltip = g_strdup (g_value_get_string (value));
+ gtk_widget_set_tooltip_text (GTK_WIDGET (self), self->tooltip);
+ break;
+ }
+
+ case PROP_EJECTABLE:
+ {
+ self->ejectable = g_value_get_boolean (value);
+ if (self->ejectable)
+ gtk_widget_show (self->eject_button);
+ else
+ gtk_widget_hide (self->eject_button);
+ break;
+ }
+
+ case PROP_ORDER_INDEX:
+ {
+ self->order_index = g_value_get_int (value);
+ break;
+ }
+
+ case PROP_SECTION_TYPE:
+ {
+ self->section_type = g_value_get_int (value);
+ if (self->section_type != SECTION_COMPUTER)
+ gtk_label_set_ellipsize (GTK_LABEL (self->label_widget), PANGO_ELLIPSIZE_END);
+ else
+ gtk_label_set_ellipsize (GTK_LABEL (self->label_widget), PANGO_ELLIPSIZE_NONE);
+ break;
+ }
+
+ case PROP_PLACE_TYPE:
+ {
+ self->place_type = g_value_get_int (value);
+ break;
+ }
+
+ case PROP_URI:
+ {
+ g_free (self->uri);
+ self->uri = g_strdup (g_value_get_string (value));
+ break;
+ }
+
+ case PROP_DRIVE:
+ {
+ gpointer *object;
+
+ g_clear_object (&self->drive);
+ object = g_value_get_object (value);
+ if (object != NULL)
+ self->drive = g_object_ref (object);
+ break;
+ }
+
+ case PROP_VOLUME:
+ {
+ gpointer *object;
+
+ g_clear_object (&self->volume);
+ object = g_value_get_object (value);
+ if (object != NULL)
+ self->volume = g_object_ref (object);
+ break;
+ }
+
+ case PROP_MOUNT:
+ {
+ gpointer *object;
+
+ g_clear_object (&self->mount);
+ object = g_value_get_object (value);
+ if (object != NULL)
+ self->mount = g_object_ref (object);
+ break;
+ }
+
+ case PROP_SENSITIVE:
+ {
+ GtkStyleContext *style_context;
+
+ self->sensitive = g_value_get_boolean (value);
+ style_context = gtk_widget_get_style_context (GTK_WIDGET (self));
+ /* Modifying the actual sensitivity of the widget makes the drag state
+ * to change and calling drag-leave wich modifies the gtklistbox and a
+ * style race ocurs. So since we only use it for show which rows are
+ * drop targets, we can simple use a dim-label style */
+ if (self->sensitive)
+ gtk_style_context_remove_class (style_context, "dim-label");
+ else
+ gtk_style_context_add_class (style_context, "dim-label");
+
+ break;
+ }
+
+ case PROP_PLACEHOLDER:
+ {
+ GtkStyleContext *context;
+
+ self->placeholder = g_value_get_boolean (value);
+ if (self->placeholder)
+ {
+ g_clear_object (&self->icon);
+ g_free (self->label);
+ self->label = NULL;
+ g_free (self->tooltip);
+ self->tooltip = NULL;
+ gtk_widget_set_tooltip_text (GTK_WIDGET (self), NULL);
+ self->ejectable = FALSE;
+ self->section_type = SECTION_BOOKMARKS;
+ self->place_type = PLACES_BOOKMARK_PLACEHOLDER;
+ g_free (self->uri);
+ self->uri = NULL;
+ g_clear_object (&self->drive);
+ g_clear_object (&self->volume);
+ g_clear_object (&self->mount);
+
+ gtk_container_foreach (GTK_CONTAINER (self),
+ (GtkCallback) gtk_widget_destroy,
+ NULL);
+
+ context = gtk_widget_get_style_context (GTK_WIDGET (self));
+ gtk_style_context_add_class (context, "sidebar-placeholder-row");
+ }
+
+ break;
+ }
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ }
+}
+
+static void
+on_child_revealed (GObject *self,
+ GParamSpec *pspec,
+ gpointer user_data)
+{
+ /* We need to hide the actual widget because if not the GtkListBoxRow will
+ * still allocate the paddings, even if the revealer is not revealed, and
+ * therefore the row will be still somewhat visible. */
+ if (!gtk_revealer_get_reveal_child (GTK_REVEALER (self)))
+ gtk_widget_hide (GTK_WIDGET (GTK_SIDEBAR_ROW (user_data)));
+}
+
+void
+gtk_sidebar_row_reveal (GtkSidebarRow *self)
+{
+ gtk_widget_show_all (GTK_WIDGET (self));
+ gtk_revealer_set_reveal_child (GTK_REVEALER (self->revealer), TRUE);
+}
+
+void
+gtk_sidebar_row_hide (GtkSidebarRow *self,
+ gboolean inmediate)
+{
+ guint transition_duration;
+
+ transition_duration = gtk_revealer_get_transition_duration (GTK_REVEALER (self->revealer));
+ if (inmediate)
+ gtk_revealer_set_transition_duration (GTK_REVEALER (self->revealer), 0);
+
+ gtk_revealer_set_reveal_child (GTK_REVEALER (self->revealer), FALSE);
+
+ gtk_revealer_set_transition_duration (GTK_REVEALER (self->revealer), transition_duration);
+}
+
+static void
+gtk_sidebar_row_finalize (GObject *object)
+{
+ GtkSidebarRow *self = GTK_SIDEBAR_ROW (object);
+
+ g_clear_object (&self->icon);
+ g_free (self->label);
+ self->label = NULL;
+ g_free (self->tooltip);
+ self->tooltip = NULL;
+ g_free (self->uri);
+ self->uri = NULL;
+ g_clear_object (&self->drive);
+ g_clear_object (&self->volume);
+ g_clear_object (&self->mount);
+}
+
+static void
+gtk_sidebar_row_init (GtkSidebarRow *self)
+{
+ gtk_widget_init_template (GTK_WIDGET (self));
+}
+
+static void
+gtk_sidebar_row_class_init (GtkSidebarRowClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+ object_class->get_property = gtk_sidebar_row_get_property;
+ object_class->set_property = gtk_sidebar_row_set_property;
+ object_class->finalize = gtk_sidebar_row_finalize;
+
+ gParamSpecs [PROP_SIDEBAR] =
+ g_param_spec_object ("sidebar",
+ "Sidebar",
+ "Sidebar",
+ GTK_TYPE_PLACES_SIDEBAR,
+ (G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (object_class, PROP_SIDEBAR,
+ gParamSpecs [PROP_SIDEBAR]);
+ gParamSpecs [PROP_ICON] =
+ g_param_spec_object ("icon",
+ "icon",
+ "The place icon.",
+ G_TYPE_ICON,
+ (G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (object_class, PROP_ICON,
+ gParamSpecs [PROP_ICON]);
+
+ gParamSpecs [PROP_LABEL] =
+ g_param_spec_string ("label",
+ "label",
+ "The label text.",
+ NULL,
+ (G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (object_class, PROP_LABEL,
+ gParamSpecs [PROP_LABEL]);
+
+ gParamSpecs [PROP_TOOLTIP] =
+ g_param_spec_string ("tooltip",
+ "Tooltip",
+ "Tooltip",
+ NULL,
+ (G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (object_class, PROP_TOOLTIP,
+ gParamSpecs [PROP_TOOLTIP]);
+
+ gParamSpecs [PROP_EJECTABLE] =
+ g_param_spec_boolean ("ejectable",
+ "Ejectable",
+ "Ejectable",
+ FALSE,
+ (G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (object_class, PROP_EJECTABLE,
+ gParamSpecs [PROP_EJECTABLE]);
+
+ gParamSpecs [PROP_ORDER_INDEX] =
+ g_param_spec_int ("order-index",
+ "OrderIndex",
+ "Order Index",
+ 0, G_MAXINT, 0,
+ (G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (object_class, PROP_ORDER_INDEX,
+ gParamSpecs [PROP_ORDER_INDEX]);
+
+ gParamSpecs [PROP_SECTION_TYPE] =
+ g_param_spec_int ("section-type",
+ "section type",
+ "The section type.",
+ SECTION_INVALID, N_SECTIONS, SECTION_INVALID,
+ (G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS |
+ G_PARAM_CONSTRUCT_ONLY));
+ g_object_class_install_property (object_class, PROP_SECTION_TYPE,
+ gParamSpecs [PROP_SECTION_TYPE]);
+
+ gParamSpecs [PROP_PLACE_TYPE] =
+ g_param_spec_int ("place-type",
+ "place type",
+ "The place type.",
+ PLACES_INVALID, N_PLACES, PLACES_INVALID,
+ (G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS |
+ G_PARAM_CONSTRUCT_ONLY));
+ g_object_class_install_property (object_class, PROP_PLACE_TYPE,
+ gParamSpecs [PROP_PLACE_TYPE]);
+
+ gParamSpecs [PROP_URI] =
+ g_param_spec_string ("uri",
+ "Uri",
+ "Uri",
+ NULL,
+ (G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (object_class, PROP_URI,
+ gParamSpecs [PROP_URI]);
+ gParamSpecs [PROP_DRIVE] =
+ g_param_spec_object ("drive",
+ "Drive",
+ "Drive",
+ G_TYPE_DRIVE,
+ (G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (object_class, PROP_DRIVE,
+ gParamSpecs [PROP_DRIVE]);
+
+ gParamSpecs [PROP_VOLUME] =
+ g_param_spec_object ("volume",
+ "Volume",
+ "Volume",
+ G_TYPE_VOLUME,
+ (G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (object_class, PROP_VOLUME,
+ gParamSpecs [PROP_VOLUME]);
+
+ gParamSpecs [PROP_MOUNT] =
+ g_param_spec_object ("mount",
+ "Mount",
+ "Mount",
+ G_TYPE_MOUNT,
+ (G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (object_class, PROP_MOUNT,
+ gParamSpecs [PROP_MOUNT]);
+ gParamSpecs [PROP_SENSITIVE] =
+ g_param_spec_boolean ("sensitive",
+ "Sensitive",
+ "Make the row sensitive or not",
+ TRUE,
+ (G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (object_class, PROP_SENSITIVE,
+ gParamSpecs [PROP_SENSITIVE]);
+
+ gParamSpecs [PROP_PLACEHOLDER] =
+ g_param_spec_boolean ("placeholder",
+ "Placeholder",
+ "Placeholder",
+ FALSE,
+ (G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (object_class, PROP_PLACEHOLDER,
+ gParamSpecs [PROP_PLACEHOLDER]);
+
+ gParamSpecs [PROP_EJECT_BUTTON] =
+ g_param_spec_object ("eject-button",
+ "Eject Button",
+ "Eject button",
+ GTK_TYPE_WIDGET,
+ (G_PARAM_READABLE |
+ G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (object_class, PROP_EJECT_BUTTON,
+ gParamSpecs [PROP_EJECT_BUTTON]);
+
+ gParamSpecs [PROP_EVENT_BOX] =
+ g_param_spec_object ("event-box",
+ "Event Box",
+ "Event Box",
+ GTK_TYPE_WIDGET,
+ (G_PARAM_READABLE |
+ G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (object_class, PROP_EVENT_BOX,
+ gParamSpecs [PROP_EVENT_BOX]);
+
+ gtk_widget_class_set_template_from_resource (widget_class,
+ "/org/gtk/libgtk/ui/gtksidebarrow.ui");
+
+ gtk_widget_class_bind_template_child (widget_class, GtkSidebarRow, icon_widget);
+ gtk_widget_class_bind_template_child (widget_class, GtkSidebarRow, label_widget);
+ gtk_widget_class_bind_template_child (widget_class, GtkSidebarRow, eject_button);
+ gtk_widget_class_bind_template_child (widget_class, GtkSidebarRow, event_box);
+ gtk_widget_class_bind_template_child (widget_class, GtkSidebarRow, revealer);
+
+ gtk_widget_class_bind_template_callback (widget_class, on_child_revealed);
+}
+
+
+GtkSidebarRow*
+gtk_sidebar_row_clone (GtkSidebarRow *self)
+{
+ return g_object_new (GTK_TYPE_SIDEBAR_ROW,
+ "sidebar", self->sidebar,
+ "icon", self->icon,
+ "label", self->label,
+ "tooltip", self->tooltip,
+ "ejectable", self->ejectable,
+ "order-index", self->order_index,
+ "section-type", self->section_type,
+ "place-type", self->place_type,
+ "uri", self->uri,
+ "drive", self->drive,
+ "volume", self->volume,
+ "mount", self->mount,
+ NULL);
+}
diff --git a/gtk/gtksidebarrowprivate.h b/gtk/gtksidebarrowprivate.h
new file mode 100644
index 0000000000..b513184e7a
--- /dev/null
+++ b/gtk/gtksidebarrowprivate.h
@@ -0,0 +1,53 @@
+/* gtksidebarrowprivate.h
+ *
+ * Copyright (C) 2015 Carlos Soriano <csoriano@gnome.org>
+ *
+ * This file is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef GTK_SIDEBAR_ROW_PRIVATE_H
+#define GTK_SIDEBAR_ROW_PRIVATE_H
+
+#include <glib.h>
+#include "gtklistbox.h"
+
+G_BEGIN_DECLS
+
+#define GTK_TYPE_SIDEBAR_ROW (gtk_sidebar_row_get_type())
+#define GTK_SIDEBAR_ROW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_SIDEBAR_ROW, GtkSidebarRow))
+#define GTK_SIDEBAR_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_SIDEBAR_ROW, GtkSidebarRowClass))
+#define GTK_IS_SIDEBAR_ROW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_SIDEBAR_ROW))
+#define GTK_IS_SIDEBAR_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_SIDEBAR_ROW))
+#define GTK_SIDEBAR_ROW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_SIDEBAR_ROW, GtkSidebarRowClass))
+
+typedef struct _GtkSidebarRow GtkSidebarRow;
+typedef struct _GtkSidebarRowClass GtkSidebarRowClass;
+
+struct _GtkSidebarRowClass
+{
+ GtkListBoxRowClass parent;
+};
+
+GType gtk_sidebar_row_get_type (void) G_GNUC_CONST;
+
+GtkSidebarRow *gtk_sidebar_row_new (void);
+GtkSidebarRow *gtk_sidebar_row_clone (GtkSidebarRow *self);
+
+/* Use these methods instead of gtk_widget_hide/show to use an animation */
+void gtk_sidebar_row_hide (GtkSidebarRow *self,
+ gboolean inmediate);
+void gtk_sidebar_row_reveal (GtkSidebarRow *self);
+
+G_END_DECLS
+
+#endif /* GTK_SIDEBAR_ROW_PRIVATE_H */
diff --git a/gtk/theme/Adwaita/_colors.scss b/gtk/theme/Adwaita/_colors.scss
index 4590c1e264..1479064ecd 100644
--- a/gtk/theme/Adwaita/_colors.scss
+++ b/gtk/theme/Adwaita/_colors.scss
@@ -30,7 +30,7 @@ $osd_insensitive_bg_color: transparentize(mix($osd_fg_color, opacify($osd_bg_col
$osd_insensitive_fg_color: mix($osd_fg_color, opacify($osd_bg_color, 1), 50%);
$osd_borders_color: transparentize(black, 0.3);
-$sidebar_bg_color: lighten($bg_color,5%);
+$sidebar_bg_color: lighten($bg_color, 2%);
$tooltip_borders_color: transparentize(white, 0.9);
@@ -48,6 +48,6 @@ $backdrop_insensitive_color: if($variant == 'light', darken($backdrop_bg_color,
$backdrop_selected_fg_color: $selected_fg_color;
$backdrop_borders_color: mix($borders_color, $bg_color, 90%);
$backdrop_dark_fill: mix($backdrop_borders_color, $backdrop_bg_color, 35%);
-$backdrop_sidebar_bg_color: lighten($backdrop_bg_color,5%);
+$backdrop_sidebar_bg_color: lighten($backdrop_bg_color, 2%);
$backdrop_scrollbar_bg_color: darken($backdrop_bg_color, 3%);
diff --git a/gtk/theme/Adwaita/_common.scss b/gtk/theme/Adwaita/_common.scss
index 6494235e8b..5eec84eb23 100644
--- a/gtk/theme/Adwaita/_common.scss
+++ b/gtk/theme/Adwaita/_common.scss
@@ -2893,7 +2893,8 @@ GtkFileChooserDialog {
.sidebar {
border: none;
- background-color: $sidebar_bg_color;
+ // Popover background color
+ background-color: mix($bg_color, $base_color, 50%);
&:backdrop {
background-color: $backdrop_sidebar_bg_color;
@@ -2904,47 +2905,61 @@ GtkFileChooserDialog {
}
}
-// Places sidebar is a special case, since the view here have to look like chrome not content, so we override text color
-GtkPlacesSidebar.sidebar .view {
-
- color: $fg_color;
- background-color: transparent;
-
- .separator,
- .separator:backdrop { @extend .separator; }
-
- .image { // icons color
- color: mix($fg_color, $sidebar_bg_color, 70%);
-
- &:selected {
- color: mix($selected_fg_color, $selected_bg_color, 90%);
-
- &:backdrop { color: mix($backdrop_selected_fg_color, $selected_bg_color, 90%); }
- }
-
- &:insensitive { color: mix($insensitive_fg_color, $sidebar_bg_color, 70%); }
-
- &:backdrop {
- color: mix($backdrop_fg_color, $sidebar_bg_color, 70%);
+$_placesidebar_icons_opacity: 0.7;
+GtkSidebarRow {
+ // Needs overriding of the GtkListBoxRow padding
+ @at-root .list-row {
+ padding: 0px;
+ }
+ // Using margins/padding directly in the SidebarRow
+ // will make the animation of the new bookmark row jump
+ .sidebar-revealer {
+ padding: 4px 14px 4px 12px;
+ }
+ .sidebar-icon {
+ padding-right: 8px;
+ opacity: $_placesidebar_icons_opacity; // dim the device icons
+ }
+ .sidebar-label {
+ padding-right: 2px;
+ }
+}
- &:insensitive { color: mix($backdrop_insensitive_color, $sidebar_bg_color, 70%); }
+GtkPlacesSidebar.sidebar {
+ .sidebar-placeholder-row {
+ border: solid 1px $selected_bg_color;
+ }
+ .sidebar-new-bookmark-row {
+ background-color: darken($sidebar_bg_color, 10%);
+ }
+ // Preserve everything else of the list-row class
+ @at-root .list-row.button {
+ // Popover menuitem color
+ &:hover {
+ background-color: mix($fg_color, $bg_color, 10%);
}
}
+ @at-root .sidebar-button.button { // @at-root needded to not change the specificity making button styling inheritance broken
+ // so istead of "GtkPlacesSidebar.sidebar .sidebar-button.button" [specificity 0,0,3,1]
+ // the extended selector ".sidebar-button.button" [specificity 0,0,2,0]
- &:insensitive { color: $insensitive_fg_color; }
-
- &:backdrop {
- color: $backdrop_fg_color;
-
- &:insensitive { color: $backdrop_insensitive_color; }
- }
+ &.image-button { padding: 5px; }
- &:selected {
- @extend %selected_items;
+ @extend .button.flat;
+ border-radius: 100%;
+ outline-radius: 100%;
+/* &:hover:not(:active):not(:backdrop) {
+ background-image: none;
+ background-color: gtkalpha(currentColor, 0.1);
+ border-color: transparentize($borders_color, 1);
+ box-shadow: inset 0 0 transparentize(white, 1);
+ icon-shadow: none;
+ } */
+ &:not(:hover):not(:active) > GtkImage,
+ &:backdrop > GtkImage { opacity: $_placesidebar_icons_opacity };
}
}
-
.sidebar-item {
padding: 10px 4px;
> .label {
@@ -2957,7 +2972,6 @@ GtkPlacesSidebar.sidebar .view {
}
}
-
/*********
* Paned *
*********/
diff --git a/gtk/theme/Adwaita/gtk-contained-dark.css b/gtk/theme/Adwaita/gtk-contained-dark.css
index 22e36f7c06..f3a83fbfd0 100644
--- a/gtk/theme/Adwaita/gtk-contained-dark.css
+++ b/gtk/theme/Adwaita/gtk-contained-dark.css
@@ -77,16 +77,16 @@
border: 1px solid #215d9c;
background-color: rgba(33, 93, 156, 0.2); }
-.label.separator, GtkPlacesSidebar.sidebar .view .label.separator {
+.label.separator {
color: #eeeeec; }
- .label.separator:backdrop, GtkPlacesSidebar.sidebar .view .label.separator:backdrop {
+ .label.separator:backdrop {
color: #949796; }
.label:insensitive {
color: #949796; }
.label:insensitive:backdrop {
color: #5d6767; }
-.dim-label, .label.separator, GtkPlacesSidebar.sidebar .view .label.separator, .titlebar .subtitle,
+.dim-label, .label.separator, .titlebar .subtitle,
.header-bar .subtitle {
opacity: 0.55;
text-shadow: none; }
@@ -325,7 +325,7 @@ GtkTextView {
text-shadow: 0 -1px rgba(0, 0, 0, 0.81176);
icon-shadow: 0 -1px rgba(0, 0, 0, 0.81176);
box-shadow: inset 0 1px rgba(255, 255, 255, 0.1), 0 1px rgba(238, 238, 236, 0.1); }
- .button.flat, .header-bar .titlebutton.button,
+ .button.flat, .sidebar-button.button, .header-bar .titlebutton.button,
.titlebar .titlebutton.button {
border-color: transparent;
background-color: transparent;
@@ -334,11 +334,11 @@ GtkTextView {
text-shadow: none;
icon-shadow: none;
transition: none; }
- .button.flat:hover, .header-bar .titlebutton.button:hover,
+ .button.flat:hover, .sidebar-button.button:hover, .header-bar .titlebutton.button:hover,
.titlebar .titlebutton.button:hover {
transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94);
transition-duration: 500ms; }
- .button.flat:hover:active, .header-bar .titlebutton.button:hover:active,
+ .button.flat:hover:active, .sidebar-button.button:hover:active, .header-bar .titlebutton.button:hover:active,
.titlebar .titlebutton.button:hover:active {
transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
.button:hover, .header-bar .button.titlebutton:hover,
@@ -363,7 +363,7 @@ GtkTextView {
box-shadow: inset 0 1px rgba(0, 0, 0, 0.07), inset 0 2px 1px -2px rgba(0, 0, 0, 0.6), 0 1px rgba(238, 238, 236, 0.1);
transition-duration: 50ms; }
.button:backdrop, .header-bar .button.titlebutton:backdrop,
- .titlebar .button.titlebutton:backdrop, .button.flat:backdrop, .header-bar .titlebutton.button:backdrop,
+ .titlebar .button.titlebutton:backdrop, .button.flat:backdrop, .sidebar-button.button:backdrop, .header-bar .titlebutton.button:backdrop,
.titlebar .titlebutton.button:backdrop {
color: #949796;
border-color: #1f2222;
@@ -372,14 +372,14 @@ GtkTextView {
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0);
-gtk-image-effect: none; }
- .button:backdrop:active, .button:backdrop:checked, .button.flat:backdrop:active, .header-bar .titlebutton.button:backdrop:active,
- .titlebar .titlebutton.button:backdrop:active, .button.flat:backdrop:checked, .header-bar .titlebutton.button:backdrop:checked,
+ .button:backdrop:active, .button:backdrop:checked, .button.flat:backdrop:active, .sidebar-button.button:backdrop:active, .header-bar .titlebutton.button:backdrop:active,
+ .titlebar .titlebutton.button:backdrop:active, .button.flat:backdrop:checked, .sidebar-button.button:backdrop:checked, .header-bar .titlebutton.button:backdrop:checked,
.titlebar .titlebutton.button:backdrop:checked {
color: #949796;
border-color: #1f2222;
background-image: linear-gradient(to bottom, #303535);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0); }
- .button:backdrop:insensitive, .button.flat:backdrop:insensitive, .header-bar .titlebutton.button:backdrop:insensitive,
+ .button:backdrop:insensitive, .button.flat:backdrop:insensitive, .sidebar-button.button:backdrop:insensitive, .header-bar .titlebutton.button:backdrop:insensitive,
.titlebar .titlebutton.button:backdrop:insensitive {
color: #5d6767;
border-color: #1f2222;
@@ -388,11 +388,11 @@ GtkTextView {
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0); }
.button:backdrop:insensitive > .label, .header-bar .button.titlebutton:backdrop:insensitive > .label,
- .titlebar .button.titlebutton:backdrop:insensitive > .label, .button.flat:backdrop:insensitive > .label, .header-bar .titlebutton.button:backdrop:insensitive > .label,
+ .titlebar .button.titlebutton:backdrop:insensitive > .label, .button.flat:backdrop:insensitive > .label, .sidebar-button.button:backdrop:insensitive > .label, .header-bar .titlebutton.button:backdrop:insensitive > .label,
.titlebar .titlebutton.button:backdrop:insensitive > .label {
color: inherit; }
- .button:backdrop:insensitive:active, .button:backdrop:insensitive:checked, .button.flat:backdrop:insensitive:active, .header-bar .titlebutton.button:backdrop:insensitive:active,
- .titlebar .titlebutton.button:backdrop:insensitive:active, .button.flat:backdrop:insensitive:checked, .header-bar .titlebutton.button:backdrop:insensitive:checked,
+ .button:backdrop:insensitive:active, .button:backdrop:insensitive:checked, .button.flat:backdrop:insensitive:active, .sidebar-button.button:backdrop:insensitive:active, .header-bar .titlebutton.button:backdrop:insensitive:active,
+ .titlebar .titlebutton.button:backdrop:insensitive:active, .button.flat:backdrop:insensitive:checked, .sidebar-button.button:backdrop:insensitive:checked, .header-bar .titlebutton.button:backdrop:insensitive:checked,
.titlebar .titlebutton.button:backdrop:insensitive:checked {
color: #5d6767;
border-color: #1f2222;
@@ -400,13 +400,13 @@ GtkTextView {
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0); }
.button:backdrop:insensitive:active > .label, .header-bar .button.titlebutton:backdrop:insensitive:active > .label,
.titlebar .button.titlebutton:backdrop:insensitive:active > .label, .button:backdrop:insensitive:checked > .label, .header-bar .button.titlebutton:backdrop:insensitive:checked > .label,
- .titlebar .button.titlebutton:backdrop:insensitive:checked > .label, .button.flat:backdrop:insensitive:active > .label, .header-bar .titlebutton.button:backdrop:insensitive:active > .label,
- .titlebar .titlebutton.button:backdrop:insensitive:active > .label, .button.flat:backdrop:insensitive:checked > .label, .header-bar .titlebutton.button:backdrop:insensitive:checked > .label,
+ .titlebar .button.titlebutton:backdrop:insensitive:checked > .label, .button.flat:backdrop:insensitive:active > .label, .sidebar-button.button:backdrop:insensitive:active > .label, .header-bar .titlebutton.button:backdrop:insensitive:active > .label,
+ .titlebar .titlebutton.button:backdrop:insensitive:active > .label, .button.flat:backdrop:insensitive:checked > .label, .sidebar-button.button:backdrop:insensitive:checked > .label, .header-bar .titlebutton.button:backdrop:insensitive:checked > .label,
.titlebar .titlebutton.button:backdrop:insensitive:checked > .label {
color: inherit; }
- .button.flat:backdrop, .header-bar .titlebutton.button:backdrop,
- .titlebar .titlebutton.button:backdrop, .button.flat:insensitive, .header-bar .titlebutton.button:insensitive,
- .titlebar .titlebutton.button:insensitive, .button.flat:backdrop:insensitive, .header-bar .titlebutton.button:backdrop:insensitive,
+ .button.flat:backdrop, .sidebar-button.button:backdrop, .header-bar .titlebutton.button:backdrop,
+ .titlebar .titlebutton.button:backdrop, .button.flat:insensitive, .sidebar-button.button:insensitive, .header-bar .titlebutton.button:insensitive,
+ .titlebar .titlebutton.button:insensitive, .button.flat:backdrop:insensitive, .sidebar-button.button:backdrop:insensitive, .header-bar .titlebutton.button:backdrop:insensitive,
.titlebar .titlebutton.button:backdrop:insensitive {
border-color: transparent;
background-color: transparent;
@@ -553,7 +553,7 @@ GtkTextView {
box-shadow: none;
text-shadow: none;
icon-shadow: none; }
- .osd .button.flat, .osd .header-bar .titlebutton.button, .header-bar .osd .titlebutton.button,
+ .osd .button.flat, .osd .sidebar-button.button, .osd .header-bar .titlebutton.button, .header-bar .osd .titlebutton.button,
.osd .titlebar .titlebutton.button,
.titlebar .osd .titlebutton.button {
border-color: transparent;
@@ -565,7 +565,7 @@ GtkTextView {
box-shadow: none;
text-shadow: 0 1px black;
icon-shadow: 0 1px black; }
- .osd .button.flat:hover, .osd .header-bar .titlebutton.button:hover, .header-bar .osd .titlebutton.button:hover,
+ .osd .button.flat:hover, .osd .sidebar-button.button:hover, .osd .header-bar .titlebutton.button:hover, .header-bar .osd .titlebutton.button:hover,
.osd .titlebar .titlebutton.button:hover,
.titlebar .osd .titlebutton.button:hover {
color: white;
@@ -579,7 +579,7 @@ GtkTextView {
background-clip: padding-box;
border-color: transparent;
box-shadow: none; }
- .osd .button.flat:insensitive, .osd .header-bar .titlebutton.button:insensitive, .header-bar .osd .titlebutton.button:insensitive,
+ .osd .button.flat:insensitive, .osd .sidebar-button.button:insensitive, .osd .header-bar .titlebutton.button:insensitive, .header-bar .osd .titlebutton.button:insensitive,
.osd .titlebar .titlebutton.button:insensitive,
.titlebar .osd .titlebutton.button:insensitive {
color: #878a89;
@@ -592,7 +592,7 @@ GtkTextView {
background-image: none;
border-color: transparent;
box-shadow: none; }
- .osd .button.flat:backdrop, .osd .header-bar .titlebutton.button:backdrop, .header-bar .osd .titlebutton.button:backdrop,
+ .osd .button.flat:backdrop, .osd .sidebar-button.button:backdrop, .osd .header-bar .titlebutton.button:backdrop, .header-bar .osd .titlebutton.button:backdrop,
.osd .titlebar .titlebutton.button:backdrop,
.titlebar .osd .titlebutton.button:backdrop {
border-color: transparent;
@@ -601,9 +601,9 @@ GtkTextView {
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0);
text-shadow: none;
icon-shadow: none; }
- .osd .button.flat:active, .osd .header-bar .titlebutton.button:active, .header-bar .osd .titlebutton.button:active,
+ .osd .button.flat:active, .osd .sidebar-button.button:active, .osd .header-bar .titlebutton.button:active, .header-bar .osd .titlebutton.button:active,
.osd .titlebar .titlebutton.button:active,
- .titlebar .osd .titlebutton.button:active, .osd .button.flat:checked, .osd .header-bar .titlebutton.button:checked, .header-bar .osd .titlebutton.button:checked,
+ .titlebar .osd .titlebutton.button:active, .osd .button.flat:checked, .osd .sidebar-button.button:checked, .osd .header-bar .titlebutton.button:checked, .header-bar .osd .titlebutton.button:checked,
.osd .titlebar .titlebutton.button:checked,
.titlebar .osd .titlebutton.button:checked {
color: white;
@@ -626,7 +626,7 @@ GtkTextView {
text-shadow: 0 -1px rgba(0, 0, 0, 0.70353);
icon-shadow: 0 -1px rgba(0, 0, 0, 0.70353);
box-shadow: inset 0 1px rgba(255, 255, 255, 0.1), 0 1px rgba(238, 238, 236, 0.1); }
- .button.suggested-action.flat, .header-bar .suggested-action.titlebutton.button,
+ .button.suggested-action.flat, .suggested-action.sidebar-button.button, .header-bar .suggested-action.titlebutton.button,
.titlebar .suggested-action.titlebutton.button {
border-color: transparent;
background-color: transparent;
@@ -651,7 +651,7 @@ GtkTextView {
text-shadow: 0 -1px rgba(0, 0, 0, 0.78353);
icon-shadow: 0 -1px rgba(0, 0, 0, 0.78353);
box-shadow: inset 0 1px rgba(0, 0, 0, 0.07), inset 0 2px 1px -2px rgba(0, 0, 0, 0.6), 0 1px rgba(238, 238, 236, 0.1); }
- .button.suggested-action:backdrop, .button.suggested-action.flat:backdrop, .header-bar .suggested-action.titlebutton.button:backdrop,
+ .button.suggested-action:backdrop, .button.suggested-action.flat:backdrop, .suggested-action.sidebar-button.button:backdrop, .header-bar .suggested-action.titlebutton.button:backdrop,
.titlebar .suggested-action.titlebutton.button:backdrop {
color: #d3dfeb;
border-color: #0b1e33;
@@ -659,14 +659,14 @@ GtkTextView {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0); }
- .button.suggested-action:backdrop:active, .button.suggested-action:backdrop:checked, .button.suggested-action.flat:backdrop:active, .header-bar .suggested-action.titlebutton.button:backdrop:active,
- .titlebar .suggested-action.titlebutton.button:backdrop:active, .button.suggested-action.flat:backdrop:checked, .header-bar .suggested-action.titlebutton.button:backdrop:checked,
+ .button.suggested-action:backdrop:active, .button.suggested-action:backdrop:checked, .button.suggested-action.flat:backdrop:active, .suggested-action.sidebar-button.button:backdrop:active, .header-bar .suggested-action.titlebutton.button:backdrop:active,
+ .titlebar .suggested-action.titlebutton.button:backdrop:active, .button.suggested-action.flat:backdrop:checked, .suggested-action.sidebar-button.button:backdrop:checked, .header-bar .suggested-action.titlebutton.button:backdrop:checked,
.titlebar .suggested-action.titlebutton.button:backdrop:checked {
color: #d1dae3;
border-color: #0b1e33;
background-image: linear-gradient(to bottom, #184472);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0); }
- .button.suggested-action:backdrop:insensitive, .button.suggested-action.flat:backdrop:insensitive, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive,
+ .button.suggested-action:backdrop:insensitive, .button.suggested-action.flat:backdrop:insensitive, .suggested-action.sidebar-button.button:backdrop:insensitive, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive,
.titlebar .suggested-action.titlebutton.button:backdrop:insensitive {
color: #5d6767;
border-color: #1f2222;
@@ -675,11 +675,11 @@ GtkTextView {
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0); }
.button.suggested-action:backdrop:insensitive > .label, .header-bar .suggested-action.button.titlebutton:backdrop:insensitive > .label,
- .titlebar .suggested-action.button.titlebutton:backdrop:insensitive > .label, .button.suggested-action.flat:backdrop:insensitive > .label, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive > .label,
+ .titlebar .suggested-action.button.titlebutton:backdrop:insensitive > .label, .button.suggested-action.flat:backdrop:insensitive > .label, .suggested-action.sidebar-button.button:backdrop:insensitive > .label, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive > .label,
.titlebar .suggested-action.titlebutton.button:backdrop:insensitive > .label {
color: inherit; }
- .button.suggested-action:backdrop:insensitive:active, .button.suggested-action:backdrop:insensitive:checked, .button.suggested-action.flat:backdrop:insensitive:active, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive:active,
- .titlebar .suggested-action.titlebutton.button:backdrop:insensitive:active, .button.suggested-action.flat:backdrop:insensitive:checked, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive:checked,
+ .button.suggested-action:backdrop:insensitive:active, .button.suggested-action:backdrop:insensitive:checked, .button.suggested-action.flat:backdrop:insensitive:active, .suggested-action.sidebar-button.button:backdrop:insensitive:active, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive:active,
+ .titlebar .suggested-action.titlebutton.button:backdrop:insensitive:active, .button.suggested-action.flat:backdrop:insensitive:checked, .suggested-action.sidebar-button.button:backdrop:insensitive:checked, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive:checked,
.titlebar .suggested-action.titlebutton.button:backdrop:insensitive:checked {
color: #6c88a7;
border-color: #0b1e33;
@@ -687,13 +687,13 @@ GtkTextView {
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0); }
.button.suggested-action:backdrop:insensitive:active > .label, .header-bar .suggested-action.button.titlebutton:backdrop:insensitive:active > .label,
.titlebar .suggested-action.button.titlebutton:backdrop:insensitive:active > .label, .button.suggested-action:backdrop:insensitive:checked > .label, .header-bar .suggested-action.button.titlebutton:backdrop:insensitive:checked > .label,
- .titlebar .suggested-action.button.titlebutton:backdrop:insensitive:checked > .label, .button.suggested-action.flat:backdrop:insensitive:active > .label, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive:active > .label,
- .titlebar .suggested-action.titlebutton.button:backdrop:insensitive:active > .label, .button.suggested-action.flat:backdrop:insensitive:checked > .label, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive:checked > .label,
+ .titlebar .suggested-action.button.titlebutton:backdrop:insensitive:checked > .label, .button.suggested-action.flat:backdrop:insensitive:active > .label, .suggested-action.sidebar-button.button:backdrop:insensitive:active > .label, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive:active > .label,
+ .titlebar .suggested-action.titlebutton.button:backdrop:insensitive:active > .label, .button.suggested-action.flat:backdrop:insensitive:checked > .label, .suggested-action.sidebar-button.button:backdrop:insensitive:checked > .label, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive:checked > .label,
.titlebar .suggested-action.titlebutton.button:backdrop:insensitive:checked > .label {
color: inherit; }
- .button.suggested-action.flat:backdrop, .header-bar .suggested-action.titlebutton.button:backdrop,
- .titlebar .suggested-action.titlebutton.button:backdrop, .button.suggested-action.flat:insensitive, .header-bar .suggested-action.titlebutton.button:insensitive,
- .titlebar .suggested-action.titlebutton.button:insensitive, .button.suggested-action.flat:backdrop:insensitive, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive,
+ .button.suggested-action.flat:backdrop, .suggested-action.sidebar-button.button:backdrop, .header-bar .suggested-action.titlebutton.button:backdrop,
+ .titlebar .suggested-action.titlebutton.button:backdrop, .button.suggested-action.flat:insensitive, .suggested-action.sidebar-button.button:insensitive, .header-bar .suggested-action.titlebutton.button:insensitive,
+ .titlebar .suggested-action.titlebutton.button:insensitive, .button.suggested-action.flat:backdrop:insensitive, .suggested-action.sidebar-button.button:backdrop:insensitive, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive,
.titlebar .suggested-action.titlebutton.button:backdrop:insensitive {
border-color: transparent;
background-color: transparent;
@@ -773,7 +773,7 @@ GtkTextView {
text-shadow: 0 -1px rgba(0, 0, 0, 0.64078);
icon-shadow: 0 -1px rgba(0, 0, 0, 0.64078);
box-shadow: inset 0 1px rgba(255, 255, 255, 0.3), 0 1px rgba(238, 238, 236, 0.1); }
- .button.destructive-action.flat, .header-bar .destructive-action.titlebutton.button,
+ .button.destructive-action.flat, .destructive-action.sidebar-button.button, .header-bar .destructive-action.titlebutton.button,
.titlebar .destructive-action.titlebutton.button {
border-color: transparent;
background-color: transparent;
@@ -798,7 +798,7 @@ GtkTextView {
text-shadow: 0 -1px rgba(0, 0, 0, 0.72078);
icon-shadow: 0 -1px rgba(0, 0, 0, 0.72078);
box-shadow: inset 0 1px rgba(0, 0, 0, 0.07), inset 0 2px 1px -2px rgba(0, 0, 0, 0.6), 0 1px rgba(238, 238, 236, 0.1); }
- .button.destructive-action:backdrop, .button.destructive-action.flat:backdrop, .header-bar .destructive-action.titlebutton.button:backdrop,
+ .button.destructive-action:backdrop, .button.destructive-action.flat:backdrop, .destructive-action.sidebar-button.button:backdrop, .header-bar .destructive-action.titlebutton.button:backdrop,
.titlebar .destructive-action.titlebutton.button:backdrop {
color: #f7cfcf;
border-color: #5e0707;
@@ -806,14 +806,14 @@ GtkTextView {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0); }
- .button.destructive-action:backdrop:active, .button.destructive-action:backdrop:checked, .button.destructive-action.flat:backdrop:active, .header-bar .destructive-action.titlebutton.button:backdrop:active,
- .titlebar .destructive-action.titlebutton.button:backdrop:active, .button.destructive-action.flat:backdrop:checked, .header-bar .destructive-action.titlebutton.button:backdrop:checked,
+ .button.destructive-action:backdrop:active, .button.destructive-action:backdrop:checked, .button.destructive-action.flat:backdrop:active, .destructive-action.sidebar-button.button:backdrop:active, .header-bar .destructive-action.titlebutton.button:backdrop:active,
+ .titlebar .destructive-action.titlebutton.button:backdrop:active, .button.destructive-action.flat:backdrop:checked, .destructive-action.sidebar-button.button:backdrop:checked, .header-bar .destructive-action.titlebutton.button:backdrop:checked,
.titlebar .destructive-action.titlebutton.button:backdrop:checked {
color: #edcece;
border-color: #5e0707;
background-image: linear-gradient(to bottom, #a60c0c);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0); }
- .button.destructive-action:backdrop:insensitive, .button.destructive-action.flat:backdrop:insensitive, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive,
+ .button.destructive-action:backdrop:insensitive, .button.destructive-action.flat:backdrop:insensitive, .destructive-action.sidebar-button.button:backdrop:insensitive, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive,
.titlebar .destructive-action.titlebutton.button:backdrop:insensitive {
color: #5d6767;
border-color: #1f2222;
@@ -822,11 +822,11 @@ GtkTextView {
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0); }
.button.destructive-action:backdrop:insensitive > .label, .header-bar .destructive-action.button.titlebutton:backdrop:insensitive > .label,
- .titlebar .destructive-action.button.titlebutton:backdrop:insensitive > .label, .button.destructive-action.flat:backdrop:insensitive > .label, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive > .label,
+ .titlebar .destructive-action.button.titlebutton:backdrop:insensitive > .label, .button.destructive-action.flat:backdrop:insensitive > .label, .destructive-action.sidebar-button.button:backdrop:insensitive > .label, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive > .label,
.titlebar .destructive-action.titlebutton.button:backdrop:insensitive > .label {
color: inherit; }
- .button.destructive-action:backdrop:insensitive:active, .button.destructive-action:backdrop:insensitive:checked, .button.destructive-action.flat:backdrop:insensitive:active, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive:active,
- .titlebar .destructive-action.titlebutton.button:backdrop:insensitive:active, .button.destructive-action.flat:backdrop:insensitive:checked, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive:checked,
+ .button.destructive-action:backdrop:insensitive:active, .button.destructive-action:backdrop:insensitive:checked, .button.destructive-action.flat:backdrop:insensitive:active, .destructive-action.sidebar-button.button:backdrop:insensitive:active, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive:active,
+ .titlebar .destructive-action.titlebutton.button:backdrop:insensitive:active, .button.destructive-action.flat:backdrop:insensitive:checked, .destructive-action.sidebar-button.button:backdrop:insensitive:checked, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive:checked,
.titlebar .destructive-action.titlebutton.button:backdrop:insensitive:checked {
color: #c46565;
border-color: #5e0707;
@@ -834,13 +834,13 @@ GtkTextView {
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0); }
.button.destructive-action:backdrop:insensitive:active > .label, .header-bar .destructive-action.button.titlebutton:backdrop:insensitive:active > .label,
.titlebar .destructive-action.button.titlebutton:backdrop:insensitive:active > .label, .button.destructive-action:backdrop:insensitive:checked > .label, .header-bar .destructive-action.button.titlebutton:backdrop:insensitive:checked > .label,
- .titlebar .destructive-action.button.titlebutton:backdrop:insensitive:checked > .label, .button.destructive-action.flat:backdrop:insensitive:active > .label, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive:active > .label,
- .titlebar .destructive-action.titlebutton.button:backdrop:insensitive:active > .label, .button.destructive-action.flat:backdrop:insensitive:checked > .label, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive:checked > .label,
+ .titlebar .destructive-action.button.titlebutton:backdrop:insensitive:checked > .label, .button.destructive-action.flat:backdrop:insensitive:active > .label, .destructive-action.sidebar-button.button:backdrop:insensitive:active > .label, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive:active > .label,
+ .titlebar .destructive-action.titlebutton.button:backdrop:insensitive:active > .label, .button.destructive-action.flat:backdrop:insensitive:checked > .label, .destructive-action.sidebar-button.button:backdrop:insensitive:checked > .label, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive:checked > .label,
.titlebar .destructive-action.titlebutton.button:backdrop:insensitive:checked > .label {
color: inherit; }
- .button.destructive-action.flat:backdrop, .header-bar .destructive-action.titlebutton.button:backdrop,
- .titlebar .destructive-action.titlebutton.button:backdrop, .button.destructive-action.flat:insensitive, .header-bar .destructive-action.titlebutton.button:insensitive,
- .titlebar .destructive-action.titlebutton.button:insensitive, .button.destructive-action.flat:backdrop:insensitive, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive,
+ .button.destructive-action.flat:backdrop, .destructive-action.sidebar-button.button:backdrop, .header-bar .destructive-action.titlebutton.button:backdrop,
+ .titlebar .destructive-action.titlebutton.button:backdrop, .button.destructive-action.flat:insensitive, .destructive-action.sidebar-button.button:insensitive, .header-bar .destructive-action.titlebutton.button:insensitive,
+ .titlebar .destructive-action.titlebutton.button:insensitive, .button.destructive-action.flat:backdrop:insensitive, .destructive-action.sidebar-button.button:backdrop:insensitive, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive,
.titlebar .destructive-action.titlebutton.button:backdrop:insensitive {
border-color: transparent;
background-color: transparent;
@@ -1052,13 +1052,17 @@ GtkTextView {
.inline-toolbar GtkToolButton > .button:backdrop:insensitive:active > .label, .inline-toolbar GtkToolButton > .button:backdrop:insensitive:checked > .label {
color: inherit; }
-.inline-toolbar.toolbar GtkToolButton > .button.flat, .inline-toolbar GtkToolButton > .button.flat, .inline-toolbar.search-bar GtkToolButton > .button.flat, .inline-toolbar.location-bar GtkToolButton > .button.flat, .inline-toolbar .header-bar GtkToolButton > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton > .button.titlebutton,
+.inline-toolbar.toolbar GtkToolButton > .button.flat, .inline-toolbar GtkToolButton > .button.flat, .inline-toolbar.search-bar GtkToolButton > .button.flat, .inline-toolbar.location-bar GtkToolButton > .button.flat, .inline-toolbar.toolbar GtkToolButton > .sidebar-button.button, .inline-toolbar GtkToolButton > .sidebar-button.button, .inline-toolbar.search-bar GtkToolButton > .sidebar-button.button, .inline-toolbar.location-bar GtkToolButton > .sidebar-button.button, .inline-toolbar .header-bar GtkToolButton > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton > .button.titlebutton,
.inline-toolbar .titlebar GtkToolButton > .button.titlebutton,
.titlebar .inline-toolbar GtkToolButton > .button.titlebutton,
.inline-toolbar.toolbar GtkToolButton:backdrop > .button.flat,
.inline-toolbar GtkToolButton:backdrop > .button.flat,
.inline-toolbar.search-bar GtkToolButton:backdrop > .button.flat,
.inline-toolbar.location-bar GtkToolButton:backdrop > .button.flat,
+.inline-toolbar.toolbar GtkToolButton:backdrop > .sidebar-button.button,
+.inline-toolbar GtkToolButton:backdrop > .sidebar-button.button,
+.inline-toolbar.search-bar GtkToolButton:backdrop > .sidebar-button.button,
+.inline-toolbar.location-bar GtkToolButton:backdrop > .sidebar-button.button,
.inline-toolbar .header-bar GtkToolButton:backdrop > .button.titlebutton,
.header-bar .inline-toolbar GtkToolButton:backdrop > .button.titlebutton,
.inline-toolbar .titlebar GtkToolButton:backdrop > .button.titlebutton,
@@ -1072,13 +1076,17 @@ GtkTextView {
border-right-style: none; }
.linked > .entry:first-child, .osd .button:first-child:hover, .osd .button:first-child:active, .osd .button:first-child:checked, .osd .button:first-child:insensitive, .osd .button:first-child:backdrop, .osd .button.suggested-action:first-child, .osd .button.destructive-action:first-child, .inline-toolbar .button:first-child, .linked > .button:first-child, .header-bar .linked > .button.titlebutton:first-child,
-.titlebar .linked > .button.titlebutton:first-child, .inline-toolbar.toolbar GtkToolButton:first-child > .button.flat, .inline-toolbar GtkToolButton:first-child > .button.flat, .inline-toolbar.search-bar GtkToolButton:first-child > .button.flat, .inline-toolbar.location-bar GtkToolButton:first-child > .button.flat, .inline-toolbar .header-bar GtkToolButton:first-child > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton:first-child > .button.titlebutton,
+.titlebar .linked > .button.titlebutton:first-child, .inline-toolbar.toolbar GtkToolButton:first-child > .button.flat, .inline-toolbar GtkToolButton:first-child > .button.flat, .inline-toolbar.search-bar GtkToolButton:first-child > .button.flat, .inline-toolbar.location-bar GtkToolButton:first-child > .button.flat, .inline-toolbar.toolbar GtkToolButton:first-child > .sidebar-button.button, .inline-toolbar GtkToolButton:first-child > .sidebar-button.button, .inline-toolbar.search-bar GtkToolButton:first-child > .sidebar-button.button, .inline-toolbar.location-bar GtkToolButton:first-child > .sidebar-button.button, .inline-toolbar .header-bar GtkToolButton:first-child > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton:first-child > .button.titlebutton,
.inline-toolbar .titlebar GtkToolButton:first-child > .button.titlebutton,
.titlebar .inline-toolbar GtkToolButton:first-child > .button.titlebutton,
.inline-toolbar.toolbar GtkToolButton:backdrop:first-child > .button.flat,
.inline-toolbar GtkToolButton:backdrop:first-child > .button.flat,
.inline-toolbar.search-bar GtkToolButton:backdrop:first-child > .button.flat,
.inline-toolbar.location-bar GtkToolButton:backdrop:first-child > .button.flat,
+.inline-toolbar.toolbar GtkToolButton:backdrop:first-child > .sidebar-button.button,
+.inline-toolbar GtkToolButton:backdrop:first-child > .sidebar-button.button,
+.inline-toolbar.search-bar GtkToolButton:backdrop:first-child > .sidebar-button.button,
+.inline-toolbar.location-bar GtkToolButton:backdrop:first-child > .sidebar-button.button,
.inline-toolbar .header-bar GtkToolButton:backdrop:first-child > .button.titlebutton,
.header-bar .inline-toolbar GtkToolButton:backdrop:first-child > .button.titlebutton,
.inline-toolbar .titlebar GtkToolButton:backdrop:first-child > .button.titlebutton,
@@ -1087,13 +1095,17 @@ GtkTextView {
border-top-left-radius: 3px;
border-bottom-left-radius: 3px; }
.linked > .entry:last-child, .osd .button:last-child:hover, .osd .button:last-child:active, .osd .button:last-child:checked, .osd .button:last-child:insensitive, .osd .button:last-child:backdrop, .osd .button.suggested-action:last-child, .osd .button.destructive-action:last-child, .inline-toolbar .button:last-child, .linked > .button:last-child, .header-bar .linked > .button.titlebutton:last-child,
-.titlebar .linked > .button.titlebutton:last-child, .inline-toolbar.toolbar GtkToolButton:last-child > .button.flat, .inline-toolbar GtkToolButton:last-child > .button.flat, .inline-toolbar.search-bar GtkToolButton:last-child > .button.flat, .inline-toolbar.location-bar GtkToolButton:last-child > .button.flat, .inline-toolbar .header-bar GtkToolButton:last-child > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton:last-child > .button.titlebutton,
+.titlebar .linked > .button.titlebutton:last-child, .inline-toolbar.toolbar GtkToolButton:last-child > .button.flat, .inline-toolbar GtkToolButton:last-child > .button.flat, .inline-toolbar.search-bar GtkToolButton:last-child > .button.flat, .inline-toolbar.location-bar GtkToolButton:last-child > .button.flat, .inline-toolbar.toolbar GtkToolButton:last-child > .sidebar-button.button, .inline-toolbar GtkToolButton:last-child > .sidebar-button.button, .inline-toolbar.search-bar GtkToolButton:last-child > .sidebar-button.button, .inline-toolbar.location-bar GtkToolButton:last-child > .sidebar-button.button, .inline-toolbar .header-bar GtkToolButton:last-child > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton:last-child > .button.titlebutton,
.inline-toolbar .titlebar GtkToolButton:last-child > .button.titlebutton,
.titlebar .inline-toolbar GtkToolButton:last-child > .button.titlebutton,
.inline-toolbar.toolbar GtkToolButton:backdrop:last-child > .button.flat,
.inline-toolbar GtkToolButton:backdrop:last-child > .button.flat,
.inline-toolbar.search-bar GtkToolButton:backdrop:last-child > .button.flat,
.inline-toolbar.location-bar GtkToolButton:backdrop:last-child > .button.flat,
+.inline-toolbar.toolbar GtkToolButton:backdrop:last-child > .sidebar-button.button,
+.inline-toolbar GtkToolButton:backdrop:last-child > .sidebar-button.button,
+.inline-toolbar.search-bar GtkToolButton:backdrop:last-child > .sidebar-button.button,
+.inline-toolbar.location-bar GtkToolButton:backdrop:last-child > .sidebar-button.button,
.inline-toolbar .header-bar GtkToolButton:backdrop:last-child > .button.titlebutton,
.header-bar .inline-toolbar GtkToolButton:backdrop:last-child > .button.titlebutton,
.inline-toolbar .titlebar GtkToolButton:backdrop:last-child > .button.titlebutton,
@@ -1103,13 +1115,17 @@ GtkTextView {
border-bottom-right-radius: 3px;
border-right-style: solid; }
.linked > .entry:only-child, .osd .button:only-child:hover, .osd .button:only-child:active, .osd .button:only-child:checked, .osd .button:only-child:insensitive, .osd .button:only-child:backdrop, .osd .button.suggested-action:only-child, .osd .button.destructive-action:only-child, .inline-toolbar .button:only-child, .linked > .button:only-child, .header-bar .linked > .button.titlebutton:only-child,
-.titlebar .linked > .button.titlebutton:only-child, .inline-toolbar.toolbar GtkToolButton:only-child > .button.flat, .inline-toolbar GtkToolButton:only-child > .button.flat, .inline-toolbar.search-bar GtkToolButton:only-child > .button.flat, .inline-toolbar.location-bar GtkToolButton:only-child > .button.flat, .inline-toolbar .header-bar GtkToolButton:only-child > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton:only-child > .button.titlebutton,
+.titlebar .linked > .button.titlebutton:only-child, .inline-toolbar.toolbar GtkToolButton:only-child > .button.flat, .inline-toolbar GtkToolButton:only-child > .button.flat, .inline-toolbar.search-bar GtkToolButton:only-child > .button.flat, .inline-toolbar.location-bar GtkToolButton:only-child > .button.flat, .inline-toolbar.toolbar GtkToolButton:only-child > .sidebar-button.button, .inline-toolbar GtkToolButton:only-child > .sidebar-button.button, .inline-toolbar.search-bar GtkToolButton:only-child > .sidebar-button.button, .inline-toolbar.location-bar GtkToolButton:only-child > .sidebar-button.button, .inline-toolbar .header-bar GtkToolButton:only-child > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton:only-child > .button.titlebutton,
.inline-toolbar .titlebar GtkToolButton:only-child > .button.titlebutton,
.titlebar .inline-toolbar GtkToolButton:only-child > .button.titlebutton,
.inline-toolbar.toolbar GtkToolButton:backdrop:only-child > .button.flat,
.inline-toolbar GtkToolButton:backdrop:only-child > .button.flat,
.inline-toolbar.search-bar GtkToolButton:backdrop:only-child > .button.flat,
.inline-toolbar.location-bar GtkToolButton:backdrop:only-child > .button.flat,
+.inline-toolbar.toolbar GtkToolButton:backdrop:only-child > .sidebar-button.button,
+.inline-toolbar GtkToolButton:backdrop:only-child > .sidebar-button.button,
+.inline-toolbar.search-bar GtkToolButton:backdrop:only-child > .sidebar-button.button,
+.inline-toolbar.location-bar GtkToolButton:backdrop:only-child > .sidebar-button.button,
.inline-toolbar .header-bar GtkToolButton:backdrop:only-child > .button.titlebutton,
.header-bar .inline-toolbar GtkToolButton:backdrop:only-child > .button.titlebutton,
.inline-toolbar .titlebar GtkToolButton:backdrop:only-child > .button.titlebutton,
@@ -1141,8 +1157,9 @@ GtkTextView {
border-radius: 3px;
border-style: solid; }
-.menuitem.button.flat, .header-bar .menuitem.titlebutton.button,
-.titlebar .menuitem.titlebutton.button, .menuitem.button.flat:backdrop, .menuitem.button.flat:backdrop:hover, .header-bar .menuitem.titlebutton.button:backdrop:hover,
+.menuitem.button.flat, .menuitem.sidebar-button.button, .header-bar .menuitem.titlebutton.button,
+.titlebar .menuitem.titlebutton.button, .menuitem.button.flat:backdrop, .menuitem.sidebar-button.button:backdrop, .header-bar .menuitem.titlebutton.button:backdrop,
+.titlebar .menuitem.titlebutton.button:backdrop, .menuitem.button.flat:backdrop:hover, .menuitem.sidebar-button.button:backdrop:hover, .header-bar .menuitem.titlebutton.button:backdrop:hover,
.titlebar .menuitem.titlebutton.button:backdrop:hover, .button:link, .header-bar .button.titlebutton:link,
.titlebar .button.titlebutton:link, .button:visited, .header-bar .button.titlebutton:visited,
.titlebar .button.titlebutton:visited, .button:link:hover, .button:link:active, .button:link:checked, .button:visited:hover, .button:visited:active, .button:visited:checked, .button:link:backdrop, .button:visited:backdrop, .menu.button, .header-bar .menu.button.titlebutton,
@@ -1157,24 +1174,42 @@ GtkTextView {
.list-row.button:backdrop:insensitive:active,
.list-row.button:backdrop:insensitive:checked,
.list-row.button:insensitive:active,
-.list-row.button:insensitive:checked, .app-notification .button.flat, .app-notification .header-bar .titlebutton.button, .header-bar .app-notification .titlebutton.button,
+.list-row.button:insensitive:checked, .app-notification .button.flat, .app-notification .sidebar-button.button, .app-notification .header-bar .titlebutton.button, .header-bar .app-notification .titlebutton.button,
.app-notification .titlebar .titlebutton.button,
.titlebar .app-notification .titlebutton.button,
-.app-notification.frame .button.flat, .app-notification .button.flat:backdrop, .app-notification .button.flat:insensitive, .app-notification .button.flat:backdrop:insensitive, .app-notification .header-bar .titlebutton.button:backdrop:insensitive, .header-bar .app-notification .titlebutton.button:backdrop:insensitive,
+.app-notification.frame .button.flat,
+.app-notification.frame .sidebar-button.button,
+.app-notification.frame .header-bar .button.titlebutton,
+.header-bar .app-notification.frame .button.titlebutton,
+.app-notification.frame .titlebar .button.titlebutton,
+.titlebar .app-notification.frame .button.titlebutton, .app-notification .button.flat:backdrop, .app-notification .sidebar-button.button:backdrop, .app-notification .header-bar .titlebutton.button:backdrop, .header-bar .app-notification .titlebutton.button:backdrop,
+.app-notification .titlebar .titlebutton.button:backdrop,
+.titlebar .app-notification .titlebutton.button:backdrop, .app-notification .button.flat:insensitive, .app-notification .sidebar-button.button:insensitive, .app-notification .header-bar .titlebutton.button:insensitive, .header-bar .app-notification .titlebutton.button:insensitive,
+.app-notification .titlebar .titlebutton.button:insensitive,
+.titlebar .app-notification .titlebutton.button:insensitive, .app-notification .button.flat:backdrop:insensitive, .app-notification .sidebar-button.button:backdrop:insensitive, .app-notification .header-bar .titlebutton.button:backdrop:insensitive, .header-bar .app-notification .titlebutton.button:backdrop:insensitive,
.app-notification .titlebar .titlebutton.button:backdrop:insensitive,
.titlebar .app-notification .titlebutton.button:backdrop:insensitive,
.app-notification.frame .button.flat:backdrop,
+.app-notification.frame .sidebar-button.button:backdrop,
.app-notification.frame .header-bar .button.titlebutton:backdrop,
.header-bar .app-notification.frame .button.titlebutton:backdrop,
.app-notification.frame .titlebar .button.titlebutton:backdrop,
.titlebar .app-notification.frame .button.titlebutton:backdrop,
.app-notification.frame .button.flat:insensitive,
+.app-notification.frame .sidebar-button.button:insensitive,
.app-notification.frame .header-bar .button.titlebutton:insensitive,
.header-bar .app-notification.frame .button.titlebutton:insensitive,
.app-notification.frame .titlebar .button.titlebutton:insensitive,
.titlebar .app-notification.frame .button.titlebutton:insensitive,
-.app-notification.frame .button.flat:backdrop:insensitive, GtkCalendar.button, .header-bar GtkCalendar.button.titlebutton,
-.titlebar GtkCalendar.button.titlebutton, GtkCalendar.button:hover, GtkCalendar.button:backdrop, .scale-popup .button:hover, .scale-popup .button:backdrop, .scale-popup .button:backdrop:hover, .scale-popup .button:backdrop:insensitive {
+.app-notification.frame .button.flat:backdrop:insensitive,
+.app-notification.frame .sidebar-button.button:backdrop:insensitive,
+.app-notification.frame .header-bar .button.titlebutton:backdrop:insensitive,
+.header-bar .app-notification.frame .button.titlebutton:backdrop:insensitive,
+.app-notification.frame .titlebar .button.titlebutton:backdrop:insensitive,
+.titlebar .app-notification.frame .button.titlebutton:backdrop:insensitive, GtkCalendar.button, .header-bar GtkCalendar.button.titlebutton,
+.titlebar GtkCalendar.button.titlebutton, GtkCalendar.button:hover, .header-bar GtkCalendar.button.titlebutton:hover,
+.titlebar GtkCalendar.button.titlebutton:hover, GtkCalendar.button:backdrop, .header-bar GtkCalendar.button.titlebutton:backdrop,
+.titlebar GtkCalendar.button.titlebutton:backdrop, .scale-popup .button:hover, .scale-popup .button:backdrop, .scale-popup .button:backdrop:hover, .scale-popup .button:backdrop:insensitive {
border-color: transparent;
background-color: transparent;
background-image: none;
@@ -1183,10 +1218,10 @@ GtkTextView {
icon-shadow: none; }
/* menu buttons */
-.menuitem.button.flat, .header-bar .menuitem.titlebutton.button,
+.menuitem.button.flat, .menuitem.sidebar-button.button, .header-bar .menuitem.titlebutton.button,
.titlebar .menuitem.titlebutton.button {
outline-offset: -1px; }
- .menuitem.button.flat:hover, .header-bar .menuitem.titlebutton.button:hover,
+ .menuitem.button.flat:hover, .menuitem.sidebar-button.button:hover, .header-bar .menuitem.titlebutton.button:hover,
.titlebar .menuitem.titlebutton.button:hover {
background-color: #4b5150; }
@@ -1458,7 +1493,7 @@ GtkComboBox {
color: #5d6767; }
GtkComboBox .menuitem {
text-shadow: none; }
- GtkComboBox .separator.vertical, GtkComboBox GtkPlacesSidebar.sidebar .view .vertical.separator, GtkPlacesSidebar.sidebar .view GtkComboBox .vertical.separator {
+ GtkComboBox .separator.vertical {
-GtkWidget-wide-separators: true; }
GtkComboBox.combobox-entry .entry:dir(ltr) {
border-top-right-radius: 0;
@@ -1537,10 +1572,8 @@ GtkComboBox {
padding-left: 12px;
padding-right: 12px; }
.titlebar .header-bar-separator, .titlebar > GtkBox > .separator.vertical,
- GtkPlacesSidebar.sidebar .view .titlebar > GtkBox > .vertical.separator:backdrop,
.header-bar .header-bar-separator,
- .header-bar > GtkBox > .separator.vertical,
- GtkPlacesSidebar.sidebar .view .header-bar > GtkBox > .vertical.separator:backdrop {
+ .header-bar > GtkBox > .separator.vertical {
-GtkWidget-wide-separators: true;
-GtkWidget-separator-width: 1px;
border-width: 0 1px;
@@ -1569,9 +1602,10 @@ GtkComboBox {
text-shadow: 0 -1px rgba(0, 0, 0, 0.70353);
icon-shadow: 0 -1px rgba(0, 0, 0, 0.70353);
box-shadow: inset 0 1px rgba(255, 255, 255, 0.1), 0 1px rgba(43, 100, 160, 0.55); }
- .titlebar.selection-mode .button.flat,
+ .titlebar.selection-mode .button.flat, .titlebar.selection-mode .sidebar-button.button,
.titlebar.selection-mode .titlebutton.button,
.header-bar.selection-mode .button.flat,
+ .header-bar.selection-mode .sidebar-button.button,
.header-bar.selection-mode .titlebutton.button {
border-color: transparent;
background-color: transparent;
@@ -1598,10 +1632,11 @@ GtkComboBox {
text-shadow: 0 -1px rgba(0, 0, 0, 0.78353);
icon-shadow: 0 -1px rgba(0, 0, 0, 0.78353);
box-shadow: inset 0 1px rgba(0, 0, 0, 0.07), inset 0 2px 1px -2px rgba(0, 0, 0, 0.6), 0 1px rgba(43, 100, 160, 0.55); }
- .titlebar.selection-mode .button:backdrop, .titlebar.selection-mode .button.flat:backdrop,
+ .titlebar.selection-mode .button:backdrop, .titlebar.selection-mode .button.flat:backdrop, .titlebar.selection-mode .sidebar-button.button:backdrop,
.titlebar.selection-mode .titlebutton.button:backdrop,
.header-bar.selection-mode .button:backdrop,
.header-bar.selection-mode .button.flat:backdrop,
+ .header-bar.selection-mode .sidebar-button.button:backdrop,
.header-bar.selection-mode .titlebutton.button:backdrop {
color: #d3dfeb;
border-color: #0b1e33;
@@ -1611,24 +1646,27 @@ GtkComboBox {
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(43, 100, 160, 0);
-gtk-image-effect: none;
border-color: #0f2b48; }
- .titlebar.selection-mode .button:backdrop:active, .titlebar.selection-mode .button:backdrop:checked, .titlebar.selection-mode .button.flat:backdrop:active,
- .titlebar.selection-mode .titlebutton.button:backdrop:active, .titlebar.selection-mode .button.flat:backdrop:checked,
+ .titlebar.selection-mode .button:backdrop:active, .titlebar.selection-mode .button:backdrop:checked, .titlebar.selection-mode .button.flat:backdrop:active, .titlebar.selection-mode .sidebar-button.button:backdrop:active,
+ .titlebar.selection-mode .titlebutton.button:backdrop:active, .titlebar.selection-mode .button.flat:backdrop:checked, .titlebar.selection-mode .sidebar-button.button:backdrop:checked,
.titlebar.selection-mode .titlebutton.button:backdrop:checked,
.header-bar.selection-mode .button:backdrop:active,
.header-bar.selection-mode .button:backdrop:checked,
.header-bar.selection-mode .button.flat:backdrop:active,
+ .header-bar.selection-mode .sidebar-button.button:backdrop:active,
.header-bar.selection-mode .titlebutton.button:backdrop:active,
.header-bar.selection-mode .button.flat:backdrop:checked,
+ .header-bar.selection-mode .sidebar-button.button:backdrop:checked,
.header-bar.selection-mode .titlebutton.button:backdrop:checked {
color: #d1dae3;
border-color: #0b1e33;
background-image: linear-gradient(to bottom, #184472);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(43, 100, 160, 0);
border-color: #0f2b48; }
- .titlebar.selection-mode .button:backdrop:insensitive, .titlebar.selection-mode .button.flat:backdrop:insensitive,
+ .titlebar.selection-mode .button:backdrop:insensitive, .titlebar.selection-mode .button.flat:backdrop:insensitive, .titlebar.selection-mode .sidebar-button.button:backdrop:insensitive,
.titlebar.selection-mode .titlebutton.button:backdrop:insensitive,
.header-bar.selection-mode .button:backdrop:insensitive,
.header-bar.selection-mode .button.flat:backdrop:insensitive,
+ .header-bar.selection-mode .sidebar-button.button:backdrop:insensitive,
.header-bar.selection-mode .titlebutton.button:backdrop:insensitive {
color: #6f91b4;
border-color: #0b1e33;
@@ -1637,51 +1675,59 @@ GtkComboBox {
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(43, 100, 160, 0);
border-color: #0f2b48; }
- .titlebar.selection-mode .button:backdrop:insensitive > .label, .titlebar.selection-mode .header-bar .button.titlebutton:backdrop:insensitive > .label, .titlebar.selection-mode .button.flat:backdrop:insensitive > .label, .titlebar.selection-mode .header-bar .titlebutton.button:backdrop:insensitive > .label,
+ .titlebar.selection-mode .button:backdrop:insensitive > .label, .titlebar.selection-mode .header-bar .button.titlebutton:backdrop:insensitive > .label, .titlebar.selection-mode .button.flat:backdrop:insensitive > .label, .titlebar.selection-mode .sidebar-button.button:backdrop:insensitive > .label, .titlebar.selection-mode .header-bar .titlebutton.button:backdrop:insensitive > .label,
.titlebar.selection-mode .titlebutton.button:backdrop:insensitive > .label,
.header-bar.selection-mode .button:backdrop:insensitive > .label,
.header-bar.selection-mode .titlebar .button.titlebutton:backdrop:insensitive > .label,
.header-bar.selection-mode .button.flat:backdrop:insensitive > .label,
+ .header-bar.selection-mode .sidebar-button.button:backdrop:insensitive > .label,
.header-bar.selection-mode .titlebutton.button:backdrop:insensitive > .label,
.header-bar.selection-mode .titlebar .titlebutton.button:backdrop:insensitive > .label {
color: inherit; }
- .titlebar.selection-mode .button:backdrop:insensitive:active, .titlebar.selection-mode .button:backdrop:insensitive:checked, .titlebar.selection-mode .button.flat:backdrop:insensitive:active,
- .titlebar.selection-mode .titlebutton.button:backdrop:insensitive:active, .titlebar.selection-mode .button.flat:backdrop:insensitive:checked,
+ .titlebar.selection-mode .button:backdrop:insensitive:active, .titlebar.selection-mode .button:backdrop:insensitive:checked, .titlebar.selection-mode .button.flat:backdrop:insensitive:active, .titlebar.selection-mode .sidebar-button.button:backdrop:insensitive:active,
+ .titlebar.selection-mode .titlebutton.button:backdrop:insensitive:active, .titlebar.selection-mode .button.flat:backdrop:insensitive:checked, .titlebar.selection-mode .sidebar-button.button:backdrop:insensitive:checked,
.titlebar.selection-mode .titlebutton.button:backdrop:insensitive:checked,
.header-bar.selection-mode .button:backdrop:insensitive:active,
.header-bar.selection-mode .button:backdrop:insensitive:checked,
.header-bar.selection-mode .button.flat:backdrop:insensitive:active,
+ .header-bar.selection-mode .sidebar-button.button:backdrop:insensitive:active,
.header-bar.selection-mode .titlebutton.button:backdrop:insensitive:active,
.header-bar.selection-mode .button.flat:backdrop:insensitive:checked,
+ .header-bar.selection-mode .sidebar-button.button:backdrop:insensitive:checked,
.header-bar.selection-mode .titlebutton.button:backdrop:insensitive:checked {
color: #6c88a7;
border-color: #0b1e33;
background-image: linear-gradient(to bottom, #1d4877);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(43, 100, 160, 0);
border-color: #0f2b48; }
- .titlebar.selection-mode .button:backdrop:insensitive:active > .label, .titlebar.selection-mode .header-bar .button.titlebutton:backdrop:insensitive:active > .label, .titlebar.selection-mode .button:backdrop:insensitive:checked > .label, .titlebar.selection-mode .header-bar .button.titlebutton:backdrop:insensitive:checked > .label, .titlebar.selection-mode .button.flat:backdrop:insensitive:active > .label, .titlebar.selection-mode .header-bar .titlebutton.button:backdrop:insensitive:active > .label,
- .titlebar.selection-mode .titlebutton.button:backdrop:insensitive:active > .label, .titlebar.selection-mode .button.flat:backdrop:insensitive:checked > .label, .titlebar.selection-mode .header-bar .titlebutton.button:backdrop:insensitive:checked > .label,
+ .titlebar.selection-mode .button:backdrop:insensitive:active > .label, .titlebar.selection-mode .header-bar .button.titlebutton:backdrop:insensitive:active > .label, .titlebar.selection-mode .button:backdrop:insensitive:checked > .label, .titlebar.selection-mode .header-bar .button.titlebutton:backdrop:insensitive:checked > .label, .titlebar.selection-mode .button.flat:backdrop:insensitive:active > .label, .titlebar.selection-mode .sidebar-button.button:backdrop:insensitive:active > .label, .titlebar.selection-mode .header-bar .titlebutton.button:backdrop:insensitive:active > .label,
+ .titlebar.selection-mode .titlebutton.button:backdrop:insensitive:active > .label, .titlebar.selection-mode .button.flat:backdrop:insensitive:checked > .label, .titlebar.selection-mode .sidebar-button.button:backdrop:insensitive:checked > .label, .titlebar.selection-mode .header-bar .titlebutton.button:backdrop:insensitive:checked > .label,
.titlebar.selection-mode .titlebutton.button:backdrop:insensitive:checked > .label,
.header-bar.selection-mode .button:backdrop:insensitive:active > .label,
.header-bar.selection-mode .titlebar .button.titlebutton:backdrop:insensitive:active > .label,
.header-bar.selection-mode .button:backdrop:insensitive:checked > .label,
.header-bar.selection-mode .titlebar .button.titlebutton:backdrop:insensitive:checked > .label,
.header-bar.selection-mode .button.flat:backdrop:insensitive:active > .label,
+ .header-bar.selection-mode .sidebar-button.button:backdrop:insensitive:active > .label,
.header-bar.selection-mode .titlebutton.button:backdrop:insensitive:active > .label,
.header-bar.selection-mode .titlebar .titlebutton.button:backdrop:insensitive:active > .label,
.header-bar.selection-mode .button.flat:backdrop:insensitive:checked > .label,
+ .header-bar.selection-mode .sidebar-button.button:backdrop:insensitive:checked > .label,
.header-bar.selection-mode .titlebutton.button:backdrop:insensitive:checked > .label,
.header-bar.selection-mode .titlebar .titlebutton.button:backdrop:insensitive:checked > .label {
color: inherit; }
- .titlebar.selection-mode .button.flat:backdrop,
- .titlebar.selection-mode .titlebutton.button:backdrop, .titlebar.selection-mode .button.flat:insensitive,
- .titlebar.selection-mode .titlebutton.button:insensitive, .titlebar.selection-mode .button.flat:insensitive:backdrop,
+ .titlebar.selection-mode .button.flat:backdrop, .titlebar.selection-mode .sidebar-button.button:backdrop,
+ .titlebar.selection-mode .titlebutton.button:backdrop, .titlebar.selection-mode .button.flat:insensitive, .titlebar.selection-mode .sidebar-button.button:insensitive,
+ .titlebar.selection-mode .titlebutton.button:insensitive, .titlebar.selection-mode .button.flat:insensitive:backdrop, .titlebar.selection-mode .sidebar-button.button:insensitive:backdrop,
.titlebar.selection-mode .titlebutton.button:insensitive:backdrop,
.header-bar.selection-mode .button.flat:backdrop,
+ .header-bar.selection-mode .sidebar-button.button:backdrop,
.header-bar.selection-mode .titlebutton.button:backdrop,
.header-bar.selection-mode .button.flat:insensitive,
+ .header-bar.selection-mode .sidebar-button.button:insensitive,
.header-bar.selection-mode .titlebutton.button:insensitive,
.header-bar.selection-mode .button.flat:insensitive:backdrop,
+ .header-bar.selection-mode .sidebar-button.button:insensitive:backdrop,
.header-bar.selection-mode .titlebutton.button:insensitive:backdrop {
border-color: transparent;
background-color: transparent;
@@ -2042,10 +2088,11 @@ column-header .titlebar .button.titlebutton,
.popover > .location-bar, .popover.osd > .toolbar, .popover.osd > .inline-toolbar, .popover.osd > .search-bar, .popover.osd > .location-bar {
border-style: none;
background-color: transparent; }
- .popover .button.flat, .popover .header-bar .titlebutton.button, .header-bar .popover .titlebutton.button,
+ .popover .button.flat, .popover .sidebar-button.button, .popover .header-bar .titlebutton.button, .header-bar .popover .titlebutton.button,
.popover .titlebar .titlebutton.button,
.titlebar .popover .titlebutton.button,
.popover .button.flat:hover,
+ .popover .sidebar-button.button:hover,
.popover .header-bar .titlebutton.button:hover,
.header-bar .popover .titlebutton.button:hover,
.popover .titlebar .titlebutton.button:hover,
@@ -2563,126 +2610,126 @@ GtkSwitch {
.check {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-unchecked-dark.png"), url("assets/checkbox-unchecked-dark@2.png"));
icon-shadow: 0 1px 0 rgba(238, 238, 236, 0.1); }
- .check.button.flat, .header-bar .check.titlebutton.button,
+ .check.button.flat, .check.sidebar-button.button, .header-bar .check.titlebutton.button,
.titlebar .check.titlebutton.button {
icon-shadow: none; }
.check:hover {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-unchecked-hover-dark.png"), url("assets/checkbox-unchecked-hover-dark@2.png"));
icon-shadow: 0 1px 0 rgba(238, 238, 236, 0.1); }
- .check:hover.button.flat, .header-bar .check.titlebutton.button:hover,
+ .check:hover.button.flat, .check.sidebar-button.button:hover, .header-bar .check.titlebutton.button:hover,
.titlebar .check.titlebutton.button:hover {
icon-shadow: none; }
.check:active {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-unchecked-active-dark.png"), url("assets/checkbox-unchecked-active-dark@2.png"));
icon-shadow: 0 1px 0 rgba(238, 238, 236, 0.1); }
- .check:active.button.flat, .header-bar .check.titlebutton.button:active,
+ .check:active.button.flat, .check.sidebar-button.button:active, .header-bar .check.titlebutton.button:active,
.titlebar .check.titlebutton.button:active {
icon-shadow: none; }
.check:insensitive {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-unchecked-insensitive-dark.png"), url("assets/checkbox-unchecked-insensitive-dark@2.png"));
icon-shadow: 0 1px 0 rgba(238, 238, 236, 0.1); }
- .check:insensitive.button.flat, .header-bar .check.titlebutton.button:insensitive,
+ .check:insensitive.button.flat, .check.sidebar-button.button:insensitive, .header-bar .check.titlebutton.button:insensitive,
.titlebar .check.titlebutton.button:insensitive {
icon-shadow: none; }
.check:backdrop {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-unchecked-backdrop-dark.png"), url("assets/checkbox-unchecked-backdrop-dark@2.png"));
icon-shadow: none; }
- .check:backdrop.button.flat, .header-bar .check.titlebutton.button:backdrop,
+ .check:backdrop.button.flat, .check.sidebar-button.button:backdrop, .header-bar .check.titlebutton.button:backdrop,
.titlebar .check.titlebutton.button:backdrop {
icon-shadow: none; }
.check:backdrop:insensitive {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-unchecked-backdrop-insensitive-dark.png"), url("assets/checkbox-unchecked-backdrop-insensitive-dark@2.png"));
icon-shadow: none; }
- .check:backdrop:insensitive.button.flat, .header-bar .check.titlebutton.button:backdrop:insensitive,
+ .check:backdrop:insensitive.button.flat, .check.sidebar-button.button:backdrop:insensitive, .header-bar .check.titlebutton.button:backdrop:insensitive,
.titlebar .check.titlebutton.button:backdrop:insensitive {
icon-shadow: none; }
.check:inconsistent {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-mixed-dark.png"), url("assets/checkbox-mixed-dark@2.png"));
icon-shadow: 0 1px 0 rgba(238, 238, 236, 0.1); }
- .check:inconsistent.button.flat, .header-bar .check.titlebutton.button:inconsistent,
+ .check:inconsistent.button.flat, .check.sidebar-button.button:inconsistent, .header-bar .check.titlebutton.button:inconsistent,
.titlebar .check.titlebutton.button:inconsistent {
icon-shadow: none; }
.check:inconsistent:hover {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-mixed-hover-dark.png"), url("assets/checkbox-mixed-hover-dark@2.png"));
icon-shadow: 0 1px 0 rgba(238, 238, 236, 0.1); }
- .check:inconsistent:hover.button.flat, .header-bar .check.titlebutton.button:inconsistent:hover,
+ .check:inconsistent:hover.button.flat, .check.sidebar-button.button:inconsistent:hover, .header-bar .check.titlebutton.button:inconsistent:hover,
.titlebar .check.titlebutton.button:inconsistent:hover {
icon-shadow: none; }
.check:inconsistent:selected {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-mixed-active-dark.png"), url("assets/checkbox-mixed-active-dark@2.png"));
icon-shadow: 0 1px 0 rgba(238, 238, 236, 0.1); }
- .check:inconsistent:selected.button.flat, .header-bar .check.titlebutton.button:inconsistent:selected,
+ .check:inconsistent:selected.button.flat, .check.sidebar-button.button:inconsistent:selected, .header-bar .check.titlebutton.button:inconsistent:selected,
.titlebar .check.titlebutton.button:inconsistent:selected {
icon-shadow: none; }
.check:inconsistent:backdrop {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-mixed-backdrop-dark.png"), url("assets/checkbox-mixed-backdrop-dark@2.png"));
icon-shadow: none; }
- .check:inconsistent:backdrop.button.flat, .header-bar .check.titlebutton.button:inconsistent:backdrop,
+ .check:inconsistent:backdrop.button.flat, .check.sidebar-button.button:inconsistent:backdrop, .header-bar .check.titlebutton.button:inconsistent:backdrop,
.titlebar .check.titlebutton.button:inconsistent:backdrop {
icon-shadow: none; }
.check:inconsistent:insensitive {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-mixed-insensitive-dark.png"), url("assets/checkbox-mixed-insensitive-dark@2.png"));
icon-shadow: 0 1px 0 rgba(238, 238, 236, 0.1); }
- .check:inconsistent:insensitive.button.flat, .header-bar .check.titlebutton.button:inconsistent:insensitive,
+ .check:inconsistent:insensitive.button.flat, .check.sidebar-button.button:inconsistent:insensitive, .header-bar .check.titlebutton.button:inconsistent:insensitive,
.titlebar .check.titlebutton.button:inconsistent:insensitive {
icon-shadow: none; }
.check:inconsistent:insensitive:backdrop {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-mixed-backdrop-insensitive-dark.png"), url("assets/checkbox-mixed-backdrop-insensitive-dark@2.png"));
icon-shadow: none; }
- .check:inconsistent:insensitive:backdrop.button.flat, .header-bar .check.titlebutton.button:inconsistent:insensitive:backdrop,
+ .check:inconsistent:insensitive:backdrop.button.flat, .check.sidebar-button.button:inconsistent:insensitive:backdrop, .header-bar .check.titlebutton.button:inconsistent:insensitive:backdrop,
.titlebar .check.titlebutton.button:inconsistent:insensitive:backdrop {
icon-shadow: none; }
.check:checked {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-checked-dark.png"), url("assets/checkbox-checked-dark@2.png"));
icon-shadow: 0 1px 0 rgba(238, 238, 236, 0.1); }
- .check:checked.button.flat, .header-bar .check.titlebutton.button:checked,
+ .check:checked.button.flat, .check.sidebar-button.button:checked, .header-bar .check.titlebutton.button:checked,
.titlebar .check.titlebutton.button:checked {
icon-shadow: none; }
.check:checked:insensitive {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-checked-insensitive-dark.png"), url("assets/checkbox-checked-insensitive-dark@2.png"));
icon-shadow: 0 1px 0 rgba(238, 238, 236, 0.1); }
- .check:checked:insensitive.button.flat, .header-bar .check.titlebutton.button:checked:insensitive,
+ .check:checked:insensitive.button.flat, .check.sidebar-button.button:checked:insensitive, .header-bar .check.titlebutton.button:checked:insensitive,
.titlebar .check.titlebutton.button:checked:insensitive {
icon-shadow: none; }
.check:checked:hover {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-checked-hover-dark.png"), url("assets/checkbox-checked-hover-dark@2.png"));
icon-shadow: 0 1px 0 rgba(238, 238, 236, 0.1); }
- .check:checked:hover.button.flat, .header-bar .check.titlebutton.button:checked:hover,
+ .check:checked:hover.button.flat, .check.sidebar-button.button:checked:hover, .header-bar .check.titlebutton.button:checked:hover,
.titlebar .check.titlebutton.button:checked:hover {
icon-shadow: none; }
.check:checked:active {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-checked-active-dark.png"), url("assets/checkbox-checked-active-dark@2.png"));
icon-shadow: 0 1px 0 rgba(238, 238, 236, 0.1); }
- .check:checked:active.button.flat, .header-bar .check.titlebutton.button:checked:active,
+ .check:checked:active.button.flat, .check.sidebar-button.button:checked:active, .header-bar .check.titlebutton.button:checked:active,
.titlebar .check.titlebutton.button:checked:active {
icon-shadow: none; }
.check:backdrop:checked {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-checked-backdrop-dark.png"), url("assets/checkbox-checked-backdrop-dark@2.png"));
icon-shadow: none; }
- .check:backdrop:checked.button.flat, .header-bar .check.titlebutton.button:backdrop:checked,
+ .check:backdrop:checked.button.flat, .check.sidebar-button.button:backdrop:checked, .header-bar .check.titlebutton.button:backdrop:checked,
.titlebar .check.titlebutton.button:backdrop:checked {
icon-shadow: none; }
.check:backdrop:checked:insensitive {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-checked-backdrop-insensitive-dark.png"), url("assets/checkbox-checked-backdrop-insensitive-dark@2.png"));
icon-shadow: none; }
- .check:backdrop:checked:insensitive.button.flat, .header-bar .check.titlebutton.button:backdrop:checked:insensitive,
+ .check:backdrop:checked:insensitive.button.flat, .check.sidebar-button.button:backdrop:checked:insensitive, .header-bar .check.titlebutton.button:backdrop:checked:insensitive,
.titlebar .check.titlebutton.button:backdrop:checked:insensitive {
icon-shadow: none; }
@@ -2702,126 +2749,126 @@ GtkSwitch {
.radio {
-gtk-icon-source: -gtk-scaled(url("assets/radio-unchecked-dark.png"), url("assets/radio-unchecked-dark@2.png"));
icon-shadow: 0 1px 0 rgba(238, 238, 236, 0.1); }
- .radio.button.flat, .header-bar .radio.titlebutton.button,
+ .radio.button.flat, .radio.sidebar-button.button, .header-bar .radio.titlebutton.button,
.titlebar .radio.titlebutton.button {
icon-shadow: none; }
.radio:hover {
-gtk-icon-source: -gtk-scaled(url("assets/radio-unchecked-hover-dark.png"), url("assets/radio-unchecked-hover-dark@2.png"));
icon-shadow: 0 1px 0 rgba(238, 238, 236, 0.1); }
- .radio:hover.button.flat, .header-bar .radio.titlebutton.button:hover,
+ .radio:hover.button.flat, .radio.sidebar-button.button:hover, .header-bar .radio.titlebutton.button:hover,
.titlebar .radio.titlebutton.button:hover {
icon-shadow: none; }
.radio:active {
-gtk-icon-source: -gtk-scaled(url("assets/radio-unchecked-active-dark.png"), url("assets/radio-unchecked-active-dark@2.png"));
icon-shadow: 0 1px 0 rgba(238, 238, 236, 0.1); }
- .radio:active.button.flat, .header-bar .radio.titlebutton.button:active,
+ .radio:active.button.flat, .radio.sidebar-button.button:active, .header-bar .radio.titlebutton.button:active,
.titlebar .radio.titlebutton.button:active {
icon-shadow: none; }
.radio:insensitive {
-gtk-icon-source: -gtk-scaled(url("assets/radio-unchecked-insensitive-dark.png"), url("assets/radio-unchecked-insensitive-dark@2.png"));
icon-shadow: 0 1px 0 rgba(238, 238, 236, 0.1); }
- .radio:insensitive.button.flat, .header-bar .radio.titlebutton.button:insensitive,
+ .radio:insensitive.button.flat, .radio.sidebar-button.button:insensitive, .header-bar .radio.titlebutton.button:insensitive,
.titlebar .radio.titlebutton.button:insensitive {
icon-shadow: none; }
.radio:backdrop {
-gtk-icon-source: -gtk-scaled(url("assets/radio-unchecked-backdrop-dark.png"), url("assets/radio-unchecked-backdrop-dark@2.png"));
icon-shadow: none; }
- .radio:backdrop.button.flat, .header-bar .radio.titlebutton.button:backdrop,
+ .radio:backdrop.button.flat, .radio.sidebar-button.button:backdrop, .header-bar .radio.titlebutton.button:backdrop,
.titlebar .radio.titlebutton.button:backdrop {
icon-shadow: none; }
.radio:backdrop:insensitive {
-gtk-icon-source: -gtk-scaled(url("assets/radio-unchecked-backdrop-insensitive-dark.png"), url("assets/radio-unchecked-backdrop-insensitive-dark@2.png"));
icon-shadow: none; }
- .radio:backdrop:insensitive.button.flat, .header-bar .radio.titlebutton.button:backdrop:insensitive,
+ .radio:backdrop:insensitive.button.flat, .radio.sidebar-button.button:backdrop:insensitive, .header-bar .radio.titlebutton.button:backdrop:insensitive,
.titlebar .radio.titlebutton.button:backdrop:insensitive {
icon-shadow: none; }
.radio:inconsistent {
-gtk-icon-source: -gtk-scaled(url("assets/radio-mixed-dark.png"), url("assets/radio-mixed-dark@2.png"));
icon-shadow: 0 1px 0 rgba(238, 238, 236, 0.1); }
- .radio:inconsistent.button.flat, .header-bar .radio.titlebutton.button:inconsistent,
+ .radio:inconsistent.button.flat, .radio.sidebar-button.button:inconsistent, .header-bar .radio.titlebutton.button:inconsistent,
.titlebar .radio.titlebutton.button:inconsistent {
icon-shadow: none; }
.radio:inconsistent:hover {
-gtk-icon-source: -gtk-scaled(url("assets/radio-mixed-hover-dark.png"), url("assets/radio-mixed-hover-dark@2.png"));
icon-shadow: 0 1px 0 rgba(238, 238, 236, 0.1); }
- .radio:inconsistent:hover.button.flat, .header-bar .radio.titlebutton.button:inconsistent:hover,
+ .radio:inconsistent:hover.button.flat, .radio.sidebar-button.button:inconsistent:hover, .header-bar .radio.titlebutton.button:inconsistent:hover,
.titlebar .radio.titlebutton.button:inconsistent:hover {
icon-shadow: none; }
.radio:inconsistent:selected {
-gtk-icon-source: -gtk-scaled(url("assets/radio-mixed-active-dark.png"), url("assets/radio-mixed-active-dark@2.png"));
icon-shadow: 0 1px 0 rgba(238, 238, 236, 0.1); }
- .radio:inconsistent:selected.button.flat, .header-bar .radio.titlebutton.button:inconsistent:selected,
+ .radio:inconsistent:selected.button.flat, .radio.sidebar-button.button:inconsistent:selected, .header-bar .radio.titlebutton.button:inconsistent:selected,
.titlebar .radio.titlebutton.button:inconsistent:selected {
icon-shadow: none; }
.radio:inconsistent:backdrop {
-gtk-icon-source: -gtk-scaled(url("assets/radio-mixed-backdrop-dark.png"), url("assets/radio-mixed-backdrop-dark@2.png"));
icon-shadow: none; }
- .radio:inconsistent:backdrop.button.flat, .header-bar .radio.titlebutton.button:inconsistent:backdrop,
+ .radio:inconsistent:backdrop.button.flat, .radio.sidebar-button.button:inconsistent:backdrop, .header-bar .radio.titlebutton.button:inconsistent:backdrop,
.titlebar .radio.titlebutton.button:inconsistent:backdrop {
icon-shadow: none; }
.radio:inconsistent:insensitive {
-gtk-icon-source: -gtk-scaled(url("assets/radio-mixed-insensitive-dark.png"), url("assets/radio-mixed-insensitive-dark@2.png"));
icon-shadow: 0 1px 0 rgba(238, 238, 236, 0.1); }
- .radio:inconsistent:insensitive.button.flat, .header-bar .radio.titlebutton.button:inconsistent:insensitive,
+ .radio:inconsistent:insensitive.button.flat, .radio.sidebar-button.button:inconsistent:insensitive, .header-bar .radio.titlebutton.button:inconsistent:insensitive,
.titlebar .radio.titlebutton.button:inconsistent:insensitive {
icon-shadow: none; }
.radio:inconsistent:insensitive:backdrop {
-gtk-icon-source: -gtk-scaled(url("assets/radio-mixed-backdrop-insensitive-dark.png"), url("assets/radio-mixed-backdrop-insensitive-dark@2.png"));
icon-shadow: none; }
- .radio:inconsistent:insensitive:backdrop.button.flat, .header-bar .radio.titlebutton.button:inconsistent:insensitive:backdrop,
+ .radio:inconsistent:insensitive:backdrop.button.flat, .radio.sidebar-button.button:inconsistent:insensitive:backdrop, .header-bar .radio.titlebutton.button:inconsistent:insensitive:backdrop,
.titlebar .radio.titlebutton.button:inconsistent:insensitive:backdrop {
icon-shadow: none; }
.radio:checked {
-gtk-icon-source: -gtk-scaled(url("assets/radio-checked-dark.png"), url("assets/radio-checked-dark@2.png"));
icon-shadow: 0 1px 0 rgba(238, 238, 236, 0.1); }
- .radio:checked.button.flat, .header-bar .radio.titlebutton.button:checked,
+ .radio:checked.button.flat, .radio.sidebar-button.button:checked, .header-bar .radio.titlebutton.button:checked,
.titlebar .radio.titlebutton.button:checked {
icon-shadow: none; }
.radio:checked:insensitive {
-gtk-icon-source: -gtk-scaled(url("assets/radio-checked-insensitive-dark.png"), url("assets/radio-checked-insensitive-dark@2.png"));
icon-shadow: 0 1px 0 rgba(238, 238, 236, 0.1); }
- .radio:checked:insensitive.button.flat, .header-bar .radio.titlebutton.button:checked:insensitive,
+ .radio:checked:insensitive.button.flat, .radio.sidebar-button.button:checked:insensitive, .header-bar .radio.titlebutton.button:checked:insensitive,
.titlebar .radio.titlebutton.button:checked:insensitive {
icon-shadow: none; }
.radio:checked:hover {
-gtk-icon-source: -gtk-scaled(url("assets/radio-checked-hover-dark.png"), url("assets/radio-checked-hover-dark@2.png"));
icon-shadow: 0 1px 0 rgba(238, 238, 236, 0.1); }
- .radio:checked:hover.button.flat, .header-bar .radio.titlebutton.button:checked:hover,
+ .radio:checked:hover.button.flat, .radio.sidebar-button.button:checked:hover, .header-bar .radio.titlebutton.button:checked:hover,
.titlebar .radio.titlebutton.button:checked:hover {
icon-shadow: none; }
.radio:checked:active {
-gtk-icon-source: -gtk-scaled(url("assets/radio-checked-active-dark.png"), url("assets/radio-checked-active-dark@2.png"));
icon-shadow: 0 1px 0 rgba(238, 238, 236, 0.1); }
- .radio:checked:active.button.flat, .header-bar .radio.titlebutton.button:checked:active,
+ .radio:checked:active.button.flat, .radio.sidebar-button.button:checked:active, .header-bar .radio.titlebutton.button:checked:active,
.titlebar .radio.titlebutton.button:checked:active {
icon-shadow: none; }
.radio:backdrop:checked {
-gtk-icon-source: -gtk-scaled(url("assets/radio-checked-backdrop-dark.png"), url("assets/radio-checked-backdrop-dark@2.png"));
icon-shadow: none; }
- .radio:backdrop:checked.button.flat, .header-bar .radio.titlebutton.button:backdrop:checked,
+ .radio:backdrop:checked.button.flat, .radio.sidebar-button.button:backdrop:checked, .header-bar .radio.titlebutton.button:backdrop:checked,
.titlebar .radio.titlebutton.button:backdrop:checked {
icon-shadow: none; }
.radio:backdrop:checked:insensitive {
-gtk-icon-source: -gtk-scaled(url("assets/radio-checked-backdrop-insensitive-dark.png"), url("assets/radio-checked-backdrop-insensitive-dark@2.png"));
icon-shadow: none; }
- .radio:backdrop:checked:insensitive.button.flat, .header-bar .radio.titlebutton.button:backdrop:checked:insensitive,
+ .radio:backdrop:checked:insensitive.button.flat, .radio.sidebar-button.button:backdrop:checked:insensitive, .header-bar .radio.titlebutton.button:backdrop:checked:insensitive,
.titlebar .radio.titlebutton.button:backdrop:checked:insensitive {
icon-shadow: none; }
@@ -3464,10 +3511,9 @@ GtkProgressBar {
GtkScrolledWindow GtkViewport.frame {
border-style: none; }
-.separator, GtkPlacesSidebar.sidebar .view .separator,
-GtkPlacesSidebar.sidebar .view .separator:backdrop {
+.separator {
color: rgba(0, 0, 0, 0.1); }
- GtkFileChooserButton .separator.vertical, GtkFileChooserButton GtkPlacesSidebar.sidebar .view .vertical.separator, GtkPlacesSidebar.sidebar .view GtkFileChooserButton .vertical.separator, GtkFontButton .separator.vertical, GtkFontButton GtkPlacesSidebar.sidebar .view .vertical.separator, GtkPlacesSidebar.sidebar .view GtkFontButton .vertical.separator {
+ GtkFileChooserButton .separator.vertical, GtkFontButton .separator.vertical {
-GtkWidget-wide-separators: true; }
/*********
@@ -3520,7 +3566,7 @@ GtkPlacesSidebar.sidebar .view .separator:backdrop {
text-shadow: 0 -1px rgba(0, 0, 0, 0.81176);
icon-shadow: 0 -1px rgba(0, 0, 0, 0.81176);
box-shadow: inset 0 1px rgba(255, 255, 255, 0.1); }
- .list-row:selected .button.flat, .list-row:selected .header-bar .titlebutton.button, .header-bar .list-row:selected .titlebutton.button,
+ .list-row:selected .button.flat, .list-row:selected .sidebar-button.button, .list-row:selected .header-bar .titlebutton.button, .header-bar .list-row:selected .titlebutton.button,
.list-row:selected .titlebar .titlebutton.button,
.titlebar .list-row:selected .titlebutton.button {
border-color: transparent;
@@ -3546,7 +3592,7 @@ GtkPlacesSidebar.sidebar .view .separator:backdrop {
text-shadow: 0 -1px rgba(0, 0, 0, 0.89176);
icon-shadow: 0 -1px rgba(0, 0, 0, 0.89176);
box-shadow: inset 0 1px rgba(0, 0, 0, 0.07), inset 0 2px 1px -2px rgba(0, 0, 0, 0.6); }
- .list-row:selected .button:backdrop, .list-row:selected .button.flat:backdrop, .list-row:selected .header-bar .titlebutton.button:backdrop, .header-bar .list-row:selected .titlebutton.button:backdrop,
+ .list-row:selected .button:backdrop, .list-row:selected .button.flat:backdrop, .list-row:selected .sidebar-button.button:backdrop, .list-row:selected .header-bar .titlebutton.button:backdrop, .header-bar .list-row:selected .titlebutton.button:backdrop,
.list-row:selected .titlebar .titlebutton.button:backdrop,
.titlebar .list-row:selected .titlebutton.button:backdrop {
color: #949796;
@@ -3555,16 +3601,16 @@ GtkPlacesSidebar.sidebar .view .separator:backdrop {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0); }
- .list-row:selected .button:backdrop:active, .list-row:selected .button:backdrop:checked, .list-row:selected .button.flat:backdrop:active, .list-row:selected .header-bar .titlebutton.button:backdrop:active, .header-bar .list-row:selected .titlebutton.button:backdrop:active,
+ .list-row:selected .button:backdrop:active, .list-row:selected .button:backdrop:checked, .list-row:selected .button.flat:backdrop:active, .list-row:selected .sidebar-button.button:backdrop:active, .list-row:selected .header-bar .titlebutton.button:backdrop:active, .header-bar .list-row:selected .titlebutton.button:backdrop:active,
.list-row:selected .titlebar .titlebutton.button:backdrop:active,
- .titlebar .list-row:selected .titlebutton.button:backdrop:active, .list-row:selected .button.flat:backdrop:checked, .list-row:selected .header-bar .titlebutton.button:backdrop:checked, .header-bar .list-row:selected .titlebutton.button:backdrop:checked,
+ .titlebar .list-row:selected .titlebutton.button:backdrop:active, .list-row:selected .button.flat:backdrop:checked, .list-row:selected .sidebar-button.button:backdrop:checked, .list-row:selected .header-bar .titlebutton.button:backdrop:checked, .header-bar .list-row:selected .titlebutton.button:backdrop:checked,
.list-row:selected .titlebar .titlebutton.button:backdrop:checked,
.titlebar .list-row:selected .titlebutton.button:backdrop:checked {
color: #949796;
border-color: #1f2222;
background-image: linear-gradient(to bottom, #303535);
box-shadow: inset 0 1px rgba(255, 255, 255, 0); }
- .list-row:selected .button:backdrop:insensitive, .list-row:selected .button.flat:backdrop:insensitive, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive,
+ .list-row:selected .button:backdrop:insensitive, .list-row:selected .button.flat:backdrop:insensitive, .list-row:selected .sidebar-button.button:backdrop:insensitive, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive,
.list-row:selected .titlebar .titlebutton.button:backdrop:insensitive,
.titlebar .list-row:selected .titlebutton.button:backdrop:insensitive {
color: #5d6767;
@@ -3574,13 +3620,13 @@ GtkPlacesSidebar.sidebar .view .separator:backdrop {
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0); }
.list-row:selected .button:backdrop:insensitive > .label, .list-row:selected .header-bar .button.titlebutton:backdrop:insensitive > .label,
- .list-row:selected .titlebar .button.titlebutton:backdrop:insensitive > .label, .list-row:selected .button.flat:backdrop:insensitive > .label, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive > .label, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive > .label,
+ .list-row:selected .titlebar .button.titlebutton:backdrop:insensitive > .label, .list-row:selected .button.flat:backdrop:insensitive > .label, .list-row:selected .sidebar-button.button:backdrop:insensitive > .label, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive > .label, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive > .label,
.list-row:selected .titlebar .titlebutton.button:backdrop:insensitive > .label,
.titlebar .list-row:selected .titlebutton.button:backdrop:insensitive > .label {
color: inherit; }
- .list-row:selected .button:backdrop:insensitive:active, .list-row:selected .button:backdrop:insensitive:checked, .list-row:selected .button.flat:backdrop:insensitive:active, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive:active, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive:active,
+ .list-row:selected .button:backdrop:insensitive:active, .list-row:selected .button:backdrop:insensitive:checked, .list-row:selected .button.flat:backdrop:insensitive:active, .list-row:selected .sidebar-button.button:backdrop:insensitive:active, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive:active, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive:active,
.list-row:selected .titlebar .titlebutton.button:backdrop:insensitive:active,
- .titlebar .list-row:selected .titlebutton.button:backdrop:insensitive:active, .list-row:selected .button.flat:backdrop:insensitive:checked, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive:checked, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive:checked,
+ .titlebar .list-row:selected .titlebutton.button:backdrop:insensitive:active, .list-row:selected .button.flat:backdrop:insensitive:checked, .list-row:selected .sidebar-button.button:backdrop:insensitive:checked, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive:checked, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive:checked,
.list-row:selected .titlebar .titlebutton.button:backdrop:insensitive:checked,
.titlebar .list-row:selected .titlebutton.button:backdrop:insensitive:checked {
color: #5d6767;
@@ -3589,13 +3635,13 @@ GtkPlacesSidebar.sidebar .view .separator:backdrop {
box-shadow: inset 0 1px rgba(255, 255, 255, 0); }
.list-row:selected .button:backdrop:insensitive:active > .label, .list-row:selected .header-bar .button.titlebutton:backdrop:insensitive:active > .label,
.list-row:selected .titlebar .button.titlebutton:backdrop:insensitive:active > .label, .list-row:selected .button:backdrop:insensitive:checked > .label, .list-row:selected .header-bar .button.titlebutton:backdrop:insensitive:checked > .label,
- .list-row:selected .titlebar .button.titlebutton:backdrop:insensitive:checked > .label, .list-row:selected .button.flat:backdrop:insensitive:active > .label, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive:active > .label, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive:active > .label,
+ .list-row:selected .titlebar .button.titlebutton:backdrop:insensitive:checked > .label, .list-row:selected .button.flat:backdrop:insensitive:active > .label, .list-row:selected .sidebar-button.button:backdrop:insensitive:active > .label, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive:active > .label, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive:active > .label,
.list-row:selected .titlebar .titlebutton.button:backdrop:insensitive:active > .label,
- .titlebar .list-row:selected .titlebutton.button:backdrop:insensitive:active > .label, .list-row:selected .button.flat:backdrop:insensitive:checked > .label, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive:checked > .label, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive:checked > .label,
+ .titlebar .list-row:selected .titlebutton.button:backdrop:insensitive:active > .label, .list-row:selected .button.flat:backdrop:insensitive:checked > .label, .list-row:selected .sidebar-button.button:backdrop:insensitive:checked > .label, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive:checked > .label, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive:checked > .label,
.list-row:selected .titlebar .titlebutton.button:backdrop:insensitive:checked > .label,
.titlebar .list-row:selected .titlebutton.button:backdrop:insensitive:checked > .label {
color: inherit; }
- .list-row:selected .button.flat:backdrop, .list-row:selected .header-bar .titlebutton.button:backdrop, .header-bar .list-row:selected .titlebutton.button:backdrop,
+ .list-row:selected .button.flat:backdrop, .list-row:selected .sidebar-button.button:backdrop, .list-row:selected .header-bar .titlebutton.button:backdrop, .header-bar .list-row:selected .titlebutton.button:backdrop,
.list-row:selected .titlebar .titlebutton.button:backdrop,
.titlebar .list-row:selected .titlebutton.button:backdrop {
border-color: transparent;
@@ -3658,10 +3704,11 @@ GtkPlacesSidebar.sidebar .view .separator:backdrop {
text-shadow: 0 1px black;
icon-shadow: 0 1px black;
outline-color: rgba(238, 238, 236, 0.3); }
- .app-notification .button.flat, .app-notification .header-bar .titlebutton.button, .header-bar .app-notification .titlebutton.button,
+ .app-notification .button.flat, .app-notification .sidebar-button.button, .app-notification .header-bar .titlebutton.button, .header-bar .app-notification .titlebutton.button,
.app-notification .titlebar .titlebutton.button,
.titlebar .app-notification .titlebutton.button,
.app-notification.frame .button.flat,
+ .app-notification.frame .sidebar-button.button,
.app-notification.frame .header-bar .titlebutton.button,
.header-bar .app-notification.frame .titlebutton.button,
.app-notification.frame .titlebar .titlebutton.button,
@@ -3947,31 +3994,44 @@ GtkFileChooserDialog .dialog-action-box {
***********/
.sidebar {
border: none;
- background-color: #454c4c; }
+ background-color: #313434; }
.sidebar:backdrop {
- background-color: #454c4c; }
-
-GtkPlacesSidebar.sidebar .view {
- color: #eeeeec;
- background-color: transparent; }
- GtkPlacesSidebar.sidebar .view .image {
- color: #bbbdbc; }
- GtkPlacesSidebar.sidebar .view .image:selected {
- color: #e9eff5; }
- GtkPlacesSidebar.sidebar .view .image:selected:backdrop {
- color: #e9eff5; }
- GtkPlacesSidebar.sidebar .view .image:insensitive {
- color: #7c8180; }
- GtkPlacesSidebar.sidebar .view .image:backdrop {
- color: #7c8180; }
- GtkPlacesSidebar.sidebar .view .image:backdrop:insensitive {
- color: #565f5f; }
- GtkPlacesSidebar.sidebar .view:insensitive {
- color: #949796; }
- GtkPlacesSidebar.sidebar .view:backdrop {
- color: #949796; }
- GtkPlacesSidebar.sidebar .view:backdrop:insensitive {
- color: #5d6767; }
+ background-color: #3e4444; }
+
+.list-row {
+ padding: 0px; }
+GtkSidebarRow .sidebar-revealer {
+ padding: 4px 14px 4px 12px; }
+GtkSidebarRow .sidebar-icon {
+ padding-right: 8px;
+ opacity: 0.7; }
+GtkSidebarRow .sidebar-label {
+ padding-right: 2px; }
+
+GtkPlacesSidebar.sidebar .sidebar-placeholder-row {
+ border: solid 1px #215d9c; }
+GtkPlacesSidebar.sidebar .sidebar-new-bookmark-row {
+ background-color: #262a2a; }
+.list-row.button:hover {
+ background-color: #4b5150; }
+.sidebar-button.button, .header-bar .sidebar-button.button.titlebutton,
+.titlebar .sidebar-button.button.titlebutton {
+ border-radius: 100%;
+ outline-radius: 100%;
+ /* &:hover:not(:active):not(:backdrop) {
+ background-image: none;
+ background-color: gtkalpha(currentColor, 0.1);
+ border-color: transparentize($borders_color, 1);
+ box-shadow: inset 0 0 transparentize(white, 1);
+ icon-shadow: none;
+ } */ }
+ .sidebar-button.button.image-button, .header-bar .sidebar-button.titlebutton.button,
+ .titlebar .sidebar-button.titlebutton.button {
+ padding: 5px; }
+ .sidebar-button.button:not(:hover):not(:active) > GtkImage, .header-bar .sidebar-button.button.titlebutton:not(:hover):not(:active) > GtkImage,
+ .titlebar .sidebar-button.button.titlebutton:not(:hover):not(:active) > GtkImage, .sidebar-button.button:backdrop > GtkImage, .header-bar .sidebar-button.button.titlebutton:backdrop > GtkImage,
+ .titlebar .sidebar-button.button.titlebutton:backdrop > GtkImage {
+ opacity: 0.7; }
.sidebar-item {
padding: 10px 4px; }
@@ -4328,12 +4388,12 @@ GtkVolumeButton.button, .header-bar GtkVolumeButton.button.titlebutton,
.titlebar.selection-mode .titlebutton.button:backdrop {
icon-shadow: none; }
-.view:selected, GtkCalendar:selected, .label:selected, .label:selected:focus, .label:selected:hover, .grid-child:selected, .entry:selected, .entry:selected:focus, .menuitem.button.flat:selected, .header-bar .menuitem.titlebutton.button:selected,
-.titlebar .menuitem.titlebutton.button:selected, .list-row:selected, .sidebar:selected, GtkPlacesSidebar.sidebar .view:selected, GtkPlacesSidebar.sidebar GtkCalendar:selected {
+.view:selected, GtkCalendar:selected, .label:selected, .label:selected:focus, .label:selected:hover, .grid-child:selected, .entry:selected, .entry:selected:focus, .menuitem.button.flat:selected, .menuitem.sidebar-button.button:selected, .header-bar .menuitem.titlebutton.button:selected,
+.titlebar .menuitem.titlebutton.button:selected, .list-row:selected, .sidebar:selected {
background-color: #215d9c;
color: #ffffff; }
- .view:backdrop:selected, GtkCalendar:backdrop:selected, .label:backdrop:selected, .grid-child:backdrop:selected, .entry:backdrop:selected, .menuitem.button.flat:backdrop:selected, .header-bar .menuitem.titlebutton.button:backdrop:selected,
- .titlebar .menuitem.titlebutton.button:backdrop:selected, .list-row:backdrop:selected, .sidebar:backdrop:selected, GtkPlacesSidebar.sidebar .view:backdrop:selected, GtkPlacesSidebar.sidebar GtkCalendar:backdrop:selected {
+ .view:backdrop:selected, GtkCalendar:backdrop:selected, .label:backdrop:selected, .grid-child:backdrop:selected, .entry:backdrop:selected, .menuitem.button.flat:backdrop:selected, .menuitem.sidebar-button.button:backdrop:selected, .header-bar .menuitem.titlebutton.button:backdrop:selected,
+ .titlebar .menuitem.titlebutton.button:backdrop:selected, .list-row:backdrop:selected, .sidebar:backdrop:selected {
color: #ffffff; }
/* Decouple the font of context menus from their entry/textview */
diff --git a/gtk/theme/Adwaita/gtk-contained.css b/gtk/theme/Adwaita/gtk-contained.css
index b477889cde..022e24364a 100644
--- a/gtk/theme/Adwaita/gtk-contained.css
+++ b/gtk/theme/Adwaita/gtk-contained.css
@@ -77,16 +77,16 @@
border: 1px solid #4a90d9;
background-color: rgba(74, 144, 217, 0.2); }
-.label.separator, GtkPlacesSidebar.sidebar .view .label.separator {
+.label.separator {
color: #2e3436; }
- .label.separator:backdrop, GtkPlacesSidebar.sidebar .view .label.separator:backdrop {
+ .label.separator:backdrop {
color: #8e9192; }
.label:insensitive {
color: #8e9192; }
.label:insensitive:backdrop {
color: #c7c7c7; }
-.dim-label, .label.separator, GtkPlacesSidebar.sidebar .view .label.separator, .titlebar .subtitle,
+.dim-label, .label.separator, .titlebar .subtitle,
.header-bar .subtitle {
opacity: 0.55;
text-shadow: none; }
@@ -325,7 +325,7 @@ GtkTextView {
text-shadow: 0 1px rgba(255, 255, 255, 0.76923);
icon-shadow: 0 1px rgba(255, 255, 255, 0.76923);
box-shadow: inset 0 1px white, 0 1px white; }
- .button.flat, .header-bar .titlebutton.button,
+ .button.flat, .sidebar-button.button, .header-bar .titlebutton.button,
.titlebar .titlebutton.button {
border-color: transparent;
background-color: transparent;
@@ -334,11 +334,11 @@ GtkTextView {
text-shadow: none;
icon-shadow: none;
transition: none; }
- .button.flat:hover, .header-bar .titlebutton.button:hover,
+ .button.flat:hover, .sidebar-button.button:hover, .header-bar .titlebutton.button:hover,
.titlebar .titlebutton.button:hover {
transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94);
transition-duration: 500ms; }
- .button.flat:hover:active, .header-bar .titlebutton.button:hover:active,
+ .button.flat:hover:active, .sidebar-button.button:hover:active, .header-bar .titlebutton.button:hover:active,
.titlebar .titlebutton.button:hover:active {
transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
.button:hover, .header-bar .button.titlebutton:hover,
@@ -363,7 +363,7 @@ GtkTextView {
box-shadow: inset 0 1px rgba(0, 0, 0, 0.07), inset 0 2px 1px -2px rgba(0, 0, 0, 0.6), 0 1px white;
transition-duration: 50ms; }
.button:backdrop, .header-bar .button.titlebutton:backdrop,
- .titlebar .button.titlebutton:backdrop, .button.flat:backdrop, .header-bar .titlebutton.button:backdrop,
+ .titlebar .button.titlebutton:backdrop, .button.flat:backdrop, .sidebar-button.button:backdrop, .header-bar .titlebutton.button:backdrop,
.titlebar .titlebutton.button:backdrop {
color: #8e9192;
border-color: darkgray;
@@ -372,14 +372,14 @@ GtkTextView {
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(255, 255, 255, 0);
-gtk-image-effect: none; }
- .button:backdrop:active, .button:backdrop:checked, .button.flat:backdrop:active, .header-bar .titlebutton.button:backdrop:active,
- .titlebar .titlebutton.button:backdrop:active, .button.flat:backdrop:checked, .header-bar .titlebutton.button:backdrop:checked,
+ .button:backdrop:active, .button:backdrop:checked, .button.flat:backdrop:active, .sidebar-button.button:backdrop:active, .header-bar .titlebutton.button:backdrop:active,
+ .titlebar .titlebutton.button:backdrop:active, .button.flat:backdrop:checked, .sidebar-button.button:backdrop:checked, .header-bar .titlebutton.button:backdrop:checked,
.titlebar .titlebutton.button:backdrop:checked {
color: #8e9192;
border-color: darkgray;
background-image: linear-gradient(to bottom, #d5d5d5);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(255, 255, 255, 0); }
- .button:backdrop:insensitive, .button.flat:backdrop:insensitive, .header-bar .titlebutton.button:backdrop:insensitive,
+ .button:backdrop:insensitive, .button.flat:backdrop:insensitive, .sidebar-button.button:backdrop:insensitive, .header-bar .titlebutton.button:backdrop:insensitive,
.titlebar .titlebutton.button:backdrop:insensitive {
color: #c7c7c7;
border-color: darkgray;
@@ -388,11 +388,11 @@ GtkTextView {
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(255, 255, 255, 0); }
.button:backdrop:insensitive > .label, .header-bar .button.titlebutton:backdrop:insensitive > .label,
- .titlebar .button.titlebutton:backdrop:insensitive > .label, .button.flat:backdrop:insensitive > .label, .header-bar .titlebutton.button:backdrop:insensitive > .label,
+ .titlebar .button.titlebutton:backdrop:insensitive > .label, .button.flat:backdrop:insensitive > .label, .sidebar-button.button:backdrop:insensitive > .label, .header-bar .titlebutton.button:backdrop:insensitive > .label,
.titlebar .titlebutton.button:backdrop:insensitive > .label {
color: inherit; }
- .button:backdrop:insensitive:active, .button:backdrop:insensitive:checked, .button.flat:backdrop:insensitive:active, .header-bar .titlebutton.button:backdrop:insensitive:active,
- .titlebar .titlebutton.button:backdrop:insensitive:active, .button.flat:backdrop:insensitive:checked, .header-bar .titlebutton.button:backdrop:insensitive:checked,
+ .button:backdrop:insensitive:active, .button:backdrop:insensitive:checked, .button.flat:backdrop:insensitive:active, .sidebar-button.button:backdrop:insensitive:active, .header-bar .titlebutton.button:backdrop:insensitive:active,
+ .titlebar .titlebutton.button:backdrop:insensitive:active, .button.flat:backdrop:insensitive:checked, .sidebar-button.button:backdrop:insensitive:checked, .header-bar .titlebutton.button:backdrop:insensitive:checked,
.titlebar .titlebutton.button:backdrop:insensitive:checked {
color: #c7c7c7;
border-color: darkgray;
@@ -400,13 +400,13 @@ GtkTextView {
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(255, 255, 255, 0); }
.button:backdrop:insensitive:active > .label, .header-bar .button.titlebutton:backdrop:insensitive:active > .label,
.titlebar .button.titlebutton:backdrop:insensitive:active > .label, .button:backdrop:insensitive:checked > .label, .header-bar .button.titlebutton:backdrop:insensitive:checked > .label,
- .titlebar .button.titlebutton:backdrop:insensitive:checked > .label, .button.flat:backdrop:insensitive:active > .label, .header-bar .titlebutton.button:backdrop:insensitive:active > .label,
- .titlebar .titlebutton.button:backdrop:insensitive:active > .label, .button.flat:backdrop:insensitive:checked > .label, .header-bar .titlebutton.button:backdrop:insensitive:checked > .label,
+ .titlebar .button.titlebutton:backdrop:insensitive:checked > .label, .button.flat:backdrop:insensitive:active > .label, .sidebar-button.button:backdrop:insensitive:active > .label, .header-bar .titlebutton.button:backdrop:insensitive:active > .label,
+ .titlebar .titlebutton.button:backdrop:insensitive:active > .label, .button.flat:backdrop:insensitive:checked > .label, .sidebar-button.button:backdrop:insensitive:checked > .label, .header-bar .titlebutton.button:backdrop:insensitive:checked > .label,
.titlebar .titlebutton.button:backdrop:insensitive:checked > .label {
color: inherit; }
- .button.flat:backdrop, .header-bar .titlebutton.button:backdrop,
- .titlebar .titlebutton.button:backdrop, .button.flat:insensitive, .header-bar .titlebutton.button:insensitive,
- .titlebar .titlebutton.button:insensitive, .button.flat:backdrop:insensitive, .header-bar .titlebutton.button:backdrop:insensitive,
+ .button.flat:backdrop, .sidebar-button.button:backdrop, .header-bar .titlebutton.button:backdrop,
+ .titlebar .titlebutton.button:backdrop, .button.flat:insensitive, .sidebar-button.button:insensitive, .header-bar .titlebutton.button:insensitive,
+ .titlebar .titlebutton.button:insensitive, .button.flat:backdrop:insensitive, .sidebar-button.button:backdrop:insensitive, .header-bar .titlebutton.button:backdrop:insensitive,
.titlebar .titlebutton.button:backdrop:insensitive {
border-color: transparent;
background-color: transparent;
@@ -553,7 +553,7 @@ GtkTextView {
box-shadow: none;
text-shadow: none;
icon-shadow: none; }
- .osd .button.flat, .osd .header-bar .titlebutton.button, .header-bar .osd .titlebutton.button,
+ .osd .button.flat, .osd .sidebar-button.button, .osd .header-bar .titlebutton.button, .header-bar .osd .titlebutton.button,
.osd .titlebar .titlebutton.button,
.titlebar .osd .titlebutton.button {
border-color: transparent;
@@ -565,7 +565,7 @@ GtkTextView {
box-shadow: none;
text-shadow: 0 1px black;
icon-shadow: 0 1px black; }
- .osd .button.flat:hover, .osd .header-bar .titlebutton.button:hover, .header-bar .osd .titlebutton.button:hover,
+ .osd .button.flat:hover, .osd .sidebar-button.button:hover, .osd .header-bar .titlebutton.button:hover, .header-bar .osd .titlebutton.button:hover,
.osd .titlebar .titlebutton.button:hover,
.titlebar .osd .titlebutton.button:hover {
color: white;
@@ -579,7 +579,7 @@ GtkTextView {
background-clip: padding-box;
border-color: transparent;
box-shadow: none; }
- .osd .button.flat:insensitive, .osd .header-bar .titlebutton.button:insensitive, .header-bar .osd .titlebutton.button:insensitive,
+ .osd .button.flat:insensitive, .osd .sidebar-button.button:insensitive, .osd .header-bar .titlebutton.button:insensitive, .header-bar .osd .titlebutton.button:insensitive,
.osd .titlebar .titlebutton.button:insensitive,
.titlebar .osd .titlebutton.button:insensitive {
color: #878a89;
@@ -592,7 +592,7 @@ GtkTextView {
background-image: none;
border-color: transparent;
box-shadow: none; }
- .osd .button.flat:backdrop, .osd .header-bar .titlebutton.button:backdrop, .header-bar .osd .titlebutton.button:backdrop,
+ .osd .button.flat:backdrop, .osd .sidebar-button.button:backdrop, .osd .header-bar .titlebutton.button:backdrop, .header-bar .osd .titlebutton.button:backdrop,
.osd .titlebar .titlebutton.button:backdrop,
.titlebar .osd .titlebutton.button:backdrop {
border-color: transparent;
@@ -601,9 +601,9 @@ GtkTextView {
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(255, 255, 255, 0);
text-shadow: none;
icon-shadow: none; }
- .osd .button.flat:active, .osd .header-bar .titlebutton.button:active, .header-bar .osd .titlebutton.button:active,
+ .osd .button.flat:active, .osd .sidebar-button.button:active, .osd .header-bar .titlebutton.button:active, .header-bar .osd .titlebutton.button:active,
.osd .titlebar .titlebutton.button:active,
- .titlebar .osd .titlebutton.button:active, .osd .button.flat:checked, .osd .header-bar .titlebutton.button:checked, .header-bar .osd .titlebutton.button:checked,
+ .titlebar .osd .titlebutton.button:active, .osd .button.flat:checked, .osd .sidebar-button.button:checked, .osd .header-bar .titlebutton.button:checked, .header-bar .osd .titlebutton.button:checked,
.osd .titlebar .titlebutton.button:checked,
.titlebar .osd .titlebutton.button:checked {
color: white;
@@ -626,7 +626,7 @@ GtkTextView {
text-shadow: 0 -1px rgba(0, 0, 0, 0.54353);
icon-shadow: 0 -1px rgba(0, 0, 0, 0.54353);
box-shadow: inset 0 1px rgba(255, 255, 255, 0.5), 0 1px white; }
- .button.suggested-action.flat, .header-bar .suggested-action.titlebutton.button,
+ .button.suggested-action.flat, .suggested-action.sidebar-button.button, .header-bar .suggested-action.titlebutton.button,
.titlebar .suggested-action.titlebutton.button {
border-color: transparent;
background-color: transparent;
@@ -651,7 +651,7 @@ GtkTextView {
text-shadow: 0 -1px rgba(0, 0, 0, 0.62353);
icon-shadow: 0 -1px rgba(0, 0, 0, 0.62353);
box-shadow: inset 0 1px rgba(0, 0, 0, 0.07), inset 0 2px 1px -2px rgba(0, 0, 0, 0.6), 0 1px white; }
- .button.suggested-action:backdrop, .button.suggested-action.flat:backdrop, .header-bar .suggested-action.titlebutton.button:backdrop,
+ .button.suggested-action:backdrop, .button.suggested-action.flat:backdrop, .suggested-action.sidebar-button.button:backdrop, .header-bar .suggested-action.titlebutton.button:backdrop,
.titlebar .suggested-action.titlebutton.button:backdrop {
color: #dbe9f7;
border-color: #4a90d9;
@@ -659,14 +659,14 @@ GtkTextView {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(255, 255, 255, 0); }
- .button.suggested-action:backdrop:active, .button.suggested-action:backdrop:checked, .button.suggested-action.flat:backdrop:active, .header-bar .suggested-action.titlebutton.button:backdrop:active,
- .titlebar .suggested-action.titlebutton.button:backdrop:active, .button.suggested-action.flat:backdrop:checked, .header-bar .suggested-action.titlebutton.button:backdrop:checked,
+ .button.suggested-action:backdrop:active, .button.suggested-action:backdrop:checked, .button.suggested-action.flat:backdrop:active, .suggested-action.sidebar-button.button:backdrop:active, .header-bar .suggested-action.titlebutton.button:backdrop:active,
+ .titlebar .suggested-action.titlebutton.button:backdrop:active, .button.suggested-action.flat:backdrop:checked, .suggested-action.sidebar-button.button:backdrop:checked, .header-bar .suggested-action.titlebutton.button:backdrop:checked,
.titlebar .suggested-action.titlebutton.button:backdrop:checked {
color: #d4e4f4;
border-color: #2a76c6;
background-image: linear-gradient(to bottom, #2a76c6);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(255, 255, 255, 0); }
- .button.suggested-action:backdrop:insensitive, .button.suggested-action.flat:backdrop:insensitive, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive,
+ .button.suggested-action:backdrop:insensitive, .button.suggested-action.flat:backdrop:insensitive, .suggested-action.sidebar-button.button:backdrop:insensitive, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive,
.titlebar .suggested-action.titlebutton.button:backdrop:insensitive {
color: #c7c7c7;
border-color: darkgray;
@@ -675,11 +675,11 @@ GtkTextView {
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(255, 255, 255, 0); }
.button.suggested-action:backdrop:insensitive > .label, .header-bar .suggested-action.button.titlebutton:backdrop:insensitive > .label,
- .titlebar .suggested-action.button.titlebutton:backdrop:insensitive > .label, .button.suggested-action.flat:backdrop:insensitive > .label, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive > .label,
+ .titlebar .suggested-action.button.titlebutton:backdrop:insensitive > .label, .button.suggested-action.flat:backdrop:insensitive > .label, .suggested-action.sidebar-button.button:backdrop:insensitive > .label, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive > .label,
.titlebar .suggested-action.titlebutton.button:backdrop:insensitive > .label {
color: inherit; }
- .button.suggested-action:backdrop:insensitive:active, .button.suggested-action:backdrop:insensitive:checked, .button.suggested-action.flat:backdrop:insensitive:active, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive:active,
- .titlebar .suggested-action.titlebutton.button:backdrop:insensitive:active, .button.suggested-action.flat:backdrop:insensitive:checked, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive:checked,
+ .button.suggested-action:backdrop:insensitive:active, .button.suggested-action:backdrop:insensitive:checked, .button.suggested-action.flat:backdrop:insensitive:active, .suggested-action.sidebar-button.button:backdrop:insensitive:active, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive:active,
+ .titlebar .suggested-action.titlebutton.button:backdrop:insensitive:active, .button.suggested-action.flat:backdrop:insensitive:checked, .suggested-action.sidebar-button.button:backdrop:insensitive:checked, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive:checked,
.titlebar .suggested-action.titlebutton.button:backdrop:insensitive:checked {
color: #8db9e8;
border-color: #5094db;
@@ -687,13 +687,13 @@ GtkTextView {
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(255, 255, 255, 0); }
.button.suggested-action:backdrop:insensitive:active > .label, .header-bar .suggested-action.button.titlebutton:backdrop:insensitive:active > .label,
.titlebar .suggested-action.button.titlebutton:backdrop:insensitive:active > .label, .button.suggested-action:backdrop:insensitive:checked > .label, .header-bar .suggested-action.button.titlebutton:backdrop:insensitive:checked > .label,
- .titlebar .suggested-action.button.titlebutton:backdrop:insensitive:checked > .label, .button.suggested-action.flat:backdrop:insensitive:active > .label, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive:active > .label,
- .titlebar .suggested-action.titlebutton.button:backdrop:insensitive:active > .label, .button.suggested-action.flat:backdrop:insensitive:checked > .label, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive:checked > .label,
+ .titlebar .suggested-action.button.titlebutton:backdrop:insensitive:checked > .label, .button.suggested-action.flat:backdrop:insensitive:active > .label, .suggested-action.sidebar-button.button:backdrop:insensitive:active > .label, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive:active > .label,
+ .titlebar .suggested-action.titlebutton.button:backdrop:insensitive:active > .label, .button.suggested-action.flat:backdrop:insensitive:checked > .label, .suggested-action.sidebar-button.button:backdrop:insensitive:checked > .label, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive:checked > .label,
.titlebar .suggested-action.titlebutton.button:backdrop:insensitive:checked > .label {
color: inherit; }
- .button.suggested-action.flat:backdrop, .header-bar .suggested-action.titlebutton.button:backdrop,
- .titlebar .suggested-action.titlebutton.button:backdrop, .button.suggested-action.flat:insensitive, .header-bar .suggested-action.titlebutton.button:insensitive,
- .titlebar .suggested-action.titlebutton.button:insensitive, .button.suggested-action.flat:backdrop:insensitive, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive,
+ .button.suggested-action.flat:backdrop, .suggested-action.sidebar-button.button:backdrop, .header-bar .suggested-action.titlebutton.button:backdrop,
+ .titlebar .suggested-action.titlebutton.button:backdrop, .button.suggested-action.flat:insensitive, .suggested-action.sidebar-button.button:insensitive, .header-bar .suggested-action.titlebutton.button:insensitive,
+ .titlebar .suggested-action.titlebutton.button:insensitive, .button.suggested-action.flat:backdrop:insensitive, .suggested-action.sidebar-button.button:backdrop:insensitive, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive,
.titlebar .suggested-action.titlebutton.button:backdrop:insensitive {
border-color: transparent;
background-color: transparent;
@@ -773,7 +773,7 @@ GtkTextView {
text-shadow: 0 -1px rgba(0, 0, 0, 0.56078);
icon-shadow: 0 -1px rgba(0, 0, 0, 0.56078);
box-shadow: inset 0 1px rgba(255, 255, 255, 0.5), 0 1px white; }
- .button.destructive-action.flat, .header-bar .destructive-action.titlebutton.button,
+ .button.destructive-action.flat, .destructive-action.sidebar-button.button, .header-bar .destructive-action.titlebutton.button,
.titlebar .destructive-action.titlebutton.button {
border-color: transparent;
background-color: transparent;
@@ -798,7 +798,7 @@ GtkTextView {
text-shadow: 0 -1px rgba(0, 0, 0, 0.64078);
icon-shadow: 0 -1px rgba(0, 0, 0, 0.64078);
box-shadow: inset 0 1px rgba(0, 0, 0, 0.07), inset 0 2px 1px -2px rgba(0, 0, 0, 0.6), 0 1px white; }
- .button.destructive-action:backdrop, .button.destructive-action.flat:backdrop, .header-bar .destructive-action.titlebutton.button:backdrop,
+ .button.destructive-action:backdrop, .button.destructive-action.flat:backdrop, .destructive-action.sidebar-button.button:backdrop, .header-bar .destructive-action.titlebutton.button:backdrop,
.titlebar .destructive-action.titlebutton.button:backdrop {
color: #fcd4d4;
border-color: #ef2929;
@@ -806,14 +806,14 @@ GtkTextView {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(255, 255, 255, 0); }
- .button.destructive-action:backdrop:active, .button.destructive-action:backdrop:checked, .button.destructive-action.flat:backdrop:active, .header-bar .destructive-action.titlebutton.button:backdrop:active,
- .titlebar .destructive-action.titlebutton.button:backdrop:active, .button.destructive-action.flat:backdrop:checked, .header-bar .destructive-action.titlebutton.button:backdrop:checked,
+ .button.destructive-action:backdrop:active, .button.destructive-action:backdrop:checked, .button.destructive-action.flat:backdrop:active, .destructive-action.sidebar-button.button:backdrop:active, .header-bar .destructive-action.titlebutton.button:backdrop:active,
+ .titlebar .destructive-action.titlebutton.button:backdrop:active, .button.destructive-action.flat:backdrop:checked, .destructive-action.sidebar-button.button:backdrop:checked, .header-bar .destructive-action.titlebutton.button:backdrop:checked,
.titlebar .destructive-action.titlebutton.button:backdrop:checked {
color: #f7cfcf;
border-color: #d51010;
background-image: linear-gradient(to bottom, #d51010);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(255, 255, 255, 0); }
- .button.destructive-action:backdrop:insensitive, .button.destructive-action.flat:backdrop:insensitive, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive,
+ .button.destructive-action:backdrop:insensitive, .button.destructive-action.flat:backdrop:insensitive, .destructive-action.sidebar-button.button:backdrop:insensitive, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive,
.titlebar .destructive-action.titlebutton.button:backdrop:insensitive {
color: #c7c7c7;
border-color: darkgray;
@@ -822,11 +822,11 @@ GtkTextView {
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(255, 255, 255, 0); }
.button.destructive-action:backdrop:insensitive > .label, .header-bar .destructive-action.button.titlebutton:backdrop:insensitive > .label,
- .titlebar .destructive-action.button.titlebutton:backdrop:insensitive > .label, .button.destructive-action.flat:backdrop:insensitive > .label, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive > .label,
+ .titlebar .destructive-action.button.titlebutton:backdrop:insensitive > .label, .button.destructive-action.flat:backdrop:insensitive > .label, .destructive-action.sidebar-button.button:backdrop:insensitive > .label, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive > .label,
.titlebar .destructive-action.titlebutton.button:backdrop:insensitive > .label {
color: inherit; }
- .button.destructive-action:backdrop:insensitive:active, .button.destructive-action:backdrop:insensitive:checked, .button.destructive-action.flat:backdrop:insensitive:active, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive:active,
- .titlebar .destructive-action.titlebutton.button:backdrop:insensitive:active, .button.destructive-action.flat:backdrop:insensitive:checked, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive:checked,
+ .button.destructive-action:backdrop:insensitive:active, .button.destructive-action:backdrop:insensitive:checked, .button.destructive-action.flat:backdrop:insensitive:active, .destructive-action.sidebar-button.button:backdrop:insensitive:active, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive:active,
+ .titlebar .destructive-action.titlebutton.button:backdrop:insensitive:active, .button.destructive-action.flat:backdrop:insensitive:checked, .destructive-action.sidebar-button.button:backdrop:insensitive:checked, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive:checked,
.titlebar .destructive-action.titlebutton.button:backdrop:insensitive:checked {
color: #f57979;
border-color: #ef3131;
@@ -834,13 +834,13 @@ GtkTextView {
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(255, 255, 255, 0); }
.button.destructive-action:backdrop:insensitive:active > .label, .header-bar .destructive-action.button.titlebutton:backdrop:insensitive:active > .label,
.titlebar .destructive-action.button.titlebutton:backdrop:insensitive:active > .label, .button.destructive-action:backdrop:insensitive:checked > .label, .header-bar .destructive-action.button.titlebutton:backdrop:insensitive:checked > .label,
- .titlebar .destructive-action.button.titlebutton:backdrop:insensitive:checked > .label, .button.destructive-action.flat:backdrop:insensitive:active > .label, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive:active > .label,
- .titlebar .destructive-action.titlebutton.button:backdrop:insensitive:active > .label, .button.destructive-action.flat:backdrop:insensitive:checked > .label, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive:checked > .label,
+ .titlebar .destructive-action.button.titlebutton:backdrop:insensitive:checked > .label, .button.destructive-action.flat:backdrop:insensitive:active > .label, .destructive-action.sidebar-button.button:backdrop:insensitive:active > .label, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive:active > .label,
+ .titlebar .destructive-action.titlebutton.button:backdrop:insensitive:active > .label, .button.destructive-action.flat:backdrop:insensitive:checked > .label, .destructive-action.sidebar-button.button:backdrop:insensitive:checked > .label, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive:checked > .label,
.titlebar .destructive-action.titlebutton.button:backdrop:insensitive:checked > .label {
color: inherit; }
- .button.destructive-action.flat:backdrop, .header-bar .destructive-action.titlebutton.button:backdrop,
- .titlebar .destructive-action.titlebutton.button:backdrop, .button.destructive-action.flat:insensitive, .header-bar .destructive-action.titlebutton.button:insensitive,
- .titlebar .destructive-action.titlebutton.button:insensitive, .button.destructive-action.flat:backdrop:insensitive, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive,
+ .button.destructive-action.flat:backdrop, .destructive-action.sidebar-button.button:backdrop, .header-bar .destructive-action.titlebutton.button:backdrop,
+ .titlebar .destructive-action.titlebutton.button:backdrop, .button.destructive-action.flat:insensitive, .destructive-action.sidebar-button.button:insensitive, .header-bar .destructive-action.titlebutton.button:insensitive,
+ .titlebar .destructive-action.titlebutton.button:insensitive, .button.destructive-action.flat:backdrop:insensitive, .destructive-action.sidebar-button.button:backdrop:insensitive, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive,
.titlebar .destructive-action.titlebutton.button:backdrop:insensitive {
border-color: transparent;
background-color: transparent;
@@ -1052,13 +1052,17 @@ GtkTextView {
.inline-toolbar GtkToolButton > .button:backdrop:insensitive:active > .label, .inline-toolbar GtkToolButton > .button:backdrop:insensitive:checked > .label {
color: inherit; }
-.inline-toolbar.toolbar GtkToolButton > .button.flat, .inline-toolbar GtkToolButton > .button.flat, .inline-toolbar.search-bar GtkToolButton > .button.flat, .inline-toolbar.location-bar GtkToolButton > .button.flat, .inline-toolbar .header-bar GtkToolButton > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton > .button.titlebutton,
+.inline-toolbar.toolbar GtkToolButton > .button.flat, .inline-toolbar GtkToolButton > .button.flat, .inline-toolbar.search-bar GtkToolButton > .button.flat, .inline-toolbar.location-bar GtkToolButton > .button.flat, .inline-toolbar.toolbar GtkToolButton > .sidebar-button.button, .inline-toolbar GtkToolButton > .sidebar-button.button, .inline-toolbar.search-bar GtkToolButton > .sidebar-button.button, .inline-toolbar.location-bar GtkToolButton > .sidebar-button.button, .inline-toolbar .header-bar GtkToolButton > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton > .button.titlebutton,
.inline-toolbar .titlebar GtkToolButton > .button.titlebutton,
.titlebar .inline-toolbar GtkToolButton > .button.titlebutton,
.inline-toolbar.toolbar GtkToolButton:backdrop > .button.flat,
.inline-toolbar GtkToolButton:backdrop > .button.flat,
.inline-toolbar.search-bar GtkToolButton:backdrop > .button.flat,
.inline-toolbar.location-bar GtkToolButton:backdrop > .button.flat,
+.inline-toolbar.toolbar GtkToolButton:backdrop > .sidebar-button.button,
+.inline-toolbar GtkToolButton:backdrop > .sidebar-button.button,
+.inline-toolbar.search-bar GtkToolButton:backdrop > .sidebar-button.button,
+.inline-toolbar.location-bar GtkToolButton:backdrop > .sidebar-button.button,
.inline-toolbar .header-bar GtkToolButton:backdrop > .button.titlebutton,
.header-bar .inline-toolbar GtkToolButton:backdrop > .button.titlebutton,
.inline-toolbar .titlebar GtkToolButton:backdrop > .button.titlebutton,
@@ -1072,13 +1076,17 @@ GtkTextView {
border-right-style: none; }
.linked > .entry:first-child, .osd .button:first-child:hover, .osd .button:first-child:active, .osd .button:first-child:checked, .osd .button:first-child:insensitive, .osd .button:first-child:backdrop, .osd .button.suggested-action:first-child, .osd .button.destructive-action:first-child, .inline-toolbar .button:first-child, .linked > .button:first-child, .header-bar .linked > .button.titlebutton:first-child,
-.titlebar .linked > .button.titlebutton:first-child, .inline-toolbar.toolbar GtkToolButton:first-child > .button.flat, .inline-toolbar GtkToolButton:first-child > .button.flat, .inline-toolbar.search-bar GtkToolButton:first-child > .button.flat, .inline-toolbar.location-bar GtkToolButton:first-child > .button.flat, .inline-toolbar .header-bar GtkToolButton:first-child > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton:first-child > .button.titlebutton,
+.titlebar .linked > .button.titlebutton:first-child, .inline-toolbar.toolbar GtkToolButton:first-child > .button.flat, .inline-toolbar GtkToolButton:first-child > .button.flat, .inline-toolbar.search-bar GtkToolButton:first-child > .button.flat, .inline-toolbar.location-bar GtkToolButton:first-child > .button.flat, .inline-toolbar.toolbar GtkToolButton:first-child > .sidebar-button.button, .inline-toolbar GtkToolButton:first-child > .sidebar-button.button, .inline-toolbar.search-bar GtkToolButton:first-child > .sidebar-button.button, .inline-toolbar.location-bar GtkToolButton:first-child > .sidebar-button.button, .inline-toolbar .header-bar GtkToolButton:first-child > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton:first-child > .button.titlebutton,
.inline-toolbar .titlebar GtkToolButton:first-child > .button.titlebutton,
.titlebar .inline-toolbar GtkToolButton:first-child > .button.titlebutton,
.inline-toolbar.toolbar GtkToolButton:backdrop:first-child > .button.flat,
.inline-toolbar GtkToolButton:backdrop:first-child > .button.flat,
.inline-toolbar.search-bar GtkToolButton:backdrop:first-child > .button.flat,
.inline-toolbar.location-bar GtkToolButton:backdrop:first-child > .button.flat,
+.inline-toolbar.toolbar GtkToolButton:backdrop:first-child > .sidebar-button.button,
+.inline-toolbar GtkToolButton:backdrop:first-child > .sidebar-button.button,
+.inline-toolbar.search-bar GtkToolButton:backdrop:first-child > .sidebar-button.button,
+.inline-toolbar.location-bar GtkToolButton:backdrop:first-child > .sidebar-button.button,
.inline-toolbar .header-bar GtkToolButton:backdrop:first-child > .button.titlebutton,
.header-bar .inline-toolbar GtkToolButton:backdrop:first-child > .button.titlebutton,
.inline-toolbar .titlebar GtkToolButton:backdrop:first-child > .button.titlebutton,
@@ -1087,13 +1095,17 @@ GtkTextView {
border-top-left-radius: 3px;
border-bottom-left-radius: 3px; }
.linked > .entry:last-child, .osd .button:last-child:hover, .osd .button:last-child:active, .osd .button:last-child:checked, .osd .button:last-child:insensitive, .osd .button:last-child:backdrop, .osd .button.suggested-action:last-child, .osd .button.destructive-action:last-child, .inline-toolbar .button:last-child, .linked > .button:last-child, .header-bar .linked > .button.titlebutton:last-child,
-.titlebar .linked > .button.titlebutton:last-child, .inline-toolbar.toolbar GtkToolButton:last-child > .button.flat, .inline-toolbar GtkToolButton:last-child > .button.flat, .inline-toolbar.search-bar GtkToolButton:last-child > .button.flat, .inline-toolbar.location-bar GtkToolButton:last-child > .button.flat, .inline-toolbar .header-bar GtkToolButton:last-child > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton:last-child > .button.titlebutton,
+.titlebar .linked > .button.titlebutton:last-child, .inline-toolbar.toolbar GtkToolButton:last-child > .button.flat, .inline-toolbar GtkToolButton:last-child > .button.flat, .inline-toolbar.search-bar GtkToolButton:last-child > .button.flat, .inline-toolbar.location-bar GtkToolButton:last-child > .button.flat, .inline-toolbar.toolbar GtkToolButton:last-child > .sidebar-button.button, .inline-toolbar GtkToolButton:last-child > .sidebar-button.button, .inline-toolbar.search-bar GtkToolButton:last-child > .sidebar-button.button, .inline-toolbar.location-bar GtkToolButton:last-child > .sidebar-button.button, .inline-toolbar .header-bar GtkToolButton:last-child > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton:last-child > .button.titlebutton,
.inline-toolbar .titlebar GtkToolButton:last-child > .button.titlebutton,
.titlebar .inline-toolbar GtkToolButton:last-child > .button.titlebutton,
.inline-toolbar.toolbar GtkToolButton:backdrop:last-child > .button.flat,
.inline-toolbar GtkToolButton:backdrop:last-child > .button.flat,
.inline-toolbar.search-bar GtkToolButton:backdrop:last-child > .button.flat,
.inline-toolbar.location-bar GtkToolButton:backdrop:last-child > .button.flat,
+.inline-toolbar.toolbar GtkToolButton:backdrop:last-child > .sidebar-button.button,
+.inline-toolbar GtkToolButton:backdrop:last-child > .sidebar-button.button,
+.inline-toolbar.search-bar GtkToolButton:backdrop:last-child > .sidebar-button.button,
+.inline-toolbar.location-bar GtkToolButton:backdrop:last-child > .sidebar-button.button,
.inline-toolbar .header-bar GtkToolButton:backdrop:last-child > .button.titlebutton,
.header-bar .inline-toolbar GtkToolButton:backdrop:last-child > .button.titlebutton,
.inline-toolbar .titlebar GtkToolButton:backdrop:last-child > .button.titlebutton,
@@ -1103,13 +1115,17 @@ GtkTextView {
border-bottom-right-radius: 3px;
border-right-style: solid; }
.linked > .entry:only-child, .osd .button:only-child:hover, .osd .button:only-child:active, .osd .button:only-child:checked, .osd .button:only-child:insensitive, .osd .button:only-child:backdrop, .osd .button.suggested-action:only-child, .osd .button.destructive-action:only-child, .inline-toolbar .button:only-child, .linked > .button:only-child, .header-bar .linked > .button.titlebutton:only-child,
-.titlebar .linked > .button.titlebutton:only-child, .inline-toolbar.toolbar GtkToolButton:only-child > .button.flat, .inline-toolbar GtkToolButton:only-child > .button.flat, .inline-toolbar.search-bar GtkToolButton:only-child > .button.flat, .inline-toolbar.location-bar GtkToolButton:only-child > .button.flat, .inline-toolbar .header-bar GtkToolButton:only-child > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton:only-child > .button.titlebutton,
+.titlebar .linked > .button.titlebutton:only-child, .inline-toolbar.toolbar GtkToolButton:only-child > .button.flat, .inline-toolbar GtkToolButton:only-child > .button.flat, .inline-toolbar.search-bar GtkToolButton:only-child > .button.flat, .inline-toolbar.location-bar GtkToolButton:only-child > .button.flat, .inline-toolbar.toolbar GtkToolButton:only-child > .sidebar-button.button, .inline-toolbar GtkToolButton:only-child > .sidebar-button.button, .inline-toolbar.search-bar GtkToolButton:only-child > .sidebar-button.button, .inline-toolbar.location-bar GtkToolButton:only-child > .sidebar-button.button, .inline-toolbar .header-bar GtkToolButton:only-child > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton:only-child > .button.titlebutton,
.inline-toolbar .titlebar GtkToolButton:only-child > .button.titlebutton,
.titlebar .inline-toolbar GtkToolButton:only-child > .button.titlebutton,
.inline-toolbar.toolbar GtkToolButton:backdrop:only-child > .button.flat,
.inline-toolbar GtkToolButton:backdrop:only-child > .button.flat,
.inline-toolbar.search-bar GtkToolButton:backdrop:only-child > .button.flat,
.inline-toolbar.location-bar GtkToolButton:backdrop:only-child > .button.flat,
+.inline-toolbar.toolbar GtkToolButton:backdrop:only-child > .sidebar-button.button,
+.inline-toolbar GtkToolButton:backdrop:only-child > .sidebar-button.button,
+.inline-toolbar.search-bar GtkToolButton:backdrop:only-child > .sidebar-button.button,
+.inline-toolbar.location-bar GtkToolButton:backdrop:only-child > .sidebar-button.button,
.inline-toolbar .header-bar GtkToolButton:backdrop:only-child > .button.titlebutton,
.header-bar .inline-toolbar GtkToolButton:backdrop:only-child > .button.titlebutton,
.inline-toolbar .titlebar GtkToolButton:backdrop:only-child > .button.titlebutton,
@@ -1141,8 +1157,9 @@ GtkTextView {
border-radius: 3px;
border-style: solid; }
-.menuitem.button.flat, .header-bar .menuitem.titlebutton.button,
-.titlebar .menuitem.titlebutton.button, .menuitem.button.flat:backdrop, .menuitem.button.flat:backdrop:hover, .header-bar .menuitem.titlebutton.button:backdrop:hover,
+.menuitem.button.flat, .menuitem.sidebar-button.button, .header-bar .menuitem.titlebutton.button,
+.titlebar .menuitem.titlebutton.button, .menuitem.button.flat:backdrop, .menuitem.sidebar-button.button:backdrop, .header-bar .menuitem.titlebutton.button:backdrop,
+.titlebar .menuitem.titlebutton.button:backdrop, .menuitem.button.flat:backdrop:hover, .menuitem.sidebar-button.button:backdrop:hover, .header-bar .menuitem.titlebutton.button:backdrop:hover,
.titlebar .menuitem.titlebutton.button:backdrop:hover, .button:link, .header-bar .button.titlebutton:link,
.titlebar .button.titlebutton:link, .button:visited, .header-bar .button.titlebutton:visited,
.titlebar .button.titlebutton:visited, .button:link:hover, .button:link:active, .button:link:checked, .button:visited:hover, .button:visited:active, .button:visited:checked, .button:link:backdrop, .button:visited:backdrop, .menu.button, .header-bar .menu.button.titlebutton,
@@ -1157,24 +1174,42 @@ GtkTextView {
.list-row.button:backdrop:insensitive:active,
.list-row.button:backdrop:insensitive:checked,
.list-row.button:insensitive:active,
-.list-row.button:insensitive:checked, .app-notification .button.flat, .app-notification .header-bar .titlebutton.button, .header-bar .app-notification .titlebutton.button,
+.list-row.button:insensitive:checked, .app-notification .button.flat, .app-notification .sidebar-button.button, .app-notification .header-bar .titlebutton.button, .header-bar .app-notification .titlebutton.button,
.app-notification .titlebar .titlebutton.button,
.titlebar .app-notification .titlebutton.button,
-.app-notification.frame .button.flat, .app-notification .button.flat:backdrop, .app-notification .button.flat:insensitive, .app-notification .button.flat:backdrop:insensitive, .app-notification .header-bar .titlebutton.button:backdrop:insensitive, .header-bar .app-notification .titlebutton.button:backdrop:insensitive,
+.app-notification.frame .button.flat,
+.app-notification.frame .sidebar-button.button,
+.app-notification.frame .header-bar .button.titlebutton,
+.header-bar .app-notification.frame .button.titlebutton,
+.app-notification.frame .titlebar .button.titlebutton,
+.titlebar .app-notification.frame .button.titlebutton, .app-notification .button.flat:backdrop, .app-notification .sidebar-button.button:backdrop, .app-notification .header-bar .titlebutton.button:backdrop, .header-bar .app-notification .titlebutton.button:backdrop,
+.app-notification .titlebar .titlebutton.button:backdrop,
+.titlebar .app-notification .titlebutton.button:backdrop, .app-notification .button.flat:insensitive, .app-notification .sidebar-button.button:insensitive, .app-notification .header-bar .titlebutton.button:insensitive, .header-bar .app-notification .titlebutton.button:insensitive,
+.app-notification .titlebar .titlebutton.button:insensitive,
+.titlebar .app-notification .titlebutton.button:insensitive, .app-notification .button.flat:backdrop:insensitive, .app-notification .sidebar-button.button:backdrop:insensitive, .app-notification .header-bar .titlebutton.button:backdrop:insensitive, .header-bar .app-notification .titlebutton.button:backdrop:insensitive,
.app-notification .titlebar .titlebutton.button:backdrop:insensitive,
.titlebar .app-notification .titlebutton.button:backdrop:insensitive,
.app-notification.frame .button.flat:backdrop,
+.app-notification.frame .sidebar-button.button:backdrop,
.app-notification.frame .header-bar .button.titlebutton:backdrop,
.header-bar .app-notification.frame .button.titlebutton:backdrop,
.app-notification.frame .titlebar .button.titlebutton:backdrop,
.titlebar .app-notification.frame .button.titlebutton:backdrop,
.app-notification.frame .button.flat:insensitive,
+.app-notification.frame .sidebar-button.button:insensitive,
.app-notification.frame .header-bar .button.titlebutton:insensitive,
.header-bar .app-notification.frame .button.titlebutton:insensitive,
.app-notification.frame .titlebar .button.titlebutton:insensitive,
.titlebar .app-notification.frame .button.titlebutton:insensitive,
-.app-notification.frame .button.flat:backdrop:insensitive, GtkCalendar.button, .header-bar GtkCalendar.button.titlebutton,
-.titlebar GtkCalendar.button.titlebutton, GtkCalendar.button:hover, GtkCalendar.button:backdrop, .scale-popup .button:hover, .scale-popup .button:backdrop, .scale-popup .button:backdrop:hover, .scale-popup .button:backdrop:insensitive {
+.app-notification.frame .button.flat:backdrop:insensitive,
+.app-notification.frame .sidebar-button.button:backdrop:insensitive,
+.app-notification.frame .header-bar .button.titlebutton:backdrop:insensitive,
+.header-bar .app-notification.frame .button.titlebutton:backdrop:insensitive,
+.app-notification.frame .titlebar .button.titlebutton:backdrop:insensitive,
+.titlebar .app-notification.frame .button.titlebutton:backdrop:insensitive, GtkCalendar.button, .header-bar GtkCalendar.button.titlebutton,
+.titlebar GtkCalendar.button.titlebutton, GtkCalendar.button:hover, .header-bar GtkCalendar.button.titlebutton:hover,
+.titlebar GtkCalendar.button.titlebutton:hover, GtkCalendar.button:backdrop, .header-bar GtkCalendar.button.titlebutton:backdrop,
+.titlebar GtkCalendar.button.titlebutton:backdrop, .scale-popup .button:hover, .scale-popup .button:backdrop, .scale-popup .button:backdrop:hover, .scale-popup .button:backdrop:insensitive {
border-color: transparent;
background-color: transparent;
background-image: none;
@@ -1183,10 +1218,10 @@ GtkTextView {
icon-shadow: none; }
/* menu buttons */
-.menuitem.button.flat, .header-bar .menuitem.titlebutton.button,
+.menuitem.button.flat, .menuitem.sidebar-button.button, .header-bar .menuitem.titlebutton.button,
.titlebar .menuitem.titlebutton.button {
outline-offset: -1px; }
- .menuitem.button.flat:hover, .header-bar .menuitem.titlebutton.button:hover,
+ .menuitem.button.flat:hover, .menuitem.sidebar-button.button:hover, .header-bar .menuitem.titlebutton.button:hover,
.titlebar .menuitem.titlebutton.button:hover {
background-color: #dadbdb; }
@@ -1458,7 +1493,7 @@ GtkComboBox {
color: #c7c7c7; }
GtkComboBox .menuitem {
text-shadow: none; }
- GtkComboBox .separator.vertical, GtkComboBox GtkPlacesSidebar.sidebar .view .vertical.separator, GtkPlacesSidebar.sidebar .view GtkComboBox .vertical.separator {
+ GtkComboBox .separator.vertical {
-GtkWidget-wide-separators: true; }
GtkComboBox.combobox-entry .entry:dir(ltr) {
border-top-right-radius: 0;
@@ -1537,10 +1572,8 @@ GtkComboBox {
padding-left: 12px;
padding-right: 12px; }
.titlebar .header-bar-separator, .titlebar > GtkBox > .separator.vertical,
- GtkPlacesSidebar.sidebar .view .titlebar > GtkBox > .vertical.separator:backdrop,
.header-bar .header-bar-separator,
- .header-bar > GtkBox > .separator.vertical,
- GtkPlacesSidebar.sidebar .view .header-bar > GtkBox > .vertical.separator:backdrop {
+ .header-bar > GtkBox > .separator.vertical {
-GtkWidget-wide-separators: true;
-GtkWidget-separator-width: 1px;
border-width: 0 1px;
@@ -1569,9 +1602,10 @@ GtkComboBox {
text-shadow: 0 -1px rgba(0, 0, 0, 0.54353);
icon-shadow: 0 -1px rgba(0, 0, 0, 0.54353);
box-shadow: inset 0 1px rgba(255, 255, 255, 0.5), 0 1px #a5c8ec; }
- .titlebar.selection-mode .button.flat,
+ .titlebar.selection-mode .button.flat, .titlebar.selection-mode .sidebar-button.button,
.titlebar.selection-mode .titlebutton.button,
.header-bar.selection-mode .button.flat,
+ .header-bar.selection-mode .sidebar-button.button,
.header-bar.selection-mode .titlebutton.button {
border-color: transparent;
background-color: transparent;
@@ -1598,10 +1632,11 @@ GtkComboBox {
text-shadow: 0 -1px rgba(0, 0, 0, 0.62353);
icon-shadow: 0 -1px rgba(0, 0, 0, 0.62353);
box-shadow: inset 0 1px rgba(0, 0, 0, 0.07), inset 0 2px 1px -2px rgba(0, 0, 0, 0.6), 0 1px #a5c8ec; }
- .titlebar.selection-mode .button:backdrop, .titlebar.selection-mode .button.flat:backdrop,
+ .titlebar.selection-mode .button:backdrop, .titlebar.selection-mode .button.flat:backdrop, .titlebar.selection-mode .sidebar-button.button:backdrop,
.titlebar.selection-mode .titlebutton.button:backdrop,
.header-bar.selection-mode .button:backdrop,
.header-bar.selection-mode .button.flat:backdrop,
+ .header-bar.selection-mode .sidebar-button.button:backdrop,
.header-bar.selection-mode .titlebutton.button:backdrop {
color: #dbe9f7;
border-color: #4a90d9;
@@ -1611,24 +1646,27 @@ GtkComboBox {
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(165, 200, 236, 0);
-gtk-image-effect: none;
border-color: #184472; }
- .titlebar.selection-mode .button:backdrop:active, .titlebar.selection-mode .button:backdrop:checked, .titlebar.selection-mode .button.flat:backdrop:active,
- .titlebar.selection-mode .titlebutton.button:backdrop:active, .titlebar.selection-mode .button.flat:backdrop:checked,
+ .titlebar.selection-mode .button:backdrop:active, .titlebar.selection-mode .button:backdrop:checked, .titlebar.selection-mode .button.flat:backdrop:active, .titlebar.selection-mode .sidebar-button.button:backdrop:active,
+ .titlebar.selection-mode .titlebutton.button:backdrop:active, .titlebar.selection-mode .button.flat:backdrop:checked, .titlebar.selection-mode .sidebar-button.button:backdrop:checked,
.titlebar.selection-mode .titlebutton.button:backdrop:checked,
.header-bar.selection-mode .button:backdrop:active,
.header-bar.selection-mode .button:backdrop:checked,
.header-bar.selection-mode .button.flat:backdrop:active,
+ .header-bar.selection-mode .sidebar-button.button:backdrop:active,
.header-bar.selection-mode .titlebutton.button:backdrop:active,
.header-bar.selection-mode .button.flat:backdrop:checked,
+ .header-bar.selection-mode .sidebar-button.button:backdrop:checked,
.header-bar.selection-mode .titlebutton.button:backdrop:checked {
color: #d4e4f4;
border-color: #2a76c6;
background-image: linear-gradient(to bottom, #2a76c6);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(165, 200, 236, 0);
border-color: #184472; }
- .titlebar.selection-mode .button:backdrop:insensitive, .titlebar.selection-mode .button.flat:backdrop:insensitive,
+ .titlebar.selection-mode .button:backdrop:insensitive, .titlebar.selection-mode .button.flat:backdrop:insensitive, .titlebar.selection-mode .sidebar-button.button:backdrop:insensitive,
.titlebar.selection-mode .titlebutton.button:backdrop:insensitive,
.header-bar.selection-mode .button:backdrop:insensitive,
.header-bar.selection-mode .button.flat:backdrop:insensitive,
+ .header-bar.selection-mode .sidebar-button.button:backdrop:insensitive,
.header-bar.selection-mode .titlebutton.button:backdrop:insensitive {
color: #9bc2ea;
border-color: #65a1df;
@@ -1637,51 +1675,59 @@ GtkComboBox {
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(165, 200, 236, 0);
border-color: #184472; }
- .titlebar.selection-mode .button:backdrop:insensitive > .label, .titlebar.selection-mode .header-bar .button.titlebutton:backdrop:insensitive > .label, .titlebar.selection-mode .button.flat:backdrop:insensitive > .label, .titlebar.selection-mode .header-bar .titlebutton.button:backdrop:insensitive > .label,
+ .titlebar.selection-mode .button:backdrop:insensitive > .label, .titlebar.selection-mode .header-bar .button.titlebutton:backdrop:insensitive > .label, .titlebar.selection-mode .button.flat:backdrop:insensitive > .label, .titlebar.selection-mode .sidebar-button.button:backdrop:insensitive > .label, .titlebar.selection-mode .header-bar .titlebutton.button:backdrop:insensitive > .label,
.titlebar.selection-mode .titlebutton.button:backdrop:insensitive > .label,
.header-bar.selection-mode .button:backdrop:insensitive > .label,
.header-bar.selection-mode .titlebar .button.titlebutton:backdrop:insensitive > .label,
.header-bar.selection-mode .button.flat:backdrop:insensitive > .label,
+ .header-bar.selection-mode .sidebar-button.button:backdrop:insensitive > .label,
.header-bar.selection-mode .titlebutton.button:backdrop:insensitive > .label,
.header-bar.selection-mode .titlebar .titlebutton.button:backdrop:insensitive > .label {
color: inherit; }
- .titlebar.selection-mode .button:backdrop:insensitive:active, .titlebar.selection-mode .button:backdrop:insensitive:checked, .titlebar.selection-mode .button.flat:backdrop:insensitive:active,
- .titlebar.selection-mode .titlebutton.button:backdrop:insensitive:active, .titlebar.selection-mode .button.flat:backdrop:insensitive:checked,
+ .titlebar.selection-mode .button:backdrop:insensitive:active, .titlebar.selection-mode .button:backdrop:insensitive:checked, .titlebar.selection-mode .button.flat:backdrop:insensitive:active, .titlebar.selection-mode .sidebar-button.button:backdrop:insensitive:active,
+ .titlebar.selection-mode .titlebutton.button:backdrop:insensitive:active, .titlebar.selection-mode .button.flat:backdrop:insensitive:checked, .titlebar.selection-mode .sidebar-button.button:backdrop:insensitive:checked,
.titlebar.selection-mode .titlebutton.button:backdrop:insensitive:checked,
.header-bar.selection-mode .button:backdrop:insensitive:active,
.header-bar.selection-mode .button:backdrop:insensitive:checked,
.header-bar.selection-mode .button.flat:backdrop:insensitive:active,
+ .header-bar.selection-mode .sidebar-button.button:backdrop:insensitive:active,
.header-bar.selection-mode .titlebutton.button:backdrop:insensitive:active,
.header-bar.selection-mode .button.flat:backdrop:insensitive:checked,
+ .header-bar.selection-mode .sidebar-button.button:backdrop:insensitive:checked,
.header-bar.selection-mode .titlebutton.button:backdrop:insensitive:checked {
color: #8db9e8;
border-color: #5094db;
background-image: linear-gradient(to bottom, #5094db);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(165, 200, 236, 0);
border-color: #184472; }
- .titlebar.selection-mode .button:backdrop:insensitive:active > .label, .titlebar.selection-mode .header-bar .button.titlebutton:backdrop:insensitive:active > .label, .titlebar.selection-mode .button:backdrop:insensitive:checked > .label, .titlebar.selection-mode .header-bar .button.titlebutton:backdrop:insensitive:checked > .label, .titlebar.selection-mode .button.flat:backdrop:insensitive:active > .label, .titlebar.selection-mode .header-bar .titlebutton.button:backdrop:insensitive:active > .label,
- .titlebar.selection-mode .titlebutton.button:backdrop:insensitive:active > .label, .titlebar.selection-mode .button.flat:backdrop:insensitive:checked > .label, .titlebar.selection-mode .header-bar .titlebutton.button:backdrop:insensitive:checked > .label,
+ .titlebar.selection-mode .button:backdrop:insensitive:active > .label, .titlebar.selection-mode .header-bar .button.titlebutton:backdrop:insensitive:active > .label, .titlebar.selection-mode .button:backdrop:insensitive:checked > .label, .titlebar.selection-mode .header-bar .button.titlebutton:backdrop:insensitive:checked > .label, .titlebar.selection-mode .button.flat:backdrop:insensitive:active > .label, .titlebar.selection-mode .sidebar-button.button:backdrop:insensitive:active > .label, .titlebar.selection-mode .header-bar .titlebutton.button:backdrop:insensitive:active > .label,
+ .titlebar.selection-mode .titlebutton.button:backdrop:insensitive:active > .label, .titlebar.selection-mode .button.flat:backdrop:insensitive:checked > .label, .titlebar.selection-mode .sidebar-button.button:backdrop:insensitive:checked > .label, .titlebar.selection-mode .header-bar .titlebutton.button:backdrop:insensitive:checked > .label,
.titlebar.selection-mode .titlebutton.button:backdrop:insensitive:checked > .label,
.header-bar.selection-mode .button:backdrop:insensitive:active > .label,
.header-bar.selection-mode .titlebar .button.titlebutton:backdrop:insensitive:active > .label,
.header-bar.selection-mode .button:backdrop:insensitive:checked > .label,
.header-bar.selection-mode .titlebar .button.titlebutton:backdrop:insensitive:checked > .label,
.header-bar.selection-mode .button.flat:backdrop:insensitive:active > .label,
+ .header-bar.selection-mode .sidebar-button.button:backdrop:insensitive:active > .label,
.header-bar.selection-mode .titlebutton.button:backdrop:insensitive:active > .label,
.header-bar.selection-mode .titlebar .titlebutton.button:backdrop:insensitive:active > .label,
.header-bar.selection-mode .button.flat:backdrop:insensitive:checked > .label,
+ .header-bar.selection-mode .sidebar-button.button:backdrop:insensitive:checked > .label,
.header-bar.selection-mode .titlebutton.button:backdrop:insensitive:checked > .label,
.header-bar.selection-mode .titlebar .titlebutton.button:backdrop:insensitive:checked > .label {
color: inherit; }
- .titlebar.selection-mode .button.flat:backdrop,
- .titlebar.selection-mode .titlebutton.button:backdrop, .titlebar.selection-mode .button.flat:insensitive,
- .titlebar.selection-mode .titlebutton.button:insensitive, .titlebar.selection-mode .button.flat:insensitive:backdrop,
+ .titlebar.selection-mode .button.flat:backdrop, .titlebar.selection-mode .sidebar-button.button:backdrop,
+ .titlebar.selection-mode .titlebutton.button:backdrop, .titlebar.selection-mode .button.flat:insensitive, .titlebar.selection-mode .sidebar-button.button:insensitive,
+ .titlebar.selection-mode .titlebutton.button:insensitive, .titlebar.selection-mode .button.flat:insensitive:backdrop, .titlebar.selection-mode .sidebar-button.button:insensitive:backdrop,
.titlebar.selection-mode .titlebutton.button:insensitive:backdrop,
.header-bar.selection-mode .button.flat:backdrop,
+ .header-bar.selection-mode .sidebar-button.button:backdrop,
.header-bar.selection-mode .titlebutton.button:backdrop,
.header-bar.selection-mode .button.flat:insensitive,
+ .header-bar.selection-mode .sidebar-button.button:insensitive,
.header-bar.selection-mode .titlebutton.button:insensitive,
.header-bar.selection-mode .button.flat:insensitive:backdrop,
+ .header-bar.selection-mode .sidebar-button.button:insensitive:backdrop,
.header-bar.selection-mode .titlebutton.button:insensitive:backdrop {
border-color: transparent;
background-color: transparent;
@@ -2048,10 +2094,11 @@ column-header .titlebar .button.titlebutton,
.popover > .location-bar, .popover.osd > .toolbar, .popover.osd > .inline-toolbar, .popover.osd > .search-bar, .popover.osd > .location-bar {
border-style: none;
background-color: transparent; }
- .popover .button.flat, .popover .header-bar .titlebutton.button, .header-bar .popover .titlebutton.button,
+ .popover .button.flat, .popover .sidebar-button.button, .popover .header-bar .titlebutton.button, .header-bar .popover .titlebutton.button,
.popover .titlebar .titlebutton.button,
.titlebar .popover .titlebutton.button,
.popover .button.flat:hover,
+ .popover .sidebar-button.button:hover,
.popover .header-bar .titlebutton.button:hover,
.header-bar .popover .titlebutton.button:hover,
.popover .titlebar .titlebutton.button:hover,
@@ -2581,7 +2628,7 @@ GtkSwitch {
.check {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-unchecked.png"), url("assets/checkbox-unchecked@2.png"));
icon-shadow: 0 1px 0 white; }
- .check.button.flat, .header-bar .check.titlebutton.button,
+ .check.button.flat, .check.sidebar-button.button, .header-bar .check.titlebutton.button,
.titlebar .check.titlebutton.button {
icon-shadow: none; }
@@ -2592,7 +2639,7 @@ GtkSwitch {
.check:hover {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-unchecked-hover.png"), url("assets/checkbox-unchecked-hover@2.png"));
icon-shadow: 0 1px 0 white; }
- .check:hover.button.flat, .header-bar .check.titlebutton.button:hover,
+ .check:hover.button.flat, .check.sidebar-button.button:hover, .header-bar .check.titlebutton.button:hover,
.titlebar .check.titlebutton.button:hover {
icon-shadow: none; }
@@ -2603,7 +2650,7 @@ GtkSwitch {
.check:active {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-unchecked-active.png"), url("assets/checkbox-unchecked-active@2.png"));
icon-shadow: 0 1px 0 white; }
- .check:active.button.flat, .header-bar .check.titlebutton.button:active,
+ .check:active.button.flat, .check.sidebar-button.button:active, .header-bar .check.titlebutton.button:active,
.titlebar .check.titlebutton.button:active {
icon-shadow: none; }
@@ -2614,7 +2661,7 @@ GtkSwitch {
.check:insensitive {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-unchecked-insensitive.png"), url("assets/checkbox-unchecked-insensitive@2.png"));
icon-shadow: 0 1px 0 white; }
- .check:insensitive.button.flat, .header-bar .check.titlebutton.button:insensitive,
+ .check:insensitive.button.flat, .check.sidebar-button.button:insensitive, .header-bar .check.titlebutton.button:insensitive,
.titlebar .check.titlebutton.button:insensitive {
icon-shadow: none; }
@@ -2625,7 +2672,7 @@ GtkSwitch {
.check:backdrop {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-unchecked-backdrop.png"), url("assets/checkbox-unchecked-backdrop@2.png"));
icon-shadow: none; }
- .check:backdrop.button.flat, .header-bar .check.titlebutton.button:backdrop,
+ .check:backdrop.button.flat, .check.sidebar-button.button:backdrop, .header-bar .check.titlebutton.button:backdrop,
.titlebar .check.titlebutton.button:backdrop {
icon-shadow: none; }
@@ -2636,7 +2683,7 @@ GtkSwitch {
.check:backdrop:insensitive {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-unchecked-backdrop-insensitive.png"), url("assets/checkbox-unchecked-backdrop-insensitive@2.png"));
icon-shadow: none; }
- .check:backdrop:insensitive.button.flat, .header-bar .check.titlebutton.button:backdrop:insensitive,
+ .check:backdrop:insensitive.button.flat, .check.sidebar-button.button:backdrop:insensitive, .header-bar .check.titlebutton.button:backdrop:insensitive,
.titlebar .check.titlebutton.button:backdrop:insensitive {
icon-shadow: none; }
@@ -2647,7 +2694,7 @@ GtkSwitch {
.check:inconsistent {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-mixed.png"), url("assets/checkbox-mixed@2.png"));
icon-shadow: 0 1px 0 white; }
- .check:inconsistent.button.flat, .header-bar .check.titlebutton.button:inconsistent,
+ .check:inconsistent.button.flat, .check.sidebar-button.button:inconsistent, .header-bar .check.titlebutton.button:inconsistent,
.titlebar .check.titlebutton.button:inconsistent {
icon-shadow: none; }
@@ -2658,7 +2705,7 @@ GtkSwitch {
.check:inconsistent:hover {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-mixed-hover.png"), url("assets/checkbox-mixed-hover@2.png"));
icon-shadow: 0 1px 0 white; }
- .check:inconsistent:hover.button.flat, .header-bar .check.titlebutton.button:inconsistent:hover,
+ .check:inconsistent:hover.button.flat, .check.sidebar-button.button:inconsistent:hover, .header-bar .check.titlebutton.button:inconsistent:hover,
.titlebar .check.titlebutton.button:inconsistent:hover {
icon-shadow: none; }
@@ -2669,7 +2716,7 @@ GtkSwitch {
.check:inconsistent:selected {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-mixed-active.png"), url("assets/checkbox-mixed-active@2.png"));
icon-shadow: 0 1px 0 white; }
- .check:inconsistent:selected.button.flat, .header-bar .check.titlebutton.button:inconsistent:selected,
+ .check:inconsistent:selected.button.flat, .check.sidebar-button.button:inconsistent:selected, .header-bar .check.titlebutton.button:inconsistent:selected,
.titlebar .check.titlebutton.button:inconsistent:selected {
icon-shadow: none; }
@@ -2680,7 +2727,7 @@ GtkSwitch {
.check:inconsistent:backdrop {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-mixed-backdrop.png"), url("assets/checkbox-mixed-backdrop@2.png"));
icon-shadow: none; }
- .check:inconsistent:backdrop.button.flat, .header-bar .check.titlebutton.button:inconsistent:backdrop,
+ .check:inconsistent:backdrop.button.flat, .check.sidebar-button.button:inconsistent:backdrop, .header-bar .check.titlebutton.button:inconsistent:backdrop,
.titlebar .check.titlebutton.button:inconsistent:backdrop {
icon-shadow: none; }
@@ -2691,7 +2738,7 @@ GtkSwitch {
.check:inconsistent:insensitive {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-mixed-insensitive.png"), url("assets/checkbox-mixed-insensitive@2.png"));
icon-shadow: 0 1px 0 white; }
- .check:inconsistent:insensitive.button.flat, .header-bar .check.titlebutton.button:inconsistent:insensitive,
+ .check:inconsistent:insensitive.button.flat, .check.sidebar-button.button:inconsistent:insensitive, .header-bar .check.titlebutton.button:inconsistent:insensitive,
.titlebar .check.titlebutton.button:inconsistent:insensitive {
icon-shadow: none; }
@@ -2702,7 +2749,7 @@ GtkSwitch {
.check:inconsistent:insensitive:backdrop {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-mixed-backdrop-insensitive.png"), url("assets/checkbox-mixed-backdrop-insensitive@2.png"));
icon-shadow: none; }
- .check:inconsistent:insensitive:backdrop.button.flat, .header-bar .check.titlebutton.button:inconsistent:insensitive:backdrop,
+ .check:inconsistent:insensitive:backdrop.button.flat, .check.sidebar-button.button:inconsistent:insensitive:backdrop, .header-bar .check.titlebutton.button:inconsistent:insensitive:backdrop,
.titlebar .check.titlebutton.button:inconsistent:insensitive:backdrop {
icon-shadow: none; }
@@ -2713,7 +2760,7 @@ GtkSwitch {
.check:checked {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-checked.png"), url("assets/checkbox-checked@2.png"));
icon-shadow: 0 1px 0 white; }
- .check:checked.button.flat, .header-bar .check.titlebutton.button:checked,
+ .check:checked.button.flat, .check.sidebar-button.button:checked, .header-bar .check.titlebutton.button:checked,
.titlebar .check.titlebutton.button:checked {
icon-shadow: none; }
@@ -2724,7 +2771,7 @@ GtkSwitch {
.check:checked:insensitive {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-checked-insensitive.png"), url("assets/checkbox-checked-insensitive@2.png"));
icon-shadow: 0 1px 0 white; }
- .check:checked:insensitive.button.flat, .header-bar .check.titlebutton.button:checked:insensitive,
+ .check:checked:insensitive.button.flat, .check.sidebar-button.button:checked:insensitive, .header-bar .check.titlebutton.button:checked:insensitive,
.titlebar .check.titlebutton.button:checked:insensitive {
icon-shadow: none; }
@@ -2735,7 +2782,7 @@ GtkSwitch {
.check:checked:hover {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-checked-hover.png"), url("assets/checkbox-checked-hover@2.png"));
icon-shadow: 0 1px 0 white; }
- .check:checked:hover.button.flat, .header-bar .check.titlebutton.button:checked:hover,
+ .check:checked:hover.button.flat, .check.sidebar-button.button:checked:hover, .header-bar .check.titlebutton.button:checked:hover,
.titlebar .check.titlebutton.button:checked:hover {
icon-shadow: none; }
@@ -2746,7 +2793,7 @@ GtkSwitch {
.check:checked:active {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-checked-active.png"), url("assets/checkbox-checked-active@2.png"));
icon-shadow: 0 1px 0 white; }
- .check:checked:active.button.flat, .header-bar .check.titlebutton.button:checked:active,
+ .check:checked:active.button.flat, .check.sidebar-button.button:checked:active, .header-bar .check.titlebutton.button:checked:active,
.titlebar .check.titlebutton.button:checked:active {
icon-shadow: none; }
@@ -2757,7 +2804,7 @@ GtkSwitch {
.check:backdrop:checked {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-checked-backdrop.png"), url("assets/checkbox-checked-backdrop@2.png"));
icon-shadow: none; }
- .check:backdrop:checked.button.flat, .header-bar .check.titlebutton.button:backdrop:checked,
+ .check:backdrop:checked.button.flat, .check.sidebar-button.button:backdrop:checked, .header-bar .check.titlebutton.button:backdrop:checked,
.titlebar .check.titlebutton.button:backdrop:checked {
icon-shadow: none; }
@@ -2768,7 +2815,7 @@ GtkSwitch {
.check:backdrop:checked:insensitive {
-gtk-icon-source: -gtk-scaled(url("assets/checkbox-checked-backdrop-insensitive.png"), url("assets/checkbox-checked-backdrop-insensitive@2.png"));
icon-shadow: none; }
- .check:backdrop:checked:insensitive.button.flat, .header-bar .check.titlebutton.button:backdrop:checked:insensitive,
+ .check:backdrop:checked:insensitive.button.flat, .check.sidebar-button.button:backdrop:checked:insensitive, .header-bar .check.titlebutton.button:backdrop:checked:insensitive,
.titlebar .check.titlebutton.button:backdrop:checked:insensitive {
icon-shadow: none; }
@@ -2792,7 +2839,7 @@ GtkSwitch {
.radio {
-gtk-icon-source: -gtk-scaled(url("assets/radio-unchecked.png"), url("assets/radio-unchecked@2.png"));
icon-shadow: 0 1px 0 white; }
- .radio.button.flat, .header-bar .radio.titlebutton.button,
+ .radio.button.flat, .radio.sidebar-button.button, .header-bar .radio.titlebutton.button,
.titlebar .radio.titlebutton.button {
icon-shadow: none; }
@@ -2803,7 +2850,7 @@ GtkSwitch {
.radio:hover {
-gtk-icon-source: -gtk-scaled(url("assets/radio-unchecked-hover.png"), url("assets/radio-unchecked-hover@2.png"));
icon-shadow: 0 1px 0 white; }
- .radio:hover.button.flat, .header-bar .radio.titlebutton.button:hover,
+ .radio:hover.button.flat, .radio.sidebar-button.button:hover, .header-bar .radio.titlebutton.button:hover,
.titlebar .radio.titlebutton.button:hover {
icon-shadow: none; }
@@ -2814,7 +2861,7 @@ GtkSwitch {
.radio:active {
-gtk-icon-source: -gtk-scaled(url("assets/radio-unchecked-active.png"), url("assets/radio-unchecked-active@2.png"));
icon-shadow: 0 1px 0 white; }
- .radio:active.button.flat, .header-bar .radio.titlebutton.button:active,
+ .radio:active.button.flat, .radio.sidebar-button.button:active, .header-bar .radio.titlebutton.button:active,
.titlebar .radio.titlebutton.button:active {
icon-shadow: none; }
@@ -2825,7 +2872,7 @@ GtkSwitch {
.radio:insensitive {
-gtk-icon-source: -gtk-scaled(url("assets/radio-unchecked-insensitive.png"), url("assets/radio-unchecked-insensitive@2.png"));
icon-shadow: 0 1px 0 white; }
- .radio:insensitive.button.flat, .header-bar .radio.titlebutton.button:insensitive,
+ .radio:insensitive.button.flat, .radio.sidebar-button.button:insensitive, .header-bar .radio.titlebutton.button:insensitive,
.titlebar .radio.titlebutton.button:insensitive {
icon-shadow: none; }
@@ -2836,7 +2883,7 @@ GtkSwitch {
.radio:backdrop {
-gtk-icon-source: -gtk-scaled(url("assets/radio-unchecked-backdrop.png"), url("assets/radio-unchecked-backdrop@2.png"));
icon-shadow: none; }
- .radio:backdrop.button.flat, .header-bar .radio.titlebutton.button:backdrop,
+ .radio:backdrop.button.flat, .radio.sidebar-button.button:backdrop, .header-bar .radio.titlebutton.button:backdrop,
.titlebar .radio.titlebutton.button:backdrop {
icon-shadow: none; }
@@ -2847,7 +2894,7 @@ GtkSwitch {
.radio:backdrop:insensitive {
-gtk-icon-source: -gtk-scaled(url("assets/radio-unchecked-backdrop-insensitive.png"), url("assets/radio-unchecked-backdrop-insensitive@2.png"));
icon-shadow: none; }
- .radio:backdrop:insensitive.button.flat, .header-bar .radio.titlebutton.button:backdrop:insensitive,
+ .radio:backdrop:insensitive.button.flat, .radio.sidebar-button.button:backdrop:insensitive, .header-bar .radio.titlebutton.button:backdrop:insensitive,
.titlebar .radio.titlebutton.button:backdrop:insensitive {
icon-shadow: none; }
@@ -2858,7 +2905,7 @@ GtkSwitch {
.radio:inconsistent {
-gtk-icon-source: -gtk-scaled(url("assets/radio-mixed.png"), url("assets/radio-mixed@2.png"));
icon-shadow: 0 1px 0 white; }
- .radio:inconsistent.button.flat, .header-bar .radio.titlebutton.button:inconsistent,
+ .radio:inconsistent.button.flat, .radio.sidebar-button.button:inconsistent, .header-bar .radio.titlebutton.button:inconsistent,
.titlebar .radio.titlebutton.button:inconsistent {
icon-shadow: none; }
@@ -2869,7 +2916,7 @@ GtkSwitch {
.radio:inconsistent:hover {
-gtk-icon-source: -gtk-scaled(url("assets/radio-mixed-hover.png"), url("assets/radio-mixed-hover@2.png"));
icon-shadow: 0 1px 0 white; }
- .radio:inconsistent:hover.button.flat, .header-bar .radio.titlebutton.button:inconsistent:hover,
+ .radio:inconsistent:hover.button.flat, .radio.sidebar-button.button:inconsistent:hover, .header-bar .radio.titlebutton.button:inconsistent:hover,
.titlebar .radio.titlebutton.button:inconsistent:hover {
icon-shadow: none; }
@@ -2880,7 +2927,7 @@ GtkSwitch {
.radio:inconsistent:selected {
-gtk-icon-source: -gtk-scaled(url("assets/radio-mixed-active.png"), url("assets/radio-mixed-active@2.png"));
icon-shadow: 0 1px 0 white; }
- .radio:inconsistent:selected.button.flat, .header-bar .radio.titlebutton.button:inconsistent:selected,
+ .radio:inconsistent:selected.button.flat, .radio.sidebar-button.button:inconsistent:selected, .header-bar .radio.titlebutton.button:inconsistent:selected,
.titlebar .radio.titlebutton.button:inconsistent:selected {
icon-shadow: none; }
@@ -2891,7 +2938,7 @@ GtkSwitch {
.radio:inconsistent:backdrop {
-gtk-icon-source: -gtk-scaled(url("assets/radio-mixed-backdrop.png"), url("assets/radio-mixed-backdrop@2.png"));
icon-shadow: none; }
- .radio:inconsistent:backdrop.button.flat, .header-bar .radio.titlebutton.button:inconsistent:backdrop,
+ .radio:inconsistent:backdrop.button.flat, .radio.sidebar-button.button:inconsistent:backdrop, .header-bar .radio.titlebutton.button:inconsistent:backdrop,
.titlebar .radio.titlebutton.button:inconsistent:backdrop {
icon-shadow: none; }
@@ -2902,7 +2949,7 @@ GtkSwitch {
.radio:inconsistent:insensitive {
-gtk-icon-source: -gtk-scaled(url("assets/radio-mixed-insensitive.png"), url("assets/radio-mixed-insensitive@2.png"));
icon-shadow: 0 1px 0 white; }
- .radio:inconsistent:insensitive.button.flat, .header-bar .radio.titlebutton.button:inconsistent:insensitive,
+ .radio:inconsistent:insensitive.button.flat, .radio.sidebar-button.button:inconsistent:insensitive, .header-bar .radio.titlebutton.button:inconsistent:insensitive,
.titlebar .radio.titlebutton.button:inconsistent:insensitive {
icon-shadow: none; }
@@ -2913,7 +2960,7 @@ GtkSwitch {
.radio:inconsistent:insensitive:backdrop {
-gtk-icon-source: -gtk-scaled(url("assets/radio-mixed-backdrop-insensitive.png"), url("assets/radio-mixed-backdrop-insensitive@2.png"));
icon-shadow: none; }
- .radio:inconsistent:insensitive:backdrop.button.flat, .header-bar .radio.titlebutton.button:inconsistent:insensitive:backdrop,
+ .radio:inconsistent:insensitive:backdrop.button.flat, .radio.sidebar-button.button:inconsistent:insensitive:backdrop, .header-bar .radio.titlebutton.button:inconsistent:insensitive:backdrop,
.titlebar .radio.titlebutton.button:inconsistent:insensitive:backdrop {
icon-shadow: none; }
@@ -2924,7 +2971,7 @@ GtkSwitch {
.radio:checked {
-gtk-icon-source: -gtk-scaled(url("assets/radio-checked.png"), url("assets/radio-checked@2.png"));
icon-shadow: 0 1px 0 white; }
- .radio:checked.button.flat, .header-bar .radio.titlebutton.button:checked,
+ .radio:checked.button.flat, .radio.sidebar-button.button:checked, .header-bar .radio.titlebutton.button:checked,
.titlebar .radio.titlebutton.button:checked {
icon-shadow: none; }
@@ -2935,7 +2982,7 @@ GtkSwitch {
.radio:checked:insensitive {
-gtk-icon-source: -gtk-scaled(url("assets/radio-checked-insensitive.png"), url("assets/radio-checked-insensitive@2.png"));
icon-shadow: 0 1px 0 white; }
- .radio:checked:insensitive.button.flat, .header-bar .radio.titlebutton.button:checked:insensitive,
+ .radio:checked:insensitive.button.flat, .radio.sidebar-button.button:checked:insensitive, .header-bar .radio.titlebutton.button:checked:insensitive,
.titlebar .radio.titlebutton.button:checked:insensitive {
icon-shadow: none; }
@@ -2946,7 +2993,7 @@ GtkSwitch {
.radio:checked:hover {
-gtk-icon-source: -gtk-scaled(url("assets/radio-checked-hover.png"), url("assets/radio-checked-hover@2.png"));
icon-shadow: 0 1px 0 white; }
- .radio:checked:hover.button.flat, .header-bar .radio.titlebutton.button:checked:hover,
+ .radio:checked:hover.button.flat, .radio.sidebar-button.button:checked:hover, .header-bar .radio.titlebutton.button:checked:hover,
.titlebar .radio.titlebutton.button:checked:hover {
icon-shadow: none; }
@@ -2957,7 +3004,7 @@ GtkSwitch {
.radio:checked:active {
-gtk-icon-source: -gtk-scaled(url("assets/radio-checked-active.png"), url("assets/radio-checked-active@2.png"));
icon-shadow: 0 1px 0 white; }
- .radio:checked:active.button.flat, .header-bar .radio.titlebutton.button:checked:active,
+ .radio:checked:active.button.flat, .radio.sidebar-button.button:checked:active, .header-bar .radio.titlebutton.button:checked:active,
.titlebar .radio.titlebutton.button:checked:active {
icon-shadow: none; }
@@ -2968,7 +3015,7 @@ GtkSwitch {
.radio:backdrop:checked {
-gtk-icon-source: -gtk-scaled(url("assets/radio-checked-backdrop.png"), url("assets/radio-checked-backdrop@2.png"));
icon-shadow: none; }
- .radio:backdrop:checked.button.flat, .header-bar .radio.titlebutton.button:backdrop:checked,
+ .radio:backdrop:checked.button.flat, .radio.sidebar-button.button:backdrop:checked, .header-bar .radio.titlebutton.button:backdrop:checked,
.titlebar .radio.titlebutton.button:backdrop:checked {
icon-shadow: none; }
@@ -2979,7 +3026,7 @@ GtkSwitch {
.radio:backdrop:checked:insensitive {
-gtk-icon-source: -gtk-scaled(url("assets/radio-checked-backdrop-insensitive.png"), url("assets/radio-checked-backdrop-insensitive@2.png"));
icon-shadow: none; }
- .radio:backdrop:checked:insensitive.button.flat, .header-bar .radio.titlebutton.button:backdrop:checked:insensitive,
+ .radio:backdrop:checked:insensitive.button.flat, .radio.sidebar-button.button:backdrop:checked:insensitive, .header-bar .radio.titlebutton.button:backdrop:checked:insensitive,
.titlebar .radio.titlebutton.button:backdrop:checked:insensitive {
icon-shadow: none; }
@@ -3626,10 +3673,9 @@ GtkProgressBar {
GtkScrolledWindow GtkViewport.frame {
border-style: none; }
-.separator, GtkPlacesSidebar.sidebar .view .separator,
-GtkPlacesSidebar.sidebar .view .separator:backdrop {
+.separator {
color: rgba(0, 0, 0, 0.1); }
- GtkFileChooserButton .separator.vertical, GtkFileChooserButton GtkPlacesSidebar.sidebar .view .vertical.separator, GtkPlacesSidebar.sidebar .view GtkFileChooserButton .vertical.separator, GtkFontButton .separator.vertical, GtkFontButton GtkPlacesSidebar.sidebar .view .vertical.separator, GtkPlacesSidebar.sidebar .view GtkFontButton .vertical.separator {
+ GtkFileChooserButton .separator.vertical, GtkFontButton .separator.vertical {
-GtkWidget-wide-separators: true; }
/*********
@@ -3683,7 +3729,7 @@ GtkPlacesSidebar.sidebar .view .separator:backdrop {
icon-shadow: 0 1px rgba(255, 255, 255, 0.76923);
box-shadow: inset 0 1px white;
border-color: #184472; }
- .list-row:selected .button.flat, .list-row:selected .header-bar .titlebutton.button, .header-bar .list-row:selected .titlebutton.button,
+ .list-row:selected .button.flat, .list-row:selected .sidebar-button.button, .list-row:selected .header-bar .titlebutton.button, .header-bar .list-row:selected .titlebutton.button,
.list-row:selected .titlebar .titlebutton.button,
.titlebar .list-row:selected .titlebutton.button {
border-color: transparent;
@@ -3711,7 +3757,7 @@ GtkPlacesSidebar.sidebar .view .separator:backdrop {
icon-shadow: 0 1px rgba(255, 255, 255, 0.76923);
box-shadow: inset 0 1px rgba(0, 0, 0, 0.07), inset 0 2px 1px -2px rgba(0, 0, 0, 0.6);
border-color: #184472; }
- .list-row:selected .button:backdrop, .list-row:selected .button.flat:backdrop, .list-row:selected .header-bar .titlebutton.button:backdrop, .header-bar .list-row:selected .titlebutton.button:backdrop,
+ .list-row:selected .button:backdrop, .list-row:selected .button.flat:backdrop, .list-row:selected .sidebar-button.button:backdrop, .list-row:selected .header-bar .titlebutton.button:backdrop, .header-bar .list-row:selected .titlebutton.button:backdrop,
.list-row:selected .titlebar .titlebutton.button:backdrop,
.titlebar .list-row:selected .titlebutton.button:backdrop {
color: #8e9192;
@@ -3721,9 +3767,9 @@ GtkPlacesSidebar.sidebar .view .separator:backdrop {
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0);
border-color: #184472; }
- .list-row:selected .button:backdrop:active, .list-row:selected .button:backdrop:checked, .list-row:selected .button.flat:backdrop:active, .list-row:selected .header-bar .titlebutton.button:backdrop:active, .header-bar .list-row:selected .titlebutton.button:backdrop:active,
+ .list-row:selected .button:backdrop:active, .list-row:selected .button:backdrop:checked, .list-row:selected .button.flat:backdrop:active, .list-row:selected .sidebar-button.button:backdrop:active, .list-row:selected .header-bar .titlebutton.button:backdrop:active, .header-bar .list-row:selected .titlebutton.button:backdrop:active,
.list-row:selected .titlebar .titlebutton.button:backdrop:active,
- .titlebar .list-row:selected .titlebutton.button:backdrop:active, .list-row:selected .button.flat:backdrop:checked, .list-row:selected .header-bar .titlebutton.button:backdrop:checked, .header-bar .list-row:selected .titlebutton.button:backdrop:checked,
+ .titlebar .list-row:selected .titlebutton.button:backdrop:active, .list-row:selected .button.flat:backdrop:checked, .list-row:selected .sidebar-button.button:backdrop:checked, .list-row:selected .header-bar .titlebutton.button:backdrop:checked, .header-bar .list-row:selected .titlebutton.button:backdrop:checked,
.list-row:selected .titlebar .titlebutton.button:backdrop:checked,
.titlebar .list-row:selected .titlebutton.button:backdrop:checked {
color: #8e9192;
@@ -3731,7 +3777,7 @@ GtkPlacesSidebar.sidebar .view .separator:backdrop {
background-image: linear-gradient(to bottom, #d5d5d5);
box-shadow: inset 0 1px rgba(255, 255, 255, 0);
border-color: #184472; }
- .list-row:selected .button:backdrop:insensitive, .list-row:selected .button.flat:backdrop:insensitive, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive,
+ .list-row:selected .button:backdrop:insensitive, .list-row:selected .button.flat:backdrop:insensitive, .list-row:selected .sidebar-button.button:backdrop:insensitive, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive,
.list-row:selected .titlebar .titlebutton.button:backdrop:insensitive,
.titlebar .list-row:selected .titlebutton.button:backdrop:insensitive {
color: #c7c7c7;
@@ -3742,13 +3788,13 @@ GtkPlacesSidebar.sidebar .view .separator:backdrop {
box-shadow: inset 0 1px rgba(255, 255, 255, 0);
border-color: #184472; }
.list-row:selected .button:backdrop:insensitive > .label, .list-row:selected .header-bar .button.titlebutton:backdrop:insensitive > .label,
- .list-row:selected .titlebar .button.titlebutton:backdrop:insensitive > .label, .list-row:selected .button.flat:backdrop:insensitive > .label, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive > .label, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive > .label,
+ .list-row:selected .titlebar .button.titlebutton:backdrop:insensitive > .label, .list-row:selected .button.flat:backdrop:insensitive > .label, .list-row:selected .sidebar-button.button:backdrop:insensitive > .label, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive > .label, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive > .label,
.list-row:selected .titlebar .titlebutton.button:backdrop:insensitive > .label,
.titlebar .list-row:selected .titlebutton.button:backdrop:insensitive > .label {
color: inherit; }
- .list-row:selected .button:backdrop:insensitive:active, .list-row:selected .button:backdrop:insensitive:checked, .list-row:selected .button.flat:backdrop:insensitive:active, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive:active, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive:active,
+ .list-row:selected .button:backdrop:insensitive:active, .list-row:selected .button:backdrop:insensitive:checked, .list-row:selected .button.flat:backdrop:insensitive:active, .list-row:selected .sidebar-button.button:backdrop:insensitive:active, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive:active, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive:active,
.list-row:selected .titlebar .titlebutton.button:backdrop:insensitive:active,
- .titlebar .list-row:selected .titlebutton.button:backdrop:insensitive:active, .list-row:selected .button.flat:backdrop:insensitive:checked, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive:checked, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive:checked,
+ .titlebar .list-row:selected .titlebutton.button:backdrop:insensitive:active, .list-row:selected .button.flat:backdrop:insensitive:checked, .list-row:selected .sidebar-button.button:backdrop:insensitive:checked, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive:checked, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive:checked,
.list-row:selected .titlebar .titlebutton.button:backdrop:insensitive:checked,
.titlebar .list-row:selected .titlebutton.button:backdrop:insensitive:checked {
color: #c7c7c7;
@@ -3758,13 +3804,13 @@ GtkPlacesSidebar.sidebar .view .separator:backdrop {
border-color: #184472; }
.list-row:selected .button:backdrop:insensitive:active > .label, .list-row:selected .header-bar .button.titlebutton:backdrop:insensitive:active > .label,
.list-row:selected .titlebar .button.titlebutton:backdrop:insensitive:active > .label, .list-row:selected .button:backdrop:insensitive:checked > .label, .list-row:selected .header-bar .button.titlebutton:backdrop:insensitive:checked > .label,
- .list-row:selected .titlebar .button.titlebutton:backdrop:insensitive:checked > .label, .list-row:selected .button.flat:backdrop:insensitive:active > .label, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive:active > .label, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive:active > .label,
+ .list-row:selected .titlebar .button.titlebutton:backdrop:insensitive:checked > .label, .list-row:selected .button.flat:backdrop:insensitive:active > .label, .list-row:selected .sidebar-button.button:backdrop:insensitive:active > .label, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive:active > .label, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive:active > .label,
.list-row:selected .titlebar .titlebutton.button:backdrop:insensitive:active > .label,
- .titlebar .list-row:selected .titlebutton.button:backdrop:insensitive:active > .label, .list-row:selected .button.flat:backdrop:insensitive:checked > .label, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive:checked > .label, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive:checked > .label,
+ .titlebar .list-row:selected .titlebutton.button:backdrop:insensitive:active > .label, .list-row:selected .button.flat:backdrop:insensitive:checked > .label, .list-row:selected .sidebar-button.button:backdrop:insensitive:checked > .label, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive:checked > .label, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive:checked > .label,
.list-row:selected .titlebar .titlebutton.button:backdrop:insensitive:checked > .label,
.titlebar .list-row:selected .titlebutton.button:backdrop:insensitive:checked > .label {
color: inherit; }
- .list-row:selected .button.flat:backdrop, .list-row:selected .header-bar .titlebutton.button:backdrop, .header-bar .list-row:selected .titlebutton.button:backdrop,
+ .list-row:selected .button.flat:backdrop, .list-row:selected .sidebar-button.button:backdrop, .list-row:selected .header-bar .titlebutton.button:backdrop, .header-bar .list-row:selected .titlebutton.button:backdrop,
.list-row:selected .titlebar .titlebutton.button:backdrop,
.titlebar .list-row:selected .titlebutton.button:backdrop {
border-color: transparent;
@@ -3828,10 +3874,11 @@ GtkPlacesSidebar.sidebar .view .separator:backdrop {
text-shadow: 0 1px black;
icon-shadow: 0 1px black;
outline-color: rgba(238, 238, 236, 0.3); }
- .app-notification .button.flat, .app-notification .header-bar .titlebutton.button, .header-bar .app-notification .titlebutton.button,
+ .app-notification .button.flat, .app-notification .sidebar-button.button, .app-notification .header-bar .titlebutton.button, .header-bar .app-notification .titlebutton.button,
.app-notification .titlebar .titlebutton.button,
.titlebar .app-notification .titlebutton.button,
.app-notification.frame .button.flat,
+ .app-notification.frame .sidebar-button.button,
.app-notification.frame .header-bar .titlebutton.button,
.header-bar .app-notification.frame .titlebutton.button,
.app-notification.frame .titlebar .titlebutton.button,
@@ -4119,31 +4166,44 @@ GtkFileChooserDialog .dialog-action-box {
***********/
.sidebar {
border: none;
- background-color: #fafafa; }
+ background-color: #f6f6f6; }
.sidebar:backdrop {
- background-color: #fafafa; }
-
-GtkPlacesSidebar.sidebar .view {
- color: #2e3436;
- background-color: transparent; }
- GtkPlacesSidebar.sidebar .view .image {
- color: #6b6f71; }
- GtkPlacesSidebar.sidebar .view .image:selected {
- color: #edf4fb; }
- GtkPlacesSidebar.sidebar .view .image:selected:backdrop {
- color: #edf4fb; }
- GtkPlacesSidebar.sidebar .view .image:insensitive {
- color: #aeb1b1; }
- GtkPlacesSidebar.sidebar .view .image:backdrop {
- color: #aeb1b1; }
- GtkPlacesSidebar.sidebar .view .image:backdrop:insensitive {
- color: #d6d6d6; }
- GtkPlacesSidebar.sidebar .view:insensitive {
- color: #8e9192; }
- GtkPlacesSidebar.sidebar .view:backdrop {
- color: #8e9192; }
- GtkPlacesSidebar.sidebar .view:backdrop:insensitive {
- color: #c7c7c7; }
+ background-color: #f2f2f2; }
+
+.list-row {
+ padding: 0px; }
+GtkSidebarRow .sidebar-revealer {
+ padding: 4px 14px 4px 12px; }
+GtkSidebarRow .sidebar-icon {
+ padding-right: 8px;
+ opacity: 0.7; }
+GtkSidebarRow .sidebar-label {
+ padding-right: 2px; }
+
+GtkPlacesSidebar.sidebar .sidebar-placeholder-row {
+ border: solid 1px #4a90d9; }
+GtkPlacesSidebar.sidebar .sidebar-new-bookmark-row {
+ background-color: #d9d9d9; }
+.list-row.button:hover {
+ background-color: #dadbdb; }
+.sidebar-button.button, .header-bar .sidebar-button.button.titlebutton,
+.titlebar .sidebar-button.button.titlebutton {
+ border-radius: 100%;
+ outline-radius: 100%;
+ /* &:hover:not(:active):not(:backdrop) {
+ background-image: none;
+ background-color: gtkalpha(currentColor, 0.1);
+ border-color: transparentize($borders_color, 1);
+ box-shadow: inset 0 0 transparentize(white, 1);
+ icon-shadow: none;
+ } */ }
+ .sidebar-button.button.image-button, .header-bar .sidebar-button.titlebutton.button,
+ .titlebar .sidebar-button.titlebutton.button {
+ padding: 5px; }
+ .sidebar-button.button:not(:hover):not(:active) > GtkImage, .header-bar .sidebar-button.button.titlebutton:not(:hover):not(:active) > GtkImage,
+ .titlebar .sidebar-button.button.titlebutton:not(:hover):not(:active) > GtkImage, .sidebar-button.button:backdrop > GtkImage, .header-bar .sidebar-button.button.titlebutton:backdrop > GtkImage,
+ .titlebar .sidebar-button.button.titlebutton:backdrop > GtkImage {
+ opacity: 0.7; }
.sidebar-item {
padding: 10px 4px; }
@@ -4500,13 +4560,13 @@ GtkVolumeButton.button, .header-bar GtkVolumeButton.button.titlebutton,
.titlebar.selection-mode .titlebutton.button:backdrop {
icon-shadow: none; }
-.view:selected, GtkCalendar:selected, .label:selected, .label:selected:focus, .label:selected:hover, .grid-child:selected, .entry:selected, .entry:selected:focus, .menuitem.button.flat:selected, .header-bar .menuitem.titlebutton.button:selected,
-.titlebar .menuitem.titlebutton.button:selected, .list-row:selected, .sidebar:selected, GtkPlacesSidebar.sidebar .view:selected, GtkPlacesSidebar.sidebar GtkCalendar:selected {
+.view:selected, GtkCalendar:selected, .label:selected, .label:selected:focus, .label:selected:hover, .grid-child:selected, .entry:selected, .entry:selected:focus, .menuitem.button.flat:selected, .menuitem.sidebar-button.button:selected, .header-bar .menuitem.titlebutton.button:selected,
+.titlebar .menuitem.titlebutton.button:selected, .list-row:selected, .sidebar:selected {
background-color: #4a90d9;
color: #ffffff;
outline-color: rgba(255, 255, 255, 0.3); }
- .view:backdrop:selected, GtkCalendar:backdrop:selected, .label:backdrop:selected, .grid-child:backdrop:selected, .entry:backdrop:selected, .menuitem.button.flat:backdrop:selected, .header-bar .menuitem.titlebutton.button:backdrop:selected,
- .titlebar .menuitem.titlebutton.button:backdrop:selected, .list-row:backdrop:selected, .sidebar:backdrop:selected, GtkPlacesSidebar.sidebar .view:backdrop:selected, GtkPlacesSidebar.sidebar GtkCalendar:backdrop:selected {
+ .view:backdrop:selected, GtkCalendar:backdrop:selected, .label:backdrop:selected, .grid-child:backdrop:selected, .entry:backdrop:selected, .menuitem.button.flat:backdrop:selected, .menuitem.sidebar-button.button:backdrop:selected, .header-bar .menuitem.titlebutton.button:backdrop:selected,
+ .titlebar .menuitem.titlebutton.button:backdrop:selected, .list-row:backdrop:selected, .sidebar:backdrop:selected {
color: #ffffff; }
/* Decouple the font of context menus from their entry/textview */
diff --git a/gtk/ui/gtksidebarrow.ui b/gtk/ui/gtksidebarrow.ui
new file mode 100644
index 0000000000..ca497673f3
--- /dev/null
+++ b/gtk/ui/gtksidebarrow.ui
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <template class="GtkSidebarRow" parent="GtkListBoxRow">
+ <property name="visible">True</property>
+ <property name="margin-top">1</property>
+ <property name="margin-bottom">1</property>
+ <child>
+ <object class="GtkRevealer" id="revealer">
+ <property name="visible">True</property>
+ <property name="reveal-child">True</property>
+ <signal name="notify::child-revealed" handler="on_child_revealed"/>
+ <style>
+ <class name="sidebar-revealer"/>
+ </style>
+ <child>
+ <object class="GtkEventBox" id="event_box">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkGrid">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkImage" id="icon_widget">
+ <property name="visible">True</property>
+ <style>
+ <class name="sidebar-icon"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_widget">
+ <property name="visible">True</property>
+ <style>
+ <class name="sidebar-label"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="eject_button">
+ <property name="visible">True</property>
+ <property name="hexpand">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <property name="margin-start">4px</property>
+ <property name="no-show-all">True</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="icon_name">media-eject-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ </child>
+ <style>
+ <class name="image-button"/>
+ <class name="sidebar-button"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </template>
+ <!-- We need it to not make the row smaller when the eject button is hidden -->
+ <object class="GtkSizeGroup">
+ <property name="mode">GTK_SIZE_GROUP_VERTICAL</property>
+ <widgets>
+ <widget name="eject_button"/>
+ <widget name="label_widget"/>
+ <widget name="icon_widget"/>
+ </widgets>
+ </object>
+</interface>