summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Sturmlechner <asturm@gentoo.org>2017-06-24 15:58:44 +0200
committerAndreas Sturmlechner <asturm@gentoo.org>2017-06-24 16:15:29 +0200
commitcb8343823acdb727ff27c341d39d4ca5c369f736 (patch)
tree9e7db79338448a19156b8444a8879ecccc3e5f8f /x11-themes
parentprofiles: mask sys-apps/systemd-sysv-utils for removal (diff)
downloadgentoo-cb8343823acdb727ff27c341d39d4ca5c369f736.tar.gz
gentoo-cb8343823acdb727ff27c341d39d4ca5c369f736.tar.bz2
gentoo-cb8343823acdb727ff27c341d39d4ca5c369f736.zip
x11-themes/oxygen-gtk: EAPI 6, multilib, fix tabstyle, gtk-3.14 spinner
Fix HOMEPAGE. Reported-by: Yichao Zhou <broken.zhou@gmail.com> Thanks-to: Alexey Kharlamov <derlafff@ya.ru> Gentoo-bug: 562274, 563802 Package-Manager: Portage-2.3.6, Repoman-2.3.1
Diffstat (limited to 'x11-themes')
-rw-r--r--x11-themes/oxygen-gtk/files/oxygen-gtk-1.4.1-gtk-3.14.patch151
-rw-r--r--x11-themes/oxygen-gtk/files/oxygen-gtk-1.4.6-demo-optional.patch35
-rw-r--r--x11-themes/oxygen-gtk/files/oxygen-gtk-1.4.6-eclipse.patch228
-rw-r--r--x11-themes/oxygen-gtk/files/oxygen-gtk-1.4.6-qtpaths.patch19
-rw-r--r--x11-themes/oxygen-gtk/files/oxygen-gtk-1.4.6-tabstyle.patch16
-rw-r--r--x11-themes/oxygen-gtk/files/oxygen-gtk-1.4.6-warning.patch24
-rw-r--r--x11-themes/oxygen-gtk/files/oxygen-gtk-1.4.6-xul.patch113
-rw-r--r--x11-themes/oxygen-gtk/oxygen-gtk-1.4.1-r1.ebuild66
-rw-r--r--x11-themes/oxygen-gtk/oxygen-gtk-1.4.6-r1.ebuild69
9 files changed, 721 insertions, 0 deletions
diff --git a/x11-themes/oxygen-gtk/files/oxygen-gtk-1.4.1-gtk-3.14.patch b/x11-themes/oxygen-gtk/files/oxygen-gtk-1.4.1-gtk-3.14.patch
new file mode 100644
index 000000000000..3f6d323a94c3
--- /dev/null
+++ b/x11-themes/oxygen-gtk/files/oxygen-gtk-1.4.1-gtk-3.14.patch
@@ -0,0 +1,151 @@
+From 75d1884df6740c268b665935af909a9a1e1ef6be Mon Sep 17 00:00:00 2001
+From: Hugo Pereira Da Costa <hugo.pereira@free.fr>
+Date: Fri, 14 Nov 2014 18:37:33 +0100
+Subject: update spinner code (copied from Adwaita) to have working spinner for
+ gtk+-3.14 BUG: 340901
+
+---
+ rc/gtk-spinner.css | 128 +++++++++--------------------------------------------
+ 1 file changed, 20 insertions(+), 108 deletions(-)
+
+diff --git a/rc/gtk-spinner.css b/rc/gtk-spinner.css
+index f90a8d4..d20264f 100644
+--- a/rc/gtk-spinner.css
++++ b/rc/gtk-spinner.css
+@@ -1,114 +1,26 @@
+-/* spinners */
+-/*
+-this is copied from Adwaita.
+-cannot be implemented in the code because of the 'new' way gtk3 renders spinners
+-*/
+-@keyframes spinner {
+- 0.00% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.875)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.750)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.625)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.500)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.375)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.250)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.125)), to(transparent)); }
+-
+- 12.5% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.875)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.750)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.625)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.500)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.375)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.250)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.125)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)); }
+-
+- 25.0% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.750)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.625)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.500)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.375)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.250)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.125)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.875)), to(transparent)); }
+-
+- 37.5% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.625)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.500)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.375)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.250)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.125)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.875)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.750)), to(transparent)); }
+-
+- 50.0% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.500)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.375)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.250)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.125)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.875)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.750)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.625)), to(transparent)); }
+-
+- 62.5% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.375)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.250)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.125)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.875)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.750)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.625)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.500)), to(transparent)); }
+-
+- 75.0% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.250)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.125)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.875)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.750)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.625)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.500)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.375)), to(transparent)); }
+-
+- 87.5% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.125)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.875)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.750)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.625)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.500)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.375)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.250)), to(transparent)); }
++/*********************
++ * Spinner Animation *
++ *********************/
++@keyframes spin
++{
++ to { -gtk-icon-transform: rotate(1turn); }
++}
+
+- 100% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.875)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.750)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.625)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.500)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.375)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.250)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.125)), to(transparent)); }
++.spinner
++{
++ background-image: none;
++ background-color: blue;
++ opacity: 0;
++ -gtk-icon-source: -gtk-icontheme("process-working-symbolic");
+ }
+
+-.spinner {
+- background-color: transparent;
+- background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent));
+- background-position: 14% 14%, 0% 50%, 14% 86%, 50% 100%, 86% 86%, 100% 50%, 86% 14%, 50% 0%;
+- background-size: 20% 20%;
+- background-repeat: no-repeat;
++.spinner:active
++{
++ opacity: 1;
++ animation: spin 1s linear infinite;
+ }
+
+-.spinner:active {
+- background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.875)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.750)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.625)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.500)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.375)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.250)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.125)), to(transparent)),
+- -gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent));
+- animation: spinner 1s infinite linear;
++.spinner:active:insensitive
++{
++ opacity: 0.5;
+ }
+--
+cgit v0.11.2
diff --git a/x11-themes/oxygen-gtk/files/oxygen-gtk-1.4.6-demo-optional.patch b/x11-themes/oxygen-gtk/files/oxygen-gtk-1.4.6-demo-optional.patch
new file mode 100644
index 000000000000..b49620b2e22f
--- /dev/null
+++ b/x11-themes/oxygen-gtk/files/oxygen-gtk-1.4.6-demo-optional.patch
@@ -0,0 +1,35 @@
+From d5e9122133ad01da8cdbb27fe8e9f83e9a5097d4 Mon Sep 17 00:00:00 2001
+From: Pino Toscano <pino@kde.org>
+Date: Sat, 25 Oct 2014 16:27:10 +0200
+Subject: cmake: add an option to disable the build of the demo
+
+Useful when building only the style; the default behaviour is unchanged
+(i.e. the demo is built).
+---
+ CMakeLists.txt | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 1f576d2..5ab1ee1 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -36,6 +36,8 @@ include( CPack )
+ # Package specific flags
+ ########################
+
++option(ENABLE_DEMO "Build the demo." ON)
++
+ # Set to 1 to enable debugging information
+ if( NOT DEFINED OXYGEN_DEBUG )
+ set( OXYGEN_DEBUG 0 )
+@@ -200,5 +202,7 @@ configure_file( config.h.cmake ${CMAKE_BINARY_DIR}/config.h )
+ add_subdirectory( src )
+ add_subdirectory( rc )
+ add_subdirectory( special-icons )
+-add_subdirectory( demo )
++if( ENABLE_DEMO )
++ add_subdirectory( demo )
++endif( ENABLE_DEMO )
+
+--
+cgit v0.11.2
diff --git a/x11-themes/oxygen-gtk/files/oxygen-gtk-1.4.6-eclipse.patch b/x11-themes/oxygen-gtk/files/oxygen-gtk-1.4.6-eclipse.patch
new file mode 100644
index 000000000000..54fa572bc6b3
--- /dev/null
+++ b/x11-themes/oxygen-gtk/files/oxygen-gtk-1.4.6-eclipse.patch
@@ -0,0 +1,228 @@
+From ef3c0cdfa18a6f612e5ba84e42bcd288374669fb Mon Sep 17 00:00:00 2001
+From: Hugo Pereira Da Costa <hugo.pereira.da.costa@gmail.com>
+Date: Thu, 6 Apr 2017 17:32:51 +0200
+Subject: Patch from Matt Whitlock to fix crash in ecclipse about invalid
+ columns. BUG: 338012
+
+---
+ src/oxygengtkcellinfo.cpp | 78 +++++++++++++++++++----------------------------
+ src/oxygengtkcellinfo.h | 22 ++++++++-----
+ 2 files changed, 46 insertions(+), 54 deletions(-)
+
+diff --git a/src/oxygengtkcellinfo.cpp b/src/oxygengtkcellinfo.cpp
+index 52e0d34..8118143 100644
+--- a/src/oxygengtkcellinfo.cpp
++++ b/src/oxygengtkcellinfo.cpp
+@@ -31,38 +31,41 @@ namespace Oxygen
+ //____________________________________________________________________________
+ Gtk::CellInfo::CellInfo( GtkTreeView* treeView, int x, int y, int w, int h ):
+ _path(0L),
+- _column(0L)
++ _column(-1)
+ {
++ GtkTreeViewColumn *column( 0L );
+
+ /*
+ four attempts are made to get the path from any corner of the rectangle passed in arguments.
+ This is necessary to handle half-hidden cells
+ */
+- gtk_tree_view_get_path_at_pos( treeView, (gint)x+1, (gint)y+1, &_path, &_column, 0L, 0L );
+-
+- if( !_path ) gtk_tree_view_get_path_at_pos( treeView, (gint)x+1, (gint)y+h-1, &_path, &_column, 0L, 0L );
+- else return;
+-
+- if( !_path ) gtk_tree_view_get_path_at_pos( treeView, (gint)x+w-1, (gint)y+1, &_path, &_column, 0L, 0L );
+- else return;
+-
+- if( !_path ) gtk_tree_view_get_path_at_pos( treeView, (gint)x+w-1, (gint)y+h-1, &_path, &_column, 0L, 0L );
+- else return;
++ gtk_tree_view_get_path_at_pos( treeView, (gint)x+1, (gint)y+1, &_path, &column, 0L, 0L );
++ if( !_path ) {
++ gtk_tree_view_get_path_at_pos( treeView, (gint)x+1, (gint)y+h-1, &_path, &column, 0L, 0L );
++ if( !_path ) {
++ gtk_tree_view_get_path_at_pos( treeView, (gint)x+w-1, (gint)y+1, &_path, &column, 0L, 0L );
++ if( !_path ) {
++ gtk_tree_view_get_path_at_pos( treeView, (gint)x+w-1, (gint)y+h-1, &_path, &column, 0L, 0L );
++ if( !_path ) return;
++ }
++ }
++ }
+
++ _column = indexOfColumn( treeView, column );
+ }
+
+ //____________________________________________________________________________
+ bool Gtk::CellInfo::isLastVisibleColumn( GtkTreeView* treeView ) const
+ {
+- bool isLast( false );
++ bool isLast( true );
+ GList* columns( gtk_tree_view_get_columns( treeView ) );
+- for( GList *child = g_list_last( columns ); child; child = g_list_previous( child ) )
++ for( GList *child = g_list_nth( columns, _column ); ( child = g_list_next( child ) ); )
+ {
+ if( !GTK_IS_TREE_VIEW_COLUMN( child->data ) ) continue;
+ GtkTreeViewColumn* column( GTK_TREE_VIEW_COLUMN( child->data ) );
+ if( gtk_tree_view_column_get_visible( column ) )
+ {
+- isLast = (_column == column );
++ isLast = false;
+ break;
+ }
+
+@@ -75,15 +78,15 @@ namespace Oxygen
+ //____________________________________________________________________________
+ bool Gtk::CellInfo::isFirstVisibleColumn( GtkTreeView* treeView ) const
+ {
+- bool isFirst( false );
++ bool isFirst( true );
+ GList* columns( gtk_tree_view_get_columns( treeView ) );
+- for( GList *child = g_list_first( columns ); child; child = g_list_next( child ) )
++ for( GList *child = g_list_nth( columns, _column ); ( child = g_list_previous( child ) ); )
+ {
+ if( !GTK_IS_TREE_VIEW_COLUMN( child->data ) ) continue;
+ GtkTreeViewColumn* column( GTK_TREE_VIEW_COLUMN( child->data ) );
+ if( gtk_tree_view_column_get_visible( column ) )
+ {
+- isFirst= (_column == column );
++ isFirst = false;
+ break;
+ }
+
+@@ -98,34 +101,7 @@ namespace Oxygen
+ {
+ // check expander column
+ GtkTreeViewColumn* expanderColumn( gtk_tree_view_get_expander_column( treeView ) );
+- if( !expanderColumn || _column == expanderColumn ) return false;
+-
+- bool found( false );
+- bool isLeft( false );
+-
+- // get all columns
+- GList* columns( gtk_tree_view_get_columns( treeView ) );
+- for( GList *child = g_list_first( columns ); child; child = g_list_next( child ) )
+- {
+- if( !GTK_IS_TREE_VIEW_COLUMN( child->data ) ) continue;
+- GtkTreeViewColumn* column( GTK_TREE_VIEW_COLUMN( child->data ) );
+- if( column == expanderColumn )
+- {
+- if( found )
+- {
+-
+- isLeft = true;
+- break;
+-
+- } else break;
+-
+- } else if( found ) break;
+- else if( column == _column ) found = true;
+-
+- }
+-
+- if( columns ) g_list_free( columns );
+- return isLeft;
++ return expanderColumn && _column < indexOfColumn( treeView, expanderColumn );
+
+ }
+
+@@ -203,13 +179,23 @@ namespace Oxygen
+ {
+ GdkRectangle out( Gtk::gdk_rectangle() );
+ if( treeView && isValid() )
+- { gtk_tree_view_get_background_area( treeView, _path, _column, &out ); }
++ { gtk_tree_view_get_background_area( treeView, _path, gtk_tree_view_get_column( treeView, _column ), &out ); }
+
+ return out;
+
+ }
+
+ //____________________________________________________________________________
++ gint Gtk::CellInfo::indexOfColumn( GtkTreeView* treeView, GtkTreeViewColumn* column )
++ {
++ GList* columns( gtk_tree_view_get_columns( treeView ) );
++ if( !columns ) return -1;
++ gint index( g_list_index( columns, column ) );
++ g_list_free( columns );
++ return index;
++ }
++
++ //____________________________________________________________________________
+ Gtk::CellInfoFlags::CellInfoFlags( GtkTreeView* treeView, const CellInfo& cellInfo ):
+ _depth( cellInfo.depth() ),
+ _expanderSize(0),
+diff --git a/src/oxygengtkcellinfo.h b/src/oxygengtkcellinfo.h
+index 919d020..58dd441 100644
+--- a/src/oxygengtkcellinfo.h
++++ b/src/oxygengtkcellinfo.h
+@@ -47,7 +47,7 @@ namespace Oxygen
+ //! empty constructor
+ explicit CellInfo( void ):
+ _path( 0L ),
+- _column( 0L )
++ _column( -1 )
+ {}
+
+ //! copy constructor
+@@ -60,8 +60,12 @@ namespace Oxygen
+ /*! unfortunately the path retrieval does not always work because x and y must be positive */
+ explicit CellInfo( GtkTreeView* treeView, int x, int y ):
+ _path(0L),
+- _column(0L)
+- { gtk_tree_view_get_path_at_pos( treeView, x, y, &_path, &_column, 0L, 0L ); }
++ _column(-1)
++ {
++ GtkTreeViewColumn *column( 0L );
++ gtk_tree_view_get_path_at_pos( treeView, x, y, &_path, &column, 0L, 0L );
++ _column = indexOfColumn( treeView, column );
++ }
+
+ //! construct from tree view and rectangle
+ explicit CellInfo( GtkTreeView* treeView, int x, int y, int w, int h );
+@@ -92,7 +96,7 @@ namespace Oxygen
+ {
+ if( _path ) gtk_tree_path_free( _path );
+ _path = 0L;
+- _column = 0L;
++ _column = -1;
+ }
+
+ //!@name accessors
+@@ -100,7 +104,7 @@ namespace Oxygen
+
+ //! true if valid
+ bool isValid( void ) const
+- { return _path && _column; }
++ { return _path && _column >= 0; }
+
+ //! returns true if column is the last one
+ bool isLastVisibleColumn( GtkTreeView* ) const;
+@@ -110,7 +114,7 @@ namespace Oxygen
+
+ //! returns true if column is the one that contains expander
+ bool isExpanderColumn( GtkTreeView* treeView ) const
+- { return _column == gtk_tree_view_get_expander_column( treeView ); }
++ { return _column >= 0 && _column == indexOfColumn( treeView, gtk_tree_view_get_expander_column( treeView ) ); }
+
+ //! returs true if column is let of expander column
+ bool isLeftOfExpanderColumn( GtkTreeView* ) const;
+@@ -152,8 +156,8 @@ namespace Oxygen
+ //! path
+ GtkTreePath* _path;
+
+- //! column
+- GtkTreeViewColumn* _column;
++ //! column index
++ gint _column;
+
+ //! streamer
+ friend std::ostream& operator << (std::ostream& out, const CellInfo& info )
+@@ -168,6 +172,8 @@ namespace Oxygen
+ return out;
+ }
+
++ static gint indexOfColumn( GtkTreeView*, GtkTreeViewColumn* );
++
+ };
+
+ //! cell info flags
+--
+cgit v0.11.2
diff --git a/x11-themes/oxygen-gtk/files/oxygen-gtk-1.4.6-qtpaths.patch b/x11-themes/oxygen-gtk/files/oxygen-gtk-1.4.6-qtpaths.patch
new file mode 100644
index 000000000000..87e5197e90d5
--- /dev/null
+++ b/x11-themes/oxygen-gtk/files/oxygen-gtk-1.4.6-qtpaths.patch
@@ -0,0 +1,19 @@
+Patch kindly borrowed from openSUSE
+
+Gentoo-bug: 563802
+
+--- a/src/oxygenqtsettings.cpp
++++ b/src/oxygenqtsettings.cpp
+@@ -277,7 +277,11 @@
+
+ // load icon install prefix
+ gchar* path = 0L;
+- if( runCommand( "kde4-config --path config", path ) && path )
++ if( runCommand( "qtpaths --paths ConfigLocation", path ) && path )
++ {
++ out.split( path );
++ g_free( path );
++ } else if( runCommand( "kde4-config --path config", path ) && path )
+ {
+
+ out.split( path );
diff --git a/x11-themes/oxygen-gtk/files/oxygen-gtk-1.4.6-tabstyle.patch b/x11-themes/oxygen-gtk/files/oxygen-gtk-1.4.6-tabstyle.patch
new file mode 100644
index 000000000000..7f19434bef8b
--- /dev/null
+++ b/x11-themes/oxygen-gtk/files/oxygen-gtk-1.4.6-tabstyle.patch
@@ -0,0 +1,16 @@
+TS_SINGLE tab style has been deprecated in oxygen qt style,
+which should be replaced by TS_PLAIN.
+
+Gentoo-bug: 563802
+
+--- a/rc/oxygenrc 2014-01-17 14:47:36.000000000 +0100
++++ b/rc/oxygenrc 2017-06-24 15:49:36.607616582 +0200
+@@ -31,7 +31,7 @@
+ ScrollBarBevel=true
+ ProgressBarAnimated=true
+ MenuHighlightMode=MM_DARK
+-TabStyle=TS_SINGLE
++TabStyle=TS_PLAIN
+
+ WindowDragEnabled=true
+ WindowDragMode=WD_FULL
diff --git a/x11-themes/oxygen-gtk/files/oxygen-gtk-1.4.6-warning.patch b/x11-themes/oxygen-gtk/files/oxygen-gtk-1.4.6-warning.patch
new file mode 100644
index 000000000000..0f0b92aaaaef
--- /dev/null
+++ b/x11-themes/oxygen-gtk/files/oxygen-gtk-1.4.6-warning.patch
@@ -0,0 +1,24 @@
+From 7a5425d86e8fd5327091ce736a9680317a0c3747 Mon Sep 17 00:00:00 2001
+From: Hugo Pereira Da Costa <hugo.pereira.da.costa@gmail.com>
+Date: Thu, 6 Apr 2017 19:18:13 +0200
+Subject: fixed compiler warning
+
+---
+ src/oxygenstyle.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/oxygenstyle.cpp b/src/oxygenstyle.cpp
+index 75e0fcc..374810f 100644
+--- a/src/oxygenstyle.cpp
++++ b/src/oxygenstyle.cpp
+@@ -2171,7 +2171,7 @@ namespace Oxygen
+ {
+
+ // do nothing if not selected nor hovered
+- if( !options & (Hover|Selected ) ) return;
++ if( !(options & (Hover|Selected )) ) return;
+
+ Palette::Group group( (options & Focus) ? Palette::Active : Palette::Inactive );
+ ColorUtils::Rgba base( _settings.palette().color( group, Palette::Selected ) );
+--
+cgit v0.11.2
diff --git a/x11-themes/oxygen-gtk/files/oxygen-gtk-1.4.6-xul.patch b/x11-themes/oxygen-gtk/files/oxygen-gtk-1.4.6-xul.patch
new file mode 100644
index 000000000000..b2308bdd4d22
--- /dev/null
+++ b/x11-themes/oxygen-gtk/files/oxygen-gtk-1.4.6-xul.patch
@@ -0,0 +1,113 @@
+From b1ee5fb80c44c6c8a625333af1cfdc997d408805 Mon Sep 17 00:00:00 2001
+From: Hugo Pereira Da Costa <hugo.pereira@free.fr>
+Date: Sat, 18 Jul 2015 20:09:28 +0200
+Subject: moved xul application names to dedicated header file, added a number
+ of xul applications to prevent crash for these CCBUG: 341181
+
+---
+ src/oxygenapplicationname.cpp | 18 ++-----------
+ src/oxygenxulapplicationnames.h | 56 +++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 58 insertions(+), 16 deletions(-)
+ create mode 100644 src/oxygenxulapplicationnames.h
+
+diff --git a/src/oxygenapplicationname.cpp b/src/oxygenapplicationname.cpp
+index feb5a23..17c8a1a 100644
+--- a/src/oxygenapplicationname.cpp
++++ b/src/oxygenapplicationname.cpp
+@@ -25,6 +25,7 @@
+
+ #include "oxygenapplicationname.h"
+ #include "oxygengtkutils.h"
++#include "oxygenxulapplicationnames.h"
+ #include "config.h"
+
+ #include <cstdlib>
+@@ -79,23 +80,8 @@ namespace Oxygen
+ gtkAppName == "chromium" ||
+ gtkAppName == "chromium-browser" ||
+ gtkAppName == "google-chrome" ) _name = GoogleChrome;
+- else {
+
+- // tag all mozilla-like applications (XUL)
+- static const std::string XulAppNames[] =
+- {
+- "firefox",
+- "thunderbird",
+- "seamonkey",
+- "iceweasel",
+- "icecat",
+- "icedove",
+- "xulrunner",
+- "komodo",
+- "aurora",
+- "zotero",
+- ""
+- };
++ else {
+
+ for( unsigned int index = 0; !XulAppNames[index].empty(); ++index )
+ {
+diff --git a/src/oxygenxulapplicationnames.h b/src/oxygenxulapplicationnames.h
+new file mode 100644
+index 0000000..252a1fc
+--- /dev/null
++++ b/src/oxygenxulapplicationnames.h
+@@ -0,0 +1,56 @@
++#ifndef oxygenxulapplicationname_h
++#define oxygenxulapplicationname_h
++/*
++* this file is part of the oxygen gtk engine
++* Copyright (c) 2010 Hugo Pereira Da Costa <hugo.pereira@free.fr>
++*
++* inspired notably from kdelibs/kdeui/color/kcolorutils.h
++* Copyright (C) 2007 Matthew Woehlke <mw_triad@users.sourceforge.net>
++* Copyright (C) 2007 Thomas Zander <zander@kde.org>
++* Copyright (C) 2007 Zack Rusin <zack@kde.org>
++*
++* This library 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 2 of the License, or( at your option ) any later version.
++*
++* This library 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 Lesser General Public
++* License along with this library; if not, write to the Free
++* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
++* MA 02110-1301, USA.
++*/
++
++#include <string>
++
++namespace Oxygen
++{
++
++ // tag all mozilla-like applications (XUL)
++ static const std::string XulAppNames[] =
++ {
++ "aurora",
++ "earlybird",
++ "icecat",
++ "icedove",
++ "iceweasel",
++ "instantbird",
++ "firefox",
++ "fossamail",
++ "komodo",
++ "newmoon",
++ "palemoon",
++ "seamonkey",
++ "thunderbird",
++ "xulrunner",
++ "zotero",
++ ""
++ };
++
++}
++
++#endif
+--
+cgit v0.11.2
diff --git a/x11-themes/oxygen-gtk/oxygen-gtk-1.4.1-r1.ebuild b/x11-themes/oxygen-gtk/oxygen-gtk-1.4.1-r1.ebuild
new file mode 100644
index 000000000000..02320b30c319
--- /dev/null
+++ b/x11-themes/oxygen-gtk/oxygen-gtk-1.4.1-r1.ebuild
@@ -0,0 +1,66 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+MY_PN=${PN}3
+MY_P=${MY_PN}-${PV}
+
+inherit cmake-multilib
+
+DESCRIPTION="Official GTK+:3 port of KDE's Oxygen widget style"
+HOMEPAGE="https://store.kde.org/content/show.php/?content=136216"
+SRC_URI="mirror://kde/stable/${MY_PN}/${PV}/src/${MY_P}.tar.bz2"
+
+LICENSE="LGPL-2.1"
+KEYWORDS="~amd64 ~ppc ~x86"
+SLOT="3"
+IUSE="debug doc"
+
+COMMON_DEPEND="
+ dev-libs/dbus-glib[${MULTILIB_USEDEP}]
+ dev-libs/glib:2[${MULTILIB_USEDEP}]
+ x11-libs/cairo[${MULTILIB_USEDEP}]
+ x11-libs/gdk-pixbuf[${MULTILIB_USEDEP}]
+ x11-libs/gtk+:3[${MULTILIB_USEDEP}]
+ x11-libs/libX11[${MULTILIB_USEDEP}]
+ x11-libs/pango[${MULTILIB_USEDEP}]
+"
+DEPEND="${COMMON_DEPEND}
+ virtual/pkgconfig
+ doc? ( app-doc/doxygen )
+"
+RDEPEND="${COMMON_DEPEND}
+ !x11-themes/oxygen-gtk:0
+"
+
+PATCHES=(
+ "${FILESDIR}/${P}-gtk-3.14.patch"
+ "${FILESDIR}/${PN}-1.4.6-demo-optional.patch"
+ "${FILESDIR}/${PN}-1.4.6-tabstyle.patch"
+)
+
+S=${WORKDIR}/${MY_P}
+
+multilib_src_configure() {
+ if ! multilib_is_native_abi; then
+ local mycmakeargs=(
+ -DENABLE_DEMO=OFF
+ )
+ fi
+ cmake-utils_src_configure
+}
+
+src_install() {
+ if use doc; then
+ doxygen Doxyfile || die "Generating documentation failed"
+ HTML_DOCS=( doc/html/. )
+ fi
+
+ cmake-multilib_src_install
+
+ cat <<-EOF > 99oxygen-gtk3
+CONFIG_PROTECT="${EPREFIX}/usr/share/themes/oxygen-gtk/gtk-3.0"
+EOF
+ doenvd 99oxygen-gtk3
+}
diff --git a/x11-themes/oxygen-gtk/oxygen-gtk-1.4.6-r1.ebuild b/x11-themes/oxygen-gtk/oxygen-gtk-1.4.6-r1.ebuild
new file mode 100644
index 000000000000..f85a3ad96185
--- /dev/null
+++ b/x11-themes/oxygen-gtk/oxygen-gtk-1.4.6-r1.ebuild
@@ -0,0 +1,69 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+MY_PN=${PN}2
+MY_P=${MY_PN}-${PV}
+
+inherit cmake-multilib
+
+DESCRIPTION="Official GTK+:2 port of KDE's Oxygen widget style"
+HOMEPAGE="https://store.kde.org/content/show.php/?content=136216"
+SRC_URI="mirror://kde/stable/${MY_PN}/${PV}/src/${MY_P}.tar.bz2"
+
+LICENSE="LGPL-2.1"
+KEYWORDS="~amd64 ~ppc ~x86"
+SLOT="2"
+IUSE="debug doc"
+
+COMMON_DEPEND="
+ dev-libs/dbus-glib[${MULTILIB_USEDEP}]
+ dev-libs/glib:2[${MULTILIB_USEDEP}]
+ x11-libs/cairo[${MULTILIB_USEDEP}]
+ x11-libs/gdk-pixbuf[${MULTILIB_USEDEP}]
+ x11-libs/gtk+:2[${MULTILIB_USEDEP}]
+ x11-libs/libX11[${MULTILIB_USEDEP}]
+ x11-libs/pango[${MULTILIB_USEDEP}]
+"
+DEPEND="${COMMON_DEPEND}
+ virtual/pkgconfig
+ doc? ( app-doc/doxygen )
+"
+RDEPEND="${COMMON_DEPEND}
+ !x11-themes/oxygen-gtk:0
+"
+
+PATCHES=(
+ "${FILESDIR}/${P}-xul.patch"
+ "${FILESDIR}/${P}-eclipse.patch"
+ "${FILESDIR}/${P}-qtpaths.patch"
+ "${FILESDIR}/${P}-warning.patch"
+ "${FILESDIR}/${P}-demo-optional.patch"
+ "${FILESDIR}/${P}-tabstyle.patch"
+)
+
+S=${WORKDIR}/${MY_P}
+
+multilib_src_configure() {
+ if ! multilib_is_native_abi; then
+ local mycmakeargs=(
+ -DENABLE_DEMO=OFF
+ )
+ fi
+ cmake-utils_src_configure
+}
+
+src_install() {
+ if use doc; then
+ doxygen Doxyfile || die "Generating documentation failed"
+ HTML_DOCS=( doc/html/. )
+ fi
+
+ cmake-multilib_src_install
+
+ cat <<-EOF > 99oxygen-gtk2
+CONFIG_PROTECT="${EPREFIX}/usr/share/themes/oxygen-gtk/gtk-2.0"
+EOF
+ doenvd 99oxygen-gtk2
+}