summaryrefslogtreecommitdiff
path: root/x11-themes/oxygen-gtk/files
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
committerV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
commit4f2d7949f03e1c198bc888f2d05f421d35c57e21 (patch)
treeba5f07bf3f9d22d82e54a462313f5d244036c768 /x11-themes/oxygen-gtk/files
reinit the tree, so we can have metadata
Diffstat (limited to 'x11-themes/oxygen-gtk/files')
-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
7 files changed, 586 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