commit:     cb8343823acdb727ff27c341d39d4ca5c369f736
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sat Jun 24 13:58:44 2017 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Sat Jun 24 14:15:29 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=cb834382

x11-themes/oxygen-gtk: EAPI 6, multilib, fix tabstyle, gtk-3.14 spinner

Fix HOMEPAGE.

Reported-by: Yichao Zhou <broken.zhou <AT> gmail.com>
Thanks-to: Alexey Kharlamov <derlafff <AT> ya.ru>
Gentoo-bug: 562274, 563802

Package-Manager: Portage-2.3.6, Repoman-2.3.1

 .../files/oxygen-gtk-1.4.1-gtk-3.14.patch          | 151 ++++++++++++++
 .../files/oxygen-gtk-1.4.6-demo-optional.patch     |  35 ++++
 .../files/oxygen-gtk-1.4.6-eclipse.patch           | 228 +++++++++++++++++++++
 .../files/oxygen-gtk-1.4.6-qtpaths.patch           |  19 ++
 .../files/oxygen-gtk-1.4.6-tabstyle.patch          |  16 ++
 .../files/oxygen-gtk-1.4.6-warning.patch           |  24 +++
 .../oxygen-gtk/files/oxygen-gtk-1.4.6-xul.patch    | 113 ++++++++++
 x11-themes/oxygen-gtk/oxygen-gtk-1.4.1-r1.ebuild   |  66 ++++++
 x11-themes/oxygen-gtk/oxygen-gtk-1.4.6-r1.ebuild   |  69 +++++++
 9 files changed, 721 insertions(+)

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 00000000000..3f6d323a94c
--- /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 <[email protected]>
+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 00000000000..b49620b2e22
--- /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 <[email protected]>
+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 00000000000..54fa572bc6b
--- /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 <[email protected]>
+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 00000000000..87e5197e90d
--- /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 00000000000..7f19434bef8
--- /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 00000000000..0f0b92aaaae
--- /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 <[email protected]>
+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 00000000000..b2308bdd4d2
--- /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 <[email protected]>
+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 <[email protected]>
++*
++* inspired notably from kdelibs/kdeui/color/kcolorutils.h
++* Copyright (C) 2007 Matthew Woehlke <[email protected]>
++* Copyright (C) 2007 Thomas Zander <[email protected]>
++* Copyright (C) 2007 Zack Rusin <[email protected]>
++*
++* 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 00000000000..02320b30c31
--- /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 00000000000..f85a3ad9618
--- /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
+}

Reply via email to