FLTK logo

[master] e4b0668 - X11: simpler code to capture window decoration under xfce

FLTK matrix user chat room
(using Element browser app)   FLTK gitter user chat room   GitHub FLTK Project   FLTK News RSS Feed  
  FLTK Apps      FLTK Library      Forums      Links     Login 
 All Forums  |  Back to fltk.commit  ]
 
Previous Message ]Next Message ]

[master] e4b0668 - X11: simpler code to capture window decoration under xfce "ManoloFLTK" 23:17 Apr 26  
 
commit e4b0668fad36fe28497cf5fa9242e92b0865c90f
Author:     ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>
AuthorDate: Sat Apr 27 08:13:17 2024 +0200
Commit:     ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>
CommitDate: Sat Apr 27 08:13:17 2024 +0200

    X11: simpler code to capture window decoration under xfce

 src/drivers/X11/Fl_X11_Screen_Driver.cxx |  5 ++++-
 src/drivers/X11/Fl_X11_Window_Driver.cxx | 19 ++-----------------
 2 files changed, 6 insertions(+), 18 deletions(-)

diff --git src/drivers/X11/Fl_X11_Screen_Driver.cxx src/drivers/X11/Fl_X11_Screen_Driver.cxx
index 02ab347..fffce8d 100644
--- src/drivers/X11/Fl_X11_Screen_Driver.cxx
+++ src/drivers/X11/Fl_X11_Screen_Driver.cxx
@@ -640,6 +640,10 @@ extern "C" {
   }
 }
 
+
+// When capturing window decoration, w is negative and X,Y,w and h are in pixels;
+// otherwise X,Y,w and h are in FLTK units.
+//
 Fl_RGB_Image *Fl_X11_Screen_Driver::read_win_rectangle(int X, int Y, int w, int h, Fl_Window *win, bool may_capture_subwins, bool *did_capture_subwins)
 {
   XImage        *image;         // Captured image
@@ -665,7 +669,6 @@ Fl_RGB_Image *Fl_X11_Screen_Driver::read_win_rectangle(int X, int Y, int w, int
   //
   int allow_outside = w < 0;    // negative w allows negative X or Y, that is, window frame
   if (w < 0) w = - w;
-// when capturing window decoration, X,Y,w and h are in pixels (not in FLTK units).
   Window xid = (win && !allow_outside ? fl_xid(win) : fl_window);
 
   float s = allow_outside ? 1 : Fl_Surface_Device::surface()->driver()->scale();
diff --git src/drivers/X11/Fl_X11_Window_Driver.cxx src/drivers/X11/Fl_X11_Window_Driver.cxx
index aed4b14..39d01a7 100644
--- src/drivers/X11/Fl_X11_Window_Driver.cxx
+++ src/drivers/X11/Fl_X11_Window_Driver.cxx
@@ -382,28 +382,13 @@ void Fl_X11_Window_Driver::capture_titlebar_and_borders(Fl_RGB_Image*& top, Fl_R
   fl_window = parent;
   if (htop) {
     if (true_sides) {
-      top = Fl::screen_driver()->read_win_rectangle(1, 1, -(ww-1), htop, pWindow);
-      if (top) top->scale(decorated_w()+1, (htop / s)+1, 0, 1);
+      top = Fl::screen_driver()->read_win_rectangle(1, 1, -(ww-2), hh-2, pWindow);
+      if (top) top->scale(decorated_w(), decorated_h(), 0, 1);
     } else {
       top = Fl::screen_driver()->read_win_rectangle(wsides, wsides, -(ww-1), htop, pWindow);
       if (top) top->scale(w(), htop / s, 0, 1);
     }
   }
-  if (true_sides && wsides) {
-    left = Fl::screen_driver()->read_win_rectangle(1, htop, -wsides, hh - htop - wsides, pWindow);
-    if (left) {
-      left->scale(wsides/s, h(), 0, 1);
-    }
-    if (left) {
-      right = (Fl_RGB_Image*)left->copy(left->data_w(), left->data_h());
-      right->scale(left->w(), left->h(), 0, 1);
-    } else right = NULL;
-    
-    bottom = Fl::screen_driver()->read_win_rectangle(1, hh-wsides, -(ww-1), wsides, pWindow);
-    if (bottom) {
-      bottom->scale(decorated_w(), wsides / s, 0, 1);
-    }
-  }
   fl_window = from;
 }
 
Direct Link to Message ]
 
     
Previous Message ]Next Message ]
 
 

Comments are owned by the poster. All other content is copyright 1998-2024 by Bill Spitzak and others. This project is hosted by The FLTK Team. Please report site problems to 'erco@seriss.com'.