void HorizontalListBox::updateScrollWidth()
{
  int realw = 0;
  if (screen_area)
    realw = screen_area->getmaxx();

  setScrollWidth(MAX(realw, children_width));
}
void Buffer::loadConfiguration() {
    Configuration *config = Configuration::instance();

    m_trackLineWidth = config->trackLineMarginWidth();
    m_braceHighlight = config->braceHighlight();

    setStyleQFont(STYLE_DEFAULT, config->font());
    setViewWhitespace(config->viewWhitespace());
    setViewIndentationGuides(config->viewIndentationGuides());
    setCaretLineVisible(config->caretLineVisible());
    setLongLineIndicator(config->longLineIndicator());
    setViewEOL(config->viewEndOfLine());
    setShowLineNumbers(config->showLineMargin());
    setShowIconMargin(config->showIconMargin());
    setShowFoldMargin(config->showFoldMargin());
    setTabWidth(config->tabWidth());
    setIndent(config->indentationWidth());
    setUseTabs(config->useTabs());
    setScrollWidth(config->scrollWidth());
    setScrollWidthTracking(config->scrollWidthTracking());
    setFoldSymbols(config->foldSymbols());
    setFoldLines(config->foldLines());
    setColorScheme(ColorScheme::getColorScheme(config->colorScheme()));
}
Exemple #3
0
void ListBox::draw()
{
  proceedUpdateArea();
  // set virtual scroll area width
  if (screen_area)
    setScrollWidth(screen_area->getmaxx());
  updateScrollHeight();
  if (update_area)
    reposition_widgets = true;
  proceedUpdateVirtualArea();

  if (!area) {
    // scrollpane will clear the screen (real) area
    AbstractListBox::draw();
    return;
  }

  if (reposition_widgets) {
    autosize_height = 1;
    int autosize_height_extra = 0;
    int realh = area->getmaxy();
    if (autosize_children && children_height < realh) {
      int space = realh - (children_height - autosize_children);
      autosize_height = space / autosize_children;
      autosize_height_extra = space % autosize_children;
    }
    autosize_extra.clear();

    int y = 0;
    for (Children::iterator i = children.begin(); i != children.end(); i++) {
      Widget *widget = i->widget;
      if (!widget->isVisible())
        continue;

      int h = widget->getHeight();
      if (h == AUTOSIZE) {
        h = autosize_height;
        if (autosize_height_extra) {
          autosize_extra.insert(widget);
          autosize_height_extra--;
          h++;
        }

        // make sure the area is updated
        widget->updateArea();
      }

      widget->move(0, y);
      y += h;
    }
    reposition_widgets = false;
  }

  // make sure that currently focused widget is visible
  if (focus_child) {
    int h = focus_child->getHeight();
    if (h == AUTOSIZE) {
      h = autosize_height;
      if (autosize_extra.find(focus_child) != autosize_extra.end())
        h++;
    }

    makeVisible(focus_child->getLeft(), focus_child->getTop(), 1, h);
  }

  AbstractListBox::draw();
}