]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/widget.cpp
Fix a crash if the linear program contains an empty column
[libs/gltk.git] / source / widget.cpp
index a5a0f2d511801402c611c2a55f61218483b6d67c..643331602b16069863d03e905bb17f455a12f695 100644 (file)
@@ -1,14 +1,7 @@
-/* $Id$
-
-This file is part of libmspgltk
-Copyright © 2007-2011  Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
 #include <msp/gl/immediate.h>
 #include <msp/gl/matrix.h>
 #include <msp/gl/transform.h>
-#include <msp/strings/formatter.h>
+#include <msp/strings/format.h>
 #include "container.h"
 #include "resources.h"
 #include "root.h"
@@ -73,7 +66,7 @@ void Widget::set_geometry(const Geometry &g)
 void Widget::set_parent(Container *p)
 {
        if(parent && p)
-               throw InvalidState("Widget is already in a Container");
+               throw hierarchy_error("widget already parented");
        else if(p==parent)
                return;
        parent = p;
@@ -104,7 +97,7 @@ void Widget::update_style()
                        sname += style_name;
                }
 
-               style = root->get_resources().get<Style>(sname);
+               style = &root->get_resources().get<Style>(sname);
        }
 
        on_style_change();
@@ -134,9 +127,9 @@ void Widget::set_focusable(bool f)
 void Widget::set_focus()
 {
        if(!parent)
-               throw InvalidState("No parent");
+               throw hierarchy_error("no parent");
        if(!visible)
-               throw InvalidState("Can't set focus on invisible widget");
+               throw logic_error("!visible");
 
        signal_request_focus.emit();
 }
@@ -144,7 +137,7 @@ void Widget::set_focus()
 void Widget::render() const
 {
        if(!style)
-               throw InvalidState(format("Attempt to render a widget with null style (class=\"%s\", style_name=\"%s\")", get_class(), style_name));
+               throw logic_error(format("Attempt to render a widget with null style (class=\"%s\", style_name=\"%s\")", get_class(), style_name));
 
        GL::push_matrix();
        GL::translate(geom.x, geom.y, 0);