[gedit] open-document-selector: mores fixes
- From: Sebastien Lafargue <slafargue src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gedit] open-document-selector: mores fixes
- Date: Thu, 24 Jul 2014 16:47:22 +0000 (UTC)
commit 71f28c8cd70d330028a8494ad1ce39e5e2e81750
Author: Sebastien Lafargue <slafargue gnome org>
Date: Tue Jul 22 22:02:10 2014 +0200
open-document-selector: mores fixes
Adding some css to make it look better.
Calculate listbox height in term of row height with a limit
of ten visible rows ( if more, we have scrollbars )
gedit/gedit-open-document-selector.c | 84 ++++++++++++++++++++++++--------
gedit/gedit-open-document-selector.ui | 2 +-
gedit/gedit.adwaita.css | 8 ++--
3 files changed, 68 insertions(+), 26 deletions(-)
---
diff --git a/gedit/gedit-open-document-selector.c b/gedit/gedit-open-document-selector.c
index 5cd00d5..6990d85 100644
--- a/gedit/gedit-open-document-selector.c
+++ b/gedit/gedit-open-document-selector.c
@@ -47,6 +47,8 @@ struct _GeditOpenDocumentSelectorPrivate
guint populate_listbox_id;
gulong recent_manager_changed_id;
+ gint row_height;
+
guint show_private : 1;
guint show_not_found : 1;
guint local_only : 1;
@@ -59,38 +61,32 @@ enum
LAST_SIGNAL
};
+#define OPEN_DOCUMENT_SELECTOR_ROW_BOX_SPACING 4
#define OPEN_DOCUMENT_SELECTOR_WIDTH 400
-#define OPEN_DOCUMENT_SELECTOR_LISTBOX_HEIGHT 300
+#define OPEN_DOCUMENT_SELECTOR_MAX_VISIBLE_ROWS 10
static guint signals[LAST_SIGNAL] = { 0 };
G_DEFINE_TYPE_WITH_PRIVATE (GeditOpenDocumentSelector, gedit_open_document_selector, GTK_TYPE_BOX)
+
static GtkWidget *
-create_row (GeditOpenDocumentSelector *open_document_selector,
- GtkRecentInfo *info)
+create_row_layout (GeditOpenDocumentSelector *open_document_selector,
+ const gchar *name,
+ const gchar *path)
{
GtkWidget *row;
GtkWidget *vbox;
- gchar *name;
GtkWidget *name_label;
- gchar *path;
GtkWidget *path_label;
- gchar *uri;
GtkStyleContext *context;
- GFile *location;
row = gtk_list_box_row_new ();
- gtk_widget_set_has_tooltip (row, TRUE);
- uri = g_strdup (gtk_recent_info_get_uri (info));
- location = g_file_new_for_uri (uri);
+ context = gtk_widget_get_style_context (GTK_WIDGET (row));
+ gtk_style_context_add_class (context, "open-document-selector-listbox-row");
- g_object_set_data (G_OBJECT(row), "uri", uri);
-
- name = gedit_utils_basename_for_display (location);
name_label = gtk_label_new (name);
- g_free (name);
context = gtk_widget_get_style_context (GTK_WIDGET (name_label));
gtk_style_context_add_class (context, "name-label");
@@ -99,12 +95,8 @@ create_row (GeditOpenDocumentSelector *open_document_selector,
gtk_widget_set_halign (name_label, GTK_ALIGN_START);
gtk_widget_set_valign (name_label, GTK_ALIGN_CENTER);
- path = gedit_utils_location_get_dirname_for_display (location);
path_label = gtk_label_new (path);
- g_free (path);
- g_object_unref (location);
-
context = gtk_widget_get_style_context (GTK_WIDGET (path_label));
gtk_style_context_add_class (context, "path-label");
@@ -112,7 +104,7 @@ create_row (GeditOpenDocumentSelector *open_document_selector,
gtk_widget_set_halign (path_label, GTK_ALIGN_START);
gtk_widget_set_valign (path_label, GTK_ALIGN_CENTER);
- vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 4);
+ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, OPEN_DOCUMENT_SELECTOR_ROW_BOX_SPACING);
gtk_container_add (GTK_CONTAINER (row), vbox);
gtk_box_pack_start (GTK_BOX (vbox), name_label, FALSE, FALSE, 0);
@@ -123,6 +115,48 @@ create_row (GeditOpenDocumentSelector *open_document_selector,
return row;
}
+static gint
+calculate_row_height (GeditOpenDocumentSelector *open_document_selector)
+{
+ GtkWidget *row;
+ gint minimum_height;
+ gint natural_height;
+
+ /* Creating a fake row to mesure its height */
+ row = create_row_layout (open_document_selector, "Fake name", "Fake Path");
+
+ gtk_widget_get_preferred_height (row, &minimum_height, &natural_height);
+ gtk_widget_destroy (row);
+
+ return natural_height;
+}
+
+static GtkWidget *
+create_row (GeditOpenDocumentSelector *open_document_selector,
+ GtkRecentInfo *info)
+{
+ GtkWidget *row;
+ gchar *name;
+ gchar *path;
+ gchar *uri;
+ GFile *location;
+
+ uri = g_strdup (gtk_recent_info_get_uri (info));
+ location = g_file_new_for_uri (uri);
+
+ name = gedit_utils_basename_for_display (location);
+ path = gedit_utils_location_get_dirname_for_display (location);
+
+ row = create_row_layout (open_document_selector, (const gchar*)name, (const gchar*)path);
+
+ g_object_set_data (G_OBJECT(row), "uri", uri);
+ g_free (name);
+ g_free (path);
+ g_object_unref (location);
+
+ return row;
+}
+
static void
dispose_row (GeditOpenDocumentSelector *open_document_selector,
GtkWidget *row)
@@ -509,6 +543,9 @@ gedit_open_document_selector_init (GeditOpenDocumentSelector *open_document_sele
GeditOpenDocumentSelectorPrivate *priv;
GtkWidget *placeholder_label;
GtkStyleContext *context;
+ gint row_height;
+ gint limit_capped;
+ gint listbox_height;
gedit_debug (DEBUG_WINDOW);
@@ -563,9 +600,14 @@ gedit_open_document_selector_init (GeditOpenDocumentSelector *open_document_sele
gtk_widget_show (placeholder_label);
gtk_list_box_set_placeholder (GTK_LIST_BOX (priv->listbox), placeholder_label);
- gtk_scrolled_window_set_min_content_height (GTK_SCROLLED_WINDOW (priv->scrolled_window),
- OPEN_DOCUMENT_SELECTOR_LISTBOX_HEIGHT);
+ row_height = calculate_row_height (open_document_selector);
+
+ limit_capped = MIN (priv->limit, OPEN_DOCUMENT_SELECTOR_MAX_VISIBLE_ROWS);
+ listbox_height = row_height * limit_capped;
+ /* We substract 2px, no idea where they come from */
+ gtk_scrolled_window_set_min_content_height (GTK_SCROLLED_WINDOW (priv->scrolled_window),
+ listbox_height - 2);
context = gtk_widget_get_style_context (GTK_WIDGET (priv->listbox));
gtk_style_context_add_class (context, "gedit-open-document-selector-listbox");
diff --git a/gedit/gedit-open-document-selector.ui b/gedit/gedit-open-document-selector.ui
index 701bbf7..025e500 100644
--- a/gedit/gedit-open-document-selector.ui
+++ b/gedit/gedit-open-document-selector.ui
@@ -4,7 +4,7 @@
<template class="GeditOpenDocumentSelector" parent="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="border_width">3</property>
+ <property name="border_width">9</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
diff --git a/gedit/gedit.adwaita.css b/gedit/gedit.adwaita.css
index 9d70836..5352e24 100644
--- a/gedit/gedit.adwaita.css
+++ b/gedit/gedit.adwaita.css
@@ -10,16 +10,16 @@ GeditWindow .pane-separator:hover {
color: @borders;
}
-.gedit-open-document-selector-listbox .list-row {
+.open-document-selector-listbox-row {
border-bottom: 1px solid shade(@theme_bg_color, 0.95);
- padding: 6px;
+ padding: 6px 6px 6px 12px;
}
-.gedit-open-document-selector-listbox .name-label {
+.open-document-selector-listbox-row .name-label {
color: @theme_fg_color;
}
-.gedit-open-document-selector-listbox .path-label {
+.open-document-selector-listbox-row .path-label {
font-size: 80%;
color: @insensitive_fg_color;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]