From 24f79525e9073fcd3148e73f689ba8462c7ec83b Mon Sep 17 00:00:00 2001
From: Jonathan Lambrechts <jonathan.lambrechts@uclouvain.be>
Date: Wed, 29 May 2013 18:52:59 +0000
Subject: [PATCH] fix fullscreen on my laptop (linux, window manager gnome
 shell)

---
 Fltk/FlGui.cpp | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/Fltk/FlGui.cpp b/Fltk/FlGui.cpp
index aa3d391812..10c4850dd9 100644
--- a/Fltk/FlGui.cpp
+++ b/Fltk/FlGui.cpp
@@ -338,6 +338,9 @@ FlGui::FlGui(int argc, char **argv)
   fullscreen->mode(mode);
   fullscreen->end();
   fullscreen->fullscreen();
+  #if not defined (__APPLE__)
+  fullscreen->icon(graph[0]->getWindow()->icon());
+  #endif
 
   // create all other windows
   options = new optionWindow(CTX::instance()->deltaFontSize);
@@ -1053,7 +1056,12 @@ void window_cb(Fl_Widget *w, void *data)
   }
   else if(str == "fullscreen"){
     if(!fullscreen){
+      int x,y,w,h;
+      Fl::screen_xywh(x, y, w, h);
+      FlGui::instance()->fullscreen->resize(x, y, w, h);
+      FlGui::instance()->fullscreen->valid(0);
       FlGui::instance()->fullscreen->show();
+      while (!FlGui::instance()->fullscreen->valid()) FlGui::wait();
       FlGui::instance()->fullscreen->getDrawContext()->copyViewAttributes
         (FlGui::instance()->getCurrentOpenglWindow()->getDrawContext());
       openglWindow::setLastHandled(FlGui::instance()->fullscreen);
@@ -1063,8 +1071,12 @@ void window_cb(Fl_Widget *w, void *data)
       fullscreen = 1;
     }
     else{
+      for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++)
+        FlGui::instance()->graph[i]->gl[0]->valid(0);
       for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++)
         FlGui::instance()->graph[i]->getWindow()->show();
+      for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++)
+        while(!FlGui::instance()->graph[i]->gl[0]->valid()) FlGui::wait();
       FlGui::instance()->graph[0]->gl[0]->getDrawContext()->copyViewAttributes
         (FlGui::instance()->getCurrentOpenglWindow()->getDrawContext());
       openglWindow::setLastHandled(FlGui::instance()->graph[0]->gl[0]);
-- 
GitLab