~ubuntu-desktop/file-roller/ubuntu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
From c5ea020f84ac495f335b19f960dcbd8f2305d493 Mon Sep 17 00:00:00 2001
From: Robert Ancell <robert.ancell@canonical.com>
Date: Mon, 20 Oct 2014 16:02:31 -0400
Subject: [PATCH] Don't use GtkHeaderBar in Unity

When running in Unity, File Roller looks out of place due to the use of the
GtkHeaderBar. If we place the GtkHeaderBar where a traditional toolbar would
be and use the window manager decorations it fits in better.

https://bugzilla.gnome.org/show_bug.cgi?id=739596
---
 src/Makefile.am               |  2 ++
 src/desktop.c                 | 24 ++++++++++++++++++++++++
 src/desktop.h                 |  8 ++++++++
 src/dlg-add.c                 |  7 +++++--
 src/fr-file-selector-dialog.c |  3 ++-
 src/fr-new-archive-dialog.c   |  3 ++-
 src/fr-window.c               | 15 +++++++++++----
 7 files changed, 54 insertions(+), 8 deletions(-)
 create mode 100644 src/desktop.c
 create mode 100644 src/desktop.h

Index: file-roller-3.20.2/src/Makefile.am
===================================================================
--- file-roller-3.20.2.orig/src/Makefile.am
+++ file-roller-3.20.2/src/Makefile.am
@@ -154,6 +154,8 @@ COMMON_SOURCES = 			\
 	preferences.h			\
 	rar-utils.c			\
 	rar-utils.h			\
+	desktop.c			\
+	desktop.h			\
 	typedefs.h			\
 	$(MKDTEMP_FILES)		\
 	$(BUILT_SOURCES)
Index: file-roller-3.20.2/src/desktop.c
===================================================================
--- /dev/null
+++ file-roller-3.20.2/src/desktop.c
@@ -0,0 +1,26 @@
+#include <string.h>
+#include <glib.h>
+#include "desktop.h"
+
+gboolean
+in_desktop (const gchar *name)
+{
+    const gchar *desktop_name_list;
+    gchar **names;
+    gboolean in_list = FALSE;
+    gint i;
+
+    desktop_name_list = g_getenv ("XDG_CURRENT_DESKTOP");
+    if (!desktop_name_list)
+        return FALSE;
+
+    names = g_strsplit (desktop_name_list, ":", -1);
+    for (i = 0; names[i] && !in_list; i++)
+        if (strcmp (names[i], name) == 0) {
+            in_list = TRUE;
+            break;
+        }
+    g_strfreev (names);
+
+    return in_list;
+}
Index: file-roller-3.20.2/src/desktop.h
===================================================================
--- /dev/null
+++ file-roller-3.20.2/src/desktop.h
@@ -0,0 +1,8 @@
+#ifndef _DESKTOP_H
+#define _DESKTOP_H
+
+#include <glib.h>
+
+gboolean in_desktop (const gchar *name);
+
+#endif /* _DESKTOP_H */
Index: file-roller-3.20.2/src/fr-window.c
===================================================================
--- file-roller-3.20.2.orig/src/fr-window.c
+++ file-roller-3.20.2/src/fr-window.c
@@ -56,6 +56,7 @@
 #include "gtk-utils.h"
 #include "open-file.h"
 #include "typedefs.h"
+#include "desktop.h"
 
 #define LAST_OUTPUT_SCHEMA_NAME "LastOutput"
 #define MAX_HISTORY_LEN 5
@@ -1959,7 +1960,8 @@ fr_window_set_title (FrWindow   *window,
 		     const char *title)
 {
 	gtk_window_set_title (GTK_WINDOW (window), title);
-	gtk_header_bar_set_title (GTK_HEADER_BAR (window->priv->headerbar), title);
+	if (in_desktop ("GNOME"))
+		gtk_header_bar_set_title (GTK_HEADER_BAR (window->priv->headerbar), title);
 }
 
 
@@ -5755,8 +5757,13 @@ fr_window_construct (FrWindow *window)
 
 	window->priv->headerbar = gtk_header_bar_new ();
 	gtk_widget_show (window->priv->headerbar);
-	gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (window->priv->headerbar), TRUE);
-	gtk_window_set_titlebar (GTK_WINDOW (window), window->priv->headerbar);
+	if (in_desktop ("GNOME")) {
+		gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (window->priv->headerbar), TRUE);
+		gtk_window_set_titlebar (GTK_WINDOW (window), window->priv->headerbar);
+	}
+	else {
+		fr_window_attach (FR_WINDOW (window), window->priv->headerbar, FR_WINDOW_AREA_MENUBAR);
+	}
 
 	/* header bar buttons */
 
Index: file-roller-3.20.2/src/fr-location-bar.c
===================================================================
--- file-roller-3.20.2.orig/src/fr-location-bar.c
+++ file-roller-3.20.2/src/fr-location-bar.c
@@ -91,14 +91,18 @@ fr_location_bar_init (FrLocationBar *sel
 
 	style_context = gtk_widget_get_style_context (GTK_WIDGET (self));
 	gtk_style_context_add_class (style_context, GTK_STYLE_CLASS_TOOLBAR);
-	gtk_style_context_add_class (style_context, GTK_STYLE_CLASS_PRIMARY_TOOLBAR);
 	gtk_style_context_add_class (style_context, "location-bar");
 
-	css_provider = gtk_css_provider_new ();
-	gtk_css_provider_load_from_data (css_provider, css, -1, NULL);
-	gtk_style_context_add_provider_for_screen (gdk_screen_get_default (),
-						   GTK_STYLE_PROVIDER (css_provider),
-						   GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+	if (in_desktop("GNOME")) {
+		gtk_style_context_add_class (style_context,
+			GTK_STYLE_CLASS_PRIMARY_TOOLBAR);
+
+		css_provider = gtk_css_provider_new ();
+		gtk_css_provider_load_from_data (css_provider, css, -1, NULL);
+		gtk_style_context_add_provider_for_screen (gdk_screen_get_default (),
+							   GTK_STYLE_PROVIDER (css_provider),
+							   GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+	}
 }